Chrome和Firefox之间的WebRTC重新协商

时间:2016-01-16 19:59:30

标签: javascript google-chrome firefox webrtc

我能够在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之间实现重新协商?

此问题有解决方法吗?

1 个答案:

答案 0 :(得分:3)

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

WebRTC中有两个计划用于多个流的UnifiedPlan和PlanB。 PlanB被取消,UnifiedPlan正在成为标准。 Firefox实现了UnifiedPlan,但chrome仍然具有PlanB实现。这有一个Chromium Bug

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

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