如何从Firefox中的对等连接中删除MediaStream? API说pc.removeStream(stream)方法存在,但是当我使用它时,我收到错误:“removeStream not implemented”
我检查了解决方案here,但我不理解replaceTrack()函数的用法。我不想用另一个音轨替换一个音轨,我无法弄清楚如何使它工作..
答案 0 :(得分:0)
我的理解是Firefox尚未实现从PeerConnection添加/删除流,但您可以在单个媒体流中添加/删除轨道(在这种情况下为RTCRtpSender),因此当您查看jib的{{ 3}}从输入媒体流中获取所有轨道,检查peerconnection的媒体流是否包含这些轨道,如果存在则删除它们:
function removeTrack(pc, stream){
pc.getSenders().forEach(function(sender){
stream.getTracks.forEach(function(track){
if(track == sender.track){
pc.removeTrack(sender);
}
})
});
}
或者基本上你可以只是他的polyfill:
window.mozRTCPeerConnection.prototype.removeStream = function(stream) {
this.getSenders().forEach(sender =>
stream.getTracks().includes(sender.track) && this.removeTrack(sender));
}