--- title: MediaStreamTrack.stop() slug: Web/API/MediaStreamTrack/stop tags: - API - Media - WebRTC - 停止 - 参考 - 方法 - 流 - 视频捕获和流API - 视频流API - 视频流跟踪 translation_of: Web/API/MediaStreamTrack/stop ---
{{APIRef("Media Capture and Streams")}}

MediaStreamTrack.stop()方法停止跟踪。

语法

track.stop()

说明

调用stop()告诉{{glossary("user agent")}} ,{{domxref("MediaStreamTrack")}}不再需要轨道的来源,无论该来源是什么,包括文件,网络流,本地摄像机或麦克风。由于多个音轨可能使用同一音源(例如,如果两个选项卡使用设备的麦克风),则音源本身并不一定会立即停止。 而是从轨道取消关联,并且停止跟踪对象。 一旦没有媒体轨道正在使用源,则实际上可能会完全停止该源。

调用stop()之后,{{domxref("MediaStreamTrack.readyState", "readyState")}}属性立即设置为ended

示例

停止视频流

在此示例中,我们看到一个函数,该函数通过在给定{{HTMLElement("video")}}的每个轨道上调用stop()来停止流式视频。

function stopStreamedVideo(videoElem) {
  const stream = videoElem.srcObject;
  const 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()方法。

最后,将srcObject设置为null以切断与{{domxref("MediaStream")}} 对象的链接,以便将其释放。

Finally, srcObject is set to null to sever the link to the {{domxref("MediaStream")}} object so it can be released.

技术参数

Specification Status Comment
{{ SpecName('Media Capture', '#dom-mediastreamtrack-stop', 'MediaStreamTrack.stop()') }} {{ Spec2('Media Capture') }} Initial specification.

浏览器兼容性

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

看看别的