RTCPeerConnection: removeTrack() 方法

removeTrack() 方法是 RTCPeerConnection 接口的一部分,它指示连接的本地端停止发送指定轨道上的媒体,但不会实际从发送者列表中删除相应的 RTCRtpSender(如 RTCPeerConnection.getSenders() 所报告)。如果轨道已经停止,或者不在连接的发送者列表中,则此方法无效。

如果连接已经协商过(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();
  },
  false,
);

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcpeerconnection-removetrack

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅