如何通过NAT流式传输WebRTC音频?

时间:2019-01-23 02:53:35

标签: javascript webrtc audio-streaming nat turn

我有一个WebRTC多方应用程序,可以在localhost和ngrok.io localhost隧道上工作。但是,当我尝试与通过路由器连接的我的朋友进行测试时,我可以看到要约/答案交换以及ICE候选交换,但是没有声音通过。

在首先遇到这个问题之后,我进行了一些研究,了解到您需要TURN服务器才能通过路由器的NAT。我正在使用已确认在https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

中有效的公共TURN服务器
var configuration = { 
    "iceServers": [{ "url": "stun:stun2.1.google.com:19302" }], 
     url: 'turn:192.158.29.39:3478?transport=udp', 
     credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', 
     username: '28224511:1379330808' 
}; 

yourConn = new webkitRTCPeerConnection(configuration); 

yourConn2 = new webkitRTCPeerConnection(configuration); 

yourConn3 = new webkitRTCPeerConnection(configuration);

声音数据包应该通过此TURN服务器和我朋友的NAT进行路由,但我们仍然无法彼此流式传输。

2 个答案:

答案 0 :(得分:1)

您的转弯服务器凭证来自https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/,并且已在2013年过期。如果您使用https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/,它应该告诉您这不起作用-如果它给出了,我会感到很惊讶您可以中继候选人。

运行您自己的服务器。

答案 1 :(得分:0)

您应该更改配置:

var configuration = { 
  "iceServers": [
    { "url": "stun:stun2.1.google.com:19302" },
    {
      "url": "turn:192.158.29.39:3478?transport=udp", 
      "credential": "yourpassword", 
      "username": "yourusename" 
    }
  ], 

};