当其中一台设备连接到 WiFi 时,WebRTC android 实现不起作用

WebRTC android implementation not working when one of the device is connected to WiFi

我开发了一个视频流应用程序,可以将视频从一个 android 设备流式传输到另一个设备(而不是相反)。当两个设备都在各自的 LTE 网络上时,该应用程序运行良好。但是当其中一台设备连接到 WiFi 时,应用程序在握手(交换报价和​​答案)中失败并在日志中显示

D/null localPeerCreation:
onIceConnectionChange() called with:
iceConnectionState = [CLOSED]

(在某些情况下用 FAILED 代替 CLOSED)

我不知道为什么会发生这种情况,在单独的 LTE 情况下它可以工作,但在 WIFI 情况下却不行。很长一段时间以来,我一直在尝试调试这个问题,但我无法指出任何问题,因为对 WebRTC 的 android 实现的引用也非常少。请帮助。

编辑:在 Xirsys 回复候选人之前,我开始发送 Ice 候选人,因此从未使用过 TURN 服务器。所以我更改了我的应用程序,以便只有在从 Xirsys 收到候选人后才会发生任何握手。我知道这很愚蠢。

我不熟悉 Xirsys 的 TURN 服务器,但它可能无法涵盖所有​​需要连接 LTE 两个客户端的情况。

我会检查以下内容。

  • 支持哪些传输类型(UDP、TCP 和 TLS)
  • TURN 服务器是否为 IPv4 和 IPv6 生成侦听器?
  • 两台设备上的网络是什么样的(IPv4/IPv6,在 NAT 后面?)

如果你能分享双方的候选人和你的RTCConfiguration,那将有很大帮助。确保匿名化您的 URL 和 IP!