--- title: MediaStreamTrack.stop() slug: Web/API/MediaStreamTrack/stop tags: - API - Media - WebRTC - 停止 - 参考 - 方法 - 流 - 视频捕获和流API - 视频流API - 视频流跟踪 translation_of: Web/API/MediaStreamTrack/stop ---
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")}}