没有从 Firefox 到 Chrome 的 WebRTC 视频信号,但所有其他组合都有效
No WebRTC video signal from Firefox to Chrome, but all other combinations work
我有一个使用 adapter.js 实现 WebRTC 的网络应用程序,大多数情况下都能正常工作。 Firefox 到 Firefox 和 Chrome 到 Chrome 工作正常,但是:
当 Chrome 和 Firefox 连接时,来自 Firefox 端的视频不会显示在 Chrome 端。 音频确实有效!,所以 webrtc 频道很好。
- 计算机在同一个网络中
- (我确实有 STUN/TURN 能力,但我认为这无关紧要)
- 谁发起都无所谓
- 总是 Chrome 看不到 Firefox,Firefox 总是看到 Chrome
- 没有错误,没有警告,所有预期的回调都会触发,握手似乎已经完成
- Alice 在
onicecandidate
的 'the end' 向 Bob 发送了她的 ice candidates。 Bob 也这样做,但时机可能比我在这里意识到的更重要。
- 两个视频元素都已创建,带有 blob src(使用
srcObject
),并且 onloadedmetadata
在两个浏览器上触发
- 发生在每台计算机上(在 5 台计算机上尝试了 ~ 20 种组合)
其他事情偶尔也会失败,比如 ICE 协商(即使它始终是同一个网络),createOffer
或 setRemoteDescription
有时也会失败。
我能找到的所有问题都是 2-3 年前的,但在那之后 Firefox 和 Chrome 似乎是 RTC 的好伙伴。我的视频怎么了?
相关,但不是解决方案:
- WebRTC Firefox to Chrome video call not working
- WebRTC works in Chrome but not Firefox
这可能是关于事情在 API 中是否同步发生的假设的问题。 API 是高度异步的,同步或不同步发生的情况在浏览器之间(或同一浏览器的不同版本之间)有所不同。您可能需要使用 adapter.js.
仔细比较您的代码与其他示例
如果没有代码或相关片段,很难准确说出问题所在,但需要检查的重要事项是 about:webrtc(对于 Firefox,包括底部的连接日志)、chrome webrtc 内部页面和内部日志记录。还要添加您自己的记录 callbacks/promises 发生和未发生的事情。我建议在 firefox 中设置环境变量 NSPR_LOG_MODULES=signaling:4,mtransport:4 和 NSPR_LOG_FILE=whatever。您还可以(尤其是使用这些日志或一些示例代码)在 irc.mozilla.org 上的#media 中对 Firefox 开发人员执行 ping 操作。
我有一个使用 adapter.js 实现 WebRTC 的网络应用程序,大多数情况下都能正常工作。 Firefox 到 Firefox 和 Chrome 到 Chrome 工作正常,但是:
当 Chrome 和 Firefox 连接时,来自 Firefox 端的视频不会显示在 Chrome 端。 音频确实有效!,所以 webrtc 频道很好。
- 计算机在同一个网络中
- (我确实有 STUN/TURN 能力,但我认为这无关紧要)
- 谁发起都无所谓
- 总是 Chrome 看不到 Firefox,Firefox 总是看到 Chrome
- 没有错误,没有警告,所有预期的回调都会触发,握手似乎已经完成
- Alice 在
onicecandidate
的 'the end' 向 Bob 发送了她的 ice candidates。 Bob 也这样做,但时机可能比我在这里意识到的更重要。 - 两个视频元素都已创建,带有 blob src(使用
srcObject
),并且onloadedmetadata
在两个浏览器上触发 - 发生在每台计算机上(在 5 台计算机上尝试了 ~ 20 种组合)
其他事情偶尔也会失败,比如 ICE 协商(即使它始终是同一个网络),createOffer
或 setRemoteDescription
有时也会失败。
我能找到的所有问题都是 2-3 年前的,但在那之后 Firefox 和 Chrome 似乎是 RTC 的好伙伴。我的视频怎么了?
相关,但不是解决方案:
- WebRTC Firefox to Chrome video call not working
- WebRTC works in Chrome but not Firefox
这可能是关于事情在 API 中是否同步发生的假设的问题。 API 是高度异步的,同步或不同步发生的情况在浏览器之间(或同一浏览器的不同版本之间)有所不同。您可能需要使用 adapter.js.
仔细比较您的代码与其他示例如果没有代码或相关片段,很难准确说出问题所在,但需要检查的重要事项是 about:webrtc(对于 Firefox,包括底部的连接日志)、chrome webrtc 内部页面和内部日志记录。还要添加您自己的记录 callbacks/promises 发生和未发生的事情。我建议在 firefox 中设置环境变量 NSPR_LOG_MODULES=signaling:4,mtransport:4 和 NSPR_LOG_FILE=whatever。您还可以(尤其是使用这些日志或一些示例代码)在 irc.mozilla.org 上的#media 中对 Firefox 开发人员执行 ping 操作。