MediaStreamTrack: stop() メソッド
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
stop()
は MediaStreamTrack
のメソッドで、トラックを停止します。
構文
stop()
引数
なし。
返値
なし (undefined
)。
解説
stop()
の呼び出しは、ユーザーエージェントへ、トラックのソース(ファイル、ネットワークストリーム、ローカルカメラやマイク)がこれ以上この MediaStreamTrack
で必要とされないことを伝えます。複数のトラックが同じソースを使用すること(例えば、 2 つのタブが端末のマイクを使っている場合など)もあるため、ソースが必ずしも直ぐに停止させられる必要はありません。その代わり、トラックからの関連付けが解除され、そのトラックオブジェクトが停止されます。ソースからメディアトラックが使用されなくなると、ソースは実際に完全に停止させられるでしょう。
stop()
を呼び出した直後に、 readyState
の状態は ended
になります。なお、この場合は ended
イベントは発生しません。
例
映像ストリームの停止
この例では、この <video>
の各トラックで stop()
を呼び出すことで、ストリーミングされている映像を停止する関数を定義しています。
function stopStreamedVideo(videoElem) {
const stream = videoElem.srcObject;
const tracks = stream.getTracks();
tracks.forEach((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.readyState
ended