MediaStreamTrack.stop()
MediaStreamTrack.stop() メソッドは、トラックを停止します。
構文
js
stop()
引数
なし。
返値
なし (undefined)。
解説
stop() の呼び出しは、ユーザーエージェントへ、トラックのソース(ファイル、ネットワークストリーム、ローカルカメラやマイク)がこれ以上この MediaStreamTrack で必要とされないことを伝えます。複数のトラックが同じソースを使用すること(例えば、 2 つのタブが端末のマイクを使っている場合など)もあるため、ソースが必ずしも直ぐに停止させられる必要はありません。その代わり、トラックからの関連付けが解除され、そのトラックオブジェクトが停止されます。ソースからメディアトラックが使用されなくなると、ソースは実際に完全に停止させられるでしょう。
stop() を呼び出した直後に、 readyState の状態は ended になります。なお、この場合は ended イベントは発生しません。
例
映像ストリームの停止
この例では、この <video> の各トラックで stop() を呼び出すことで、ストリーミングされている映像を停止する関数を定義しています。
js
function stopStreamedVideo(videoElem) {
const stream = videoElem.srcObject;
const tracks = stream.getTracks();
tracks.forEach(function(track) {
track.stop();
});
videoElem.srcObject = null;
}
srcObject プロパティから video 要素のストリームを取得することで機能しています。次に、 getTracks() メソッドを呼び出すことで、ストリームのトラックリストを取得しています。ここから、 forEach() を使ってトラックリストから各トラックを繰り返し呼び出し、それぞれのトラックで stop() メソッドを呼び出しています。
最後に、 srcObject に null を設定することで、この MediaStream オブジェクトへの参照を解き、解放できるようにします。
仕様書
| Specification |
|---|
| Media Capture and Streams # dom-mediastreamtrack-stop |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- このメソッドが属する
MediaStreamTrackインターフェイス MediaStreamTrack.readyStateended