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

ブラウザーの互換性

BCD tables only load in the browser

関連情報