2017-03-16 71 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,您將學到很多關於如何連接的信息。
相關問題