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

瀏覽器相容性

另見