1

所以,我正在尝试webrtc video chat使用peer.js. 到目前为止一切顺利,一切似乎都正常。当我在我的私人服务器上运行我的应用程序时,问题就开始了。

每次我尝试接听或拨打电话时,视频开始播放几秒钟,但出现黑屏,然后我收到ICE Failed错误并断开连接。

如果两个用户共享相同的 IP 地址,则不会发生这种情况。如果用户共享相同的 ip,则视频聊天可以正常工作,完全没有问题。

这里可能是什么问题?

更新

我添加了 stun 并打开对等服务器,但我再次遇到同样的错误

peer = new Peer({ key: peerApiKey, debug: 3, config: {'iceServers': [
            { url: 'stun:stun.l.google.com:19302' },
            { url: 'stun:stun1.l.google.com:19302' },
            { url: 'turn:numb.viagenie.ca:3478', credential: 'muazkh', username:'webrtc@live.com' },
            { url: 'turn:numb.viagenie.ca', credential: 'muazkh', username:'webrtc@live.com' },
            { url: 'turn:192.158.29.39:3478?transport=udp', credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', username:'28224511:1379330808' },
            { url: 'turn:192.158.29.39:3478?transport=tcp', credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', username:'28224511:1379330808' }
        ]}});
4

1 回答 1

2
  • 您需要设置一个有效的 STUN 服务器(可能 peer.js 默认值不起作用)。这将解决大约 80% 的情况下的问题。
  • 在某些情况下,还需要 TURN 服务来完成调用。
  • 在某些情况下,即使 TURN 也是不够的(例如,如果两端都阻止了 UDP),在这些情况下,您需要一个服务器来路由媒体(通过 TCP/TURN)。
于 2016-05-25T14:24:18.270 回答