MediaStreamTrack: stop() 方法

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本使用。自 2017 年 9 月以来,它已在浏览器中提供。

MediaStreamTrack 接口的 stop() 方法用于停止该轨道。

语法

js
stop()

参数

无。

返回值

无(undefined)。

描述

调用 stop() 方法会告知 用户代理MediaStreamTrack 不再需要该轨道的源——无论源是什么,包括文件、网络流或本地摄像头或麦克风。由于多个轨道可能使用同一源(例如,当两个标签页都在使用设备的麦克风时),因此源本身不一定会立即停止。它会被与该轨道分离,并且该轨道对象会被停止。一旦没有媒体轨道在使用该源,该源可能会被完全停止。

调用 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 属性的流来实现。然后,通过调用其 getTracks() 方法来获取流的轨道列表。之后,只需使用 forEach() 遍历轨道列表并调用每个轨道的 stop() 方法即可。

最后,将 srcObject 设置为 null,以切断与 MediaStream 对象的连接,以便可以释放该对象。

规范

规范
媒体捕获和流
# dom-mediastreamtrack-stop

浏览器兼容性

另见