MediaStreamTrack
のstop()
はトラックを停止します。
文法
MediaStreamTrack.stop();
stop()
の呼び出しは、 user agentへ、トラックのソース(ファイル、ネットワークストリーム、ローカルカメラやマイク)がこれ以上MediaStreamTrack
で必要とされないことを伝えます。複数のトラックが同じソースを使用すること(例えば、2つのタブがデバイスのマイクを使っている場合など)もあるため、ソースが必ずしも直ぐに停止させられる必要はありません。その代わり、トラックからの関連付けが解除され、そのトラックオブジェクトが停止されます。ソースからメディアトラックが使用されなくなると、ソースは実際に完全に停止させられるでしょう。
stop()
を呼び出した直後に、track
の状態はended
になります。
例
In this example, we see a function which stops a streamed video by calling stop()
on every track on a given <video>
.
この例では、与えられた<video>
の各トラックのstop()
を呼び出すことで、ストリーミングされているビデオを停止する関数を定義しています。
function stopStreamedVideo(videoElem) {
let stream = videoElem.srcObject;
let tracks = stream.getTracks();
tracks.forEach(function(track) {
track.stop();
});
videoElem.srcObject = null;
}
srcObject
プロパティからビデオ要素のストリームを取得することで機能しています。次に、getTracks()
メソッドを呼び出すことで、ストリームのトラックリストを取得しています。ここから、forEach()
を使ってトラックリストから各トラックを繰り返し呼び出し、それぞれのトラックでstop()
メソッドを呼び出しています。
最後に、MediaStream
オブジェクトへの参照を解くためにsrcObject
にnull
を設定することで、このオブジェクトは解放できるようになります。
仕様
仕様 | 状況 | コメント |
---|---|---|
Media Capture and Streams MediaStreamTrack.stop() の定義 |
勧告候補 | 初版 |
ブラウザ互換性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (有) | (有) | 34 (34)[1] | 未サポート | (有) | ? |
Feature | Android | Android Webview | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | ? | (有) | (有) | 34.0 (34) | 未サポート | ? | ? | (有) |
[1] Firefox 52以前のバージョンでは、ローカルトラック(getUserMedia()
によって取得したもの)のみが停止可能です。 現在は、WebRTCに関連づけられたMediaStream
やWeb Audio API ストリーム、CanvasCaptureMediaStream
を含む、全ての種類のトラックが停止可能です。
関連項目
- このメソッドが属する
MediaStreamTrack
インタフェース MediaStreamTrack.readyState
ended