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 のメソッドで、トラックを停止します。

構文

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((track) => {
    track.stop();
  });

  videoElem.srcObject = null;
}

srcObject プロパティから video 要素のストリームを取得することで機能しています。次に、 getTracks() メソッドを呼び出すことで、ストリームのトラックリストを取得しています。ここから、 forEach() を使ってトラックリストから各トラックを繰り返し呼び出し、それぞれのトラックで stop() メソッドを呼び出しています。

最後に、 srcObjectnull を設定することで、この MediaStream オブジェクトへの参照を解き、解放できるようにします。

仕様書

Specification
Media Capture and Streams
# dom-mediastreamtrack-stop

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
stop

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報