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 的浏览器中加载。