pc.removeStream(stream)未实现Firefox + WebRTC

时间:2015-10-21 23:44:49

标签: firefox webrtc

如何从Firefox中的对等连接中删除MediaStream? API说pc.removeStream(stream)方法存在,但是当我使用它时,我收到错误:“removeStream not implemented”

我检查了解决方案here,但我不理解replaceTrack()函数的用法。我不想用另一个音轨替换一个音轨,我无法弄清楚如何使它工作..

1 个答案:

答案 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));
}