2017-03-16 72 views
2

WebRTC调用在我们的应用程序中不可靠。有时我们会看到黑屏,有时候我们根本看不到通话开始,有时会看到巨大的延迟或音频/视频中的不同步。如何解决不可靠的WebRTC调用?

设置:

几乎100%重现问题从LTE一个客户到另一个上的Wi-Fi调用。在这种情况下,我们在两台设备上都会看到黑屏,但是,默认的bg颜色是白色的,所以WebRTC至少会发生一些情况。

做了什么来解决问题:

  • 审议Coturn日志......有时候,我们看到“未经授权”的错误存在,但它很难说,如果他们有什么影响;
  • 检查了Coturn的流量:在Wi-Fi到Wi-Fi的情况下,它很低,所以实际上建立了点对点连接。如果有LTE,我们可以看到大约40-120KiB /秒的负载(对于音频/视频而言这不算太低),所以TURN似乎有效;
  • 检查客户端应用程序日志,没有什么特别的;

请提出任何可能的研究方法或修复,以使WebRTC尽可能地可靠。

+0

你确认你的轮到服务器真的有效吗?见示例#2 [here](http://testrtc.com/webrtc-api-trace/) –

+0

@PhilippHancke当没有对等连接时,我们看到一些通过TURN服务器的流量,40-120KiB /秒。这个峰值与呼叫匹配。 –

+0

40-120kbps对于音频/视频通话来说太低。此外,TURN是一个后备,因此直接连接时不会使用。检查这个最简单的方法是在连接结束时停止转向服务器 - 如果通话继续,则不使用TURN服务器 –

回答

0

WebRTC Connection Process

以上方案是从this article我写了进入有关这个主题的很多细节。

不久,问题可能出现在任何的3个步骤:

  1. 信令采用STUN
  2. 发现/ TURN
  3. P2P连接

这里是我会做:

  1. 使用的限制像320×240较低的最低分辨率,这将确保有没有简单的避免getUserMedia() errors
  2. 确保信令通过端口80或443
  3. 在很多情况下做了同行无法的沟通因此尝试使用TCP(stun:stun.l.google.com:19302?transport=tcp)和端口80(默认为UDP的端口3478或19302用于Google的STUN,并且它们可能会被路由器/防火墙/代理/移动网络阻止)与STUN/TURN服务器通信。
  4. 使用TrickleICE(使用您自己的STUN/TURN)和LTE/WiFi设备上的WebRTC Troubleshooter,您将学到很多关于如何连接的信息。
相关问题