MediaStream のサポート終了

getUserMedia() または WebRTC を使用している場合は、コードの調整が必要になることがあります 。

MediaStream API は、 同期されたメディア ストリームです。たとえば、カメラから取得したストリームと マイク入力で動画と音声のトラックが同期されています。各トラックは で表され、 MediaStreamTrack。 (<track> 要素と混同しないでください)。

Chrome 45 では、次の 3 つの MediaStream のサポートが終了します。

  • MediaStream.ended
  • MediaStream.label
  • MediaStream.stop()

並行して、次の 2 つの機能を追加します。

  • MediaStream.active
  • MediaStreamTrack.stop()

これらには、次の変更が必要です。

  • MediaStream.active を使用して、MediaStreamMediaStream.ended ではなくストリーミングかどうかを確認します。
  • ストリーミングを停止するには、MediaStream.stop() ではなく MediaStreamTrack.stop() を使用します。
  • MediaStream の一意の識別子が必要な場合は、MediaStream.label ではなく MediaStream.id を使用します。MediaStreamTrack.label は、人が読める形式のストリームのソースデバイス名です。次に例を示します。FaceTime HD カメラ(内蔵)(05ac:8510)

これらは実際の動作で確認できます。simpl.info/gum を開きます。 Chrome(カメラを搭載したデバイス上)に移動し、Chrome DevTools コンソールを表示します。「 getUserMedia() コールバックに渡された MediaStream オブジェクト stream グローバル スコープなので、コンソールから確認できます。発信 stream.getTracks()[0]して、このストリームのMediaStreamTrackを表示します。

Chrome DevTools コンソールの MediaStream と MediaStreamTrack を示すスクリーンショット

Stop()、終了、アクティブ

Media Capture and Streams の W3C ワーキング グループが MediaStream に新しいトラックを追加したときにどうなるかという問題について検討した際、 空の MediaStream が終了したかどうかがわかります。 MediaStreamended を実装する理にかなった方法がありません(「再開されない」など)。HTML5 の他の部分では「終了」した「このトレーニングは終了し、 再開しない] を選択します。'有効'そのような意味はありません。非アクティブなストリームが 再びアクティブになります。たとえば、新しいトラックが追加された場合などです。ワーキング グループは、混乱を招く属性と機能を維持するのではなく、 削除します。

これは「MediaStream.active」の使用例です。ステータスを ストリーム:

var gumStream;

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            gumStream = stream;
        // ...
    },
    function(error) {
        console.log('getUserMedia() error', error);
    });

// …

if (gumStream.active) {
    // do something with the stream
}

MediaStream から stop() を削除しても、実際の機能は削除されませんでした。 ソースデバイスの接続解除などのプロセスは、 それでも MediaStreamTrack。代わりに MediaStreamTrackstop() を使用してください。

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            // can also use getAudioTracks() or getVideoTracks()
        var track = stream.getTracks()[0];  // if only one media track
        // ...
        track.stop();
    },
    function(error){
        console.log('getUserMedia() error', error);
    });

ラベル

この物件の用途をだれもわからなかったことがわかりました。

仕様の最初のバージョンに MediaStream.label が加わっていましたが、誰も何もわかりませんでした 何のためかlabelを確認しますまた、ライブ配信中に label がどうなったかも不明確でした。 RTCPeerConnection 経由で送信されました。

W3C ワーキング グループから問い合わせがあったが、誰も望んでいないため、削除しました。

繰り返しになりますが、MediaStream.id は各オブジェクトの一意の識別子を MediaStreamMediaStreamTrack.label はソース名です。 カメラやマイクの種類など

MediaStreamMediaStreamTrack に関する詳細が確認できます Mozilla Developer Network の HTML5 Rocks は、getUserMedia() 音声のキャプチャと動画

Chrome の変更に関するフィードバックをぜひお寄せください。非推奨のバグ(こちらこちら)を追跡し、実装の意図で詳細な議論と詳細情報を確認できます。