1

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

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

在某些情况下有 FAILED 代替 CLOSED

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

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

4

1 回答 1

2

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

我会检查以下内容。

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

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

于 2020-03-21T21:52:08.243 回答