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() メソッドを呼び出しています。

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

仕様書

Specification
Media Capture and Streams
# dom-mediastreamtrack-stop

ブラウザーの互換性

BCD tables only load in the browser

関連情報