RTCPeerConnection: removeTrack() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

RTCPeerConnection 介面的 removeTrack() 方法指示連線的本地端停止從指定軌道傳送媒體,但不會從 RTCPeerConnection.getSenders() 返回的傳送者列表中實際移除相應的 RTCRtpSender。如果該軌道已停止,或者不在連線的傳送者列表中,則此方法無效。

如果連線已經協商完成(signalingState 設定為 "stable"),它將被標記為需要重新協商;遠端對等方在完成此協商之前不會體驗到此更改。一個 negotiationneeded 事件將被髮送到 RTCPeerConnection,以告知本地端必須進行此協商。

語法

js
removeTrack(sender)

引數

sender

一個 RTCRtpSender,指定要從連線中移除的傳送者。

返回值

undefined.

異常

InvalidStateError DOMException

如果連線未開啟,則丟擲此異常。

示例

此示例將一個影片軌道新增到連線,併為主傳送者設定一個監聽器,當用戶點選關閉按鈕時移除該軌道。

js
let pc;
let sender;
navigator.getUserMedia({ video: true }, (stream) => {
  pc = new RTCPeerConnection();
  const [track] = stream.getVideoTracks();
  sender = pc.addTrack(track, stream);
});

document.getElementById("closeButton").addEventListener("click", (event) => {
  pc.removeTrack(sender);
  pc.close();
});

規範

規範
WebRTC:瀏覽器中的即時通訊
# dom-rtcpeerconnection-removetrack

瀏覽器相容性

另見