getUserMedia()
または WebRTC を使用している場合は、Chrome 45 以降用にコードを調整する必要があります。
MediaStream API は、同期されたメディア ストリームを表します。たとえば、カメラとマイク入力から取得されたストリームには、同期された動画トラックと音声トラックがあります。各トラックは MediaStreamTrack で表されます。(<track> 要素とは異なります)。
Chrome 45 では、MediaStream
の非推奨が 3 つあります。
MediaStream.ended
MediaStream.label
MediaStream.stop()
並行して、次の 2 つの機能が追加されます。
MediaStream.active
MediaStreamTrack.stop()
そのためには、次の変更が必要です。
MediaStream.active
を使用して、MediaStream.ended
ではなくMediaStream
がストリーミングされているかどうかを確認します。- ストリーミングを停止するには
MediaStream.stop()
ではなくMediaStreamTrack.stop()
を使用します。 MediaStream
の一意の識別子が必要であれば、MediaStream.label
ではなくMediaStream.id
を使用します。MediaStreamTrack.label
には、ストリームのソースデバイスの人間可読名が指定されます(例: FaceTime HD Camera (Built-in) (05ac:8510))。
これらの機能の動作は、Chrome で simpl.info/gum を開き(カメラ付きのデバイスで)、Chrome DevTools コンソールを表示すると確認できます。このデモの getUserMedia()
コールバックに渡される MediaStream オブジェクト stream
はグローバル スコープにあるため、コンソールから検査できます。stream.getTracks()[0]
を呼び出して、このストリームの MediaStreamTrack
を表示します。
Stop(), ended、active
メディア キャプチャとストリーム W3C ワーキング グループは、MediaStream
に新しいトラックを追加した場合に何が起きるか、空の MediaStream
が終了されるかどうかの問題を検討した結果、MediaStream
に ended
を実装する合理的な方法がないことを認識しました(「再び開始されることはない」など)。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
で行う必要があります。代わりに MediaStreamTrack
で stop()
を使用します。
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
の用途を誰も知りませんでした。また、RTCPeerConnection
経由でストリームが送信されたときに label
に何が起こるかは不明でした。
W3C ワーキング グループが周囲に尋ねたところ、誰も必要としなかったため、削除されました。
繰り返しになりますが、MediaStream.id
は MediaStream
の一意の識別子を提供し、MediaStreamTrack.label
はストリームのソースの名前(カメラやマイクなどのタイプ)を提供します。
MediaStream
と MediaStreamTrack
の詳細については、Mozilla Developer Network をご覧ください。HTML5 Rocks の 音声と動画のキャプチャでは、getUserMedia()
の概要を説明しています。
Chrome の変更について、皆様からのフィードバックをお待ちしております。これらの非推奨化に関するバグは、こちらとこちらで確認できます。詳細な議論については、実装の意向をご覧ください。