Chrome和Firefox之间的WebRTC重新协商

WebRTC renegotiation between Chrome and Firefox

本文关键字:新协商 协商 WebRTC Firefox 之间 Chrome      更新时间:2023-09-26

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

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

使用Firefox-Chrome对,当我在删除或添加曲目后从chrome开始重新协商时,重新协商成功,并且在Firefox上正确触发了onremovestreamonaddstream回调。

但是当我在使用pc.removeTrackpc.addTrack删除或添加曲目后从Firefox开始重新协商时,重新协商成功,没有任何错误。但在 Chrome 中onremovestreamonaddstream不会触发回调。当我使用pc.getRemoteStreams获取 MediaStream 时,我可以看到曲目的 ID 在重新协商后发生了变化,但当我尝试播放它时,MediaStream 不起作用。

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

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

有没有人在Firefox和Chrome之间实现重新谈判?

此问题有什么解决方法吗?

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

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

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

如果我在 chrome 解决问题之前找到解决此问题的方法,我将更新答案。