问题描述
我有两个不同的 WebRTC 客户端:一个 Android 设备和一个 angular 应用程序。我设置了一个转身和眩晕服务器,两者似乎都适用于 trickle ice tester 和 webrtc tester。
正如你在这里看到的:
但是当我在 about:webrtc
中查看候选人时,Firefox 中的所有 ice 候选人都失败了。
有没有人解释一下?
更多信息:
- Google Chrome 中出现类似错误,但日志来自 Firefox,因为 Firefox 具有更好的日志记录。
- 设备位于不同的网络上,因此主机请求应该会失败并且需要转向服务器。
- turn server 是 coturn turn server,但我也用 Pion turn server 尝试过,结果相同。
- Firfox 日志:https://gist.github.com/Nick-v-L/365b7da10039d28a6a23a27fea15df52
- Coturn 日志:https://gist.github.com/Nick-v-L/04c3cfc677847e3cdcb7f6b5ca15c743
解决方法
我的 Android 应用出现了一个简单的错误。当从信令服务器接收到一个 ice 候选时,我做了以下事情:
peerConnection.AddIceCandidate(new IceCandidate(sdpCandidate,sdpMLineIndex,sdpMid));
但正如文档所述,您必须按以下顺序创建一个 ice 候选对象:
public IceCandidate(string sdpMid,int sdpMLineIndex,string sdp);
所以我调转了 sdpCandidate
和 sdpMid
来解决这个问题。
peerConnection.AddIceCandidate(new IceCandidate(sdpMid,sdpCandidate));