--- title: MediaStreamTrack.stop() slug: Web/API/MediaStreamTrack/stop translation_of: Web/API/MediaStreamTrack/stop ---

{{APIRef("Media Capture and Streams")}}

{{domxref("MediaStreamTrack")}}のstop()はトラックを停止します。

文法

MediaStreamTrack.stop();

stop() の呼び出しは、 {{glossary("user agent")}}へ、トラックのソース(ファイル、ネットワークストリーム、ローカルカメラやマイク)がこれ以上MediaStreamTrackで必要とされないことを伝えます。複数のトラックが同じソースを使用すること(例えば、2つのタブがデバイスのマイクを使っている場合など)もあるため、ソースが必ずしも直ぐに停止させられる必要はありません。その代わり、トラックからの関連付けが解除され、そのトラックオブジェクトが停止されます。ソースからメディアトラックが使用されなくなると、ソースは実際に完全に停止させられるでしょう。

stop()を呼び出した直後に、{{domxref("MediaStreamTrack.readyState", "track")}}の状態はendedになります。

In this example, we see a function which stops a streamed video by calling stop() on every track on a given {{HTMLElement("video")}}.

この例では、与えられた{{HTMLElement("video")}}の各トラックのstop()を呼び出すことで、ストリーミングされているビデオを停止する関数を定義しています。

function stopStreamedVideo(videoElem) {
  let stream = videoElem.srcObject;
  let tracks = stream.getTracks();

  tracks.forEach(function(track) {
    track.stop();
  });

  videoElem.srcObject = null;
}

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

最後に、{{domxref("MediaStream")}}オブジェクトへの参照を解くためにsrcObjectnullを設定することで、このオブジェクトは解放できるようになります。

仕様

仕様 状況 コメント
{{ SpecName('Media Capture', '#widl-MediaStreamTrack-stop', 'MediaStreamTrack.stop()') }} {{ Spec2('Media Capture') }} 初版

ブラウザ互換性

{{Compat("api.MediaStreamTrack.stop")}}

関連項目