WebRTC在Chrome和Firefox之间重新协商

Ana*_*d S 10 javascript firefox google-chrome webrtc

我能够在Firefox和Chrome之间建立WebRTC连接,但Firefox-Chrome之间的重新协商无法正常工作.

Chrome-Chrome对和Firefox-Firefox对之间的重新协商没有问题.

使用Firefox-Chrome对,当我在删除或添加曲目后从chrome开始重新协商时,重新协商成功,onremovestream或者onaddstream正确地在firefox上触发回调.

但是当我使用pc.removeTrack或删除或添加曲目后从Firefox开始重新协商时pc.addTrack,重新协商成功而没有任何错误.但在Chrome onremovestreamonaddstream回调中未触发.当我使用MediaStream时,pc.getRemoteStreams我可以看到在重新协商后轨道的ID被更改,但是当我尝试播放时,MediaStream不起作用.

我注意到一件奇怪的事情是,Firefox中的实际本地轨道ID与Chrome中的远程轨道ID不匹配(甚至在重新协商之前).

Chrome和Firefox是否支持跨浏览器重新协商(主要是从firefox到chrome)?

有没有人实现firefox和Chrome之间的重新谈判?

这个问题有解决方法吗?

Ana*_*d S 3

这不是一个完整的解决方案,而是发生这种情况的原因。如果您找到解决方案,我鼓励您发布解决方案。

WebRTC 中的多流有两个计划 UnifiedPlan 和 PlanB。PlanB 被放弃,UnifiedPlan 正在成为标准。Firefox 实现了 UnifiedPlan,但 chrome 仍然有 PlanB 实现。有一个关于此的Chromium Bug

有一个为此编写的polyfill,spd-interop。但这个polyfill有一个限制,它只支持从Chrome到Firefox的重新协商。

如果我在 Chrome 修复问题之前找到解决方法,我将更新答案。