如何离线使用 webrtc

How can I use webrtc offline

我正在开发一个 Vuejs 应用程序,它在浏览器中显示多个 RTSP 流。 为了转换流并显示它们,我使用 RTSPtoWebRTC with WebRtcPlayer。 由于低延迟,我决定使用 WebRTC(这是一个机器人项目)。 此方法运行良好,我可以查看所有流,最大延迟为 50 毫秒。 但是一旦我断开与互联网的连接,我就会收到错误消息:

Uncaught DOMException: Can't create RTCPeerConnections when the network is down

我不能指望这个机器人会一直连接到互联网,这不是本意。

我尝试了几种解决方案,例如从播放器和服务器中删除任何提及外部 iceServers 的内容。

      iceServers: [{
        urls: ["stun:stun.l.google.com:19302"]
      }]

尝试 运行 我自己的 STUN/TURN 服务器与 coturn 并提供 IP 地址作为 ICE 服务器但没有成功 - 仍然没有互联网错误。

我是 运行 Firefox 上的应用程序,如果这很重要的话,我不久前发现了这个 post:firefox bug report about this issue

我尝试了尝试将 about:config 中的 media.peerconnection.ice.loopback 设置为 true 的建议,但仍然无效。

非常感谢您的帮助!

编辑:

所以,在花了太多时间试图解决这个问题后,我发现在 Chrome 中,它可以离线工作。所以我会坚持下去

错误在 Firefox 代码中抛出:https://searchfox.org/mozilla-central/source/dom/media/PeerConnection.jsm#473

如果我正确阅读该代码,环回接口的解决方法将不再有效。代码中的 if 条件仅询问网络代码是否存在任何网络连接。

所以你要么

  • 尝试让一个网络接口相信它仍然具有连接性的菲利普斯建议。也许是带有硬编码 IP 地址的假接口,但没有默认路由就足够了。
  • 或者您说服 Mozilla 开发人员,在离线场景中使用 PeerConnections 是合理的用例,可以在 Firefox 中删除该检查 - 尽管我担心它可能 运行 进入另一个错误代码。或者您可以尝试自己提交补丁。