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

浏览器兼容性

另见