我能够在Firefox和Chrome之间建立WebRTC连接,但Firefox-Chrome之间的重新协商无法正常工作。
Chrome-Chrome对和Firefox-Firefox对之间的重新协商没有问题。
使用Firefox-Chrome对,当我在删除或添加曲目后从chrome开始重新协商时,重新协商成功,并且正确地在firefox上触发onremovestream
或onaddstream
回调。
但是当我使用pc.removeTrack
或pc.addTrack
删除或添加曲目后,我从Firefox开始重新协商时,重新协商成功,没有任何错误。但在Chrome onremovestream
或onaddstream
中,不会触发回调。当我使用pc.getRemoteStreams
获取MediaStream时,我可以看到在重新协商后轨道的ID被更改,但是当我尝试播放时,MediaStream不起作用。
我注意到一件奇怪的事情是,Firefox中的实际本地曲目ID与Chrome中的远程曲目ID不匹配(甚至在重新协商之前)。
Chrome和Firefox是否支持跨浏览器重新协商(主要是从firefox到chrome)?
有没有人在firefox和Chrome之间实现重新协商?
此问题有解决方法吗?
答案 0 :(得分:3)
这不是一个完整的解决方案,而是发生这种情况的原因。如果你找到解决方案,我鼓励发布解决方案。
WebRTC中有两个计划用于多个流的UnifiedPlan和PlanB。 PlanB被取消,UnifiedPlan正在成为标准。 Firefox实现了UnifiedPlan,但chrome仍然具有PlanB实现。这有一个Chromium Bug。
为此编写了一份polyfill,spd-interop。但这种polyfill有一个限制,它只支持从Chrome到Firefox的重新协商。
如果我在Chrome修复此问题之前找到解决方法,我会更新答案。