收集冰候选人有效但无法连接

Posted

技术标签:

【中文标题】收集冰候选人有效但无法连接【英文标题】:Gathering ice candidates works but failing to connect 【发布时间】:2021-09-12 10:51:08 【问题描述】:

我有两个不同的 WebRTC 客户端:一个 android 设备和一个 Angular 应用程序。我设置了一个转弯和眩晕服务器,两者似乎都可以与trickle ice tester 和webrtc tester 一起使用。

如您所见:

但是当我在about:webrtc 中观察候选人时,所有的 ice 候选人在 Firefox 中都失败了。

有人对此有解释吗? 更多信息:

Google Chrome 中出现类似错误,但日志来自 Firefox,因为 Firefox 具有更好的日志记录。 设备在不同的网络上,所以主机请求应该失败,需要转服务器。 转弯服务器是 coturn 转弯服务器,但我也尝试使用 Pion 转弯服务器,结果相同。 Firfox 日志:https://gist.github.com/Nick-v-L/365b7da10039d28a6a23a27fea15df52 Coturn 日志:https://gist.github.com/Nick-v-L/04c3cfc677847e3cdcb7f6b5ca15c743

【问题讨论】:

日志有助于找到原因。但是您在此处发布的日志包含几个测试运行,很难区分。如果您可以按“清除日志”按钮,然后只进行一次测试运行并再次发布生成的日志,这可能有助于发现问题。 @NilsOhlmeier 我更新了 firefox 日志并添加了 coturn 日志以获取更多信息。提前感谢您的帮助。 【参考方案1】:

我的 Android 应用出现了一个简单的错误。当从信令服务器接收到一个冰候选时,我做了以下事情:

peerConnection.AddIceCandidate(new IceCandidate(sdpCandidate, sdpMLineIndex, sdpMid));

但正如文档所述,您必须按此顺序创建一个候选冰:

public IceCandidate(string sdpMid, int sdpMLineIndex, string sdp);

所以我转过sdpCandidatesdpMid 来解决这个问题。

peerConnection.AddIceCandidate(new IceCandidate(sdpMid, sdpMLineIndex, sdpCandidate));

【讨论】:

以上是关于收集冰候选人有效但无法连接的主要内容,如果未能解决你的问题,请参考以下文章

cassandra-stress “无法通过 JMX 连接;未收集这些统计信息”

ss连接正常但无法上网

QSqlDatabase:无法使用来自 QThread 的连接

redis 高并发导致无法连接处理

无法触发 WebRTC 跟踪事件

无法在android中的xmpp服务器中连接