【问题标题】:Android WebRTC and STUN issueAndroid WebRTC 和 STUN 问题
【发布时间】:2017-02-06 14:59:15
【问题描述】:

我尝试基于 webrtc 构建 Android 版本的 IOS 应用程序。我使用 STUN 服务器(不是 TURN,IOS 应用只使用 STUN 服务器),而 android 应用在不同的网络上无法运行(但 IOS 运行良好)。

RTC 配置:

    rtcConfig.tcpCandidatePolicy = PeerConnection.TcpCandidatePolicy.DISABLED;
    rtcConfig.bundlePolicy = PeerConnection.BundlePolicy.MAXCOMPAT;
    rtcConfig.rtcpMuxPolicy = PeerConnection.RtcpMuxPolicy.REQUIRE;
    rtcConfig.iceTransportsType = PeerConnection.IceTransportsType.ALL;
    rtcConfig.continualGatheringPolicy = PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY;
    rtcConfig.keyType = PeerConnection.KeyType.ECDSA;

PS:我尝试了许多不同的 STUN 服务器(例如:stun:stun.l.google.com:19302),但没有一个可以工作。

UPD:

ICE SAMPLE of STUN(ice 连接失败):

 {"sdp":"candidate:1911153948 1 udp 2122260223 192.168.15.33 54469 typ host generation 0 ufrag Ucsk network-id 3 network-cost 10","sdpMLineIndex":0,"sdpMid":"audio"}

 {"sdp":"candidate:4037141416 1 udp 1686052607 217.112.221.86 33341 typ srflx raddr 192.168.15.33 rport 54469 generation 0 ufrag Ucsk network-id 3 network-cost 10","sdpMLineIndex":0,"sdpMid":"audio"}

ICE SAMPLE的工作回合:

{"sdp":"candidate:1911153948 1 udp 2122260223 192.168.15.33 53080 typ host generation 0 ufrag u6i0 network-id 3 network-cost 10","sdpMLineIndex":0,"sdpMid":"audio"}

{"sdp":"candidate:4037141416 1 udp 1686052607 217.112.221.86 47737 typ srflx raddr 192.168.15.33 rport 53080 generation 0 ufrag u6i0 network-id 3 network-cost 10","sdpMLineIndex":0,"sdpMid":"audio"}

{"sdp":"candidate:3433799847 1 udp 41885439 66.228.45.110 56124 typ relay raddr 217.112.221.86 rport 47737 generation 0 ufrag u6i0 network-id 3 network-cost 10","sdpMLineIndex":0,"sdpMid":"audio"}

另外,在日志中,我在 15 秒 ping 后出现连接超时错误:

 I/libjingle: (port.cc:1413): Jingle:Conn[0xafe1c200:audio:ymVmyEYx:1:0:local:udp:192.168.15.x:59152->p7NE+tsC:1:1686052607:stun:udp:46.133.252.x:62179|C--I|0|0|7241540810645061118|-]: Sent STUN ping, id=597771634a2b427864497448, use_candidate=0, nomination=0

 I/libjingle: (port.cc:1413): Jingle:Conn[0xafe1bd00:audio:ymVmyEYx:1:0:local:udp:192.168.15.x:59152->+xyFpztR:1:2122260223:local:udp:100.73.133.x:43879|C--I|0|0|9115038255631187454|-]: Sent STUN ping, id=345231714b49377a66633056, use_candidate=0, nomination=0

【问题讨论】:

  • “不工作”可能意味着一百种不同的东西。请清楚究竟是什么不工作,如果有的话,提供日志。有关您正在使用的 stun 服务器和您创建的 android 应用程序的更多信息。这些不清楚的问题永远无法解决您的疑问,请帮助我们为您提供帮助。
  • 我添加了更多信息,@UtsavShrestha
  • 不清楚你为什么认为这是一个 STUN 问题。
  • 第一个想法是我的网络的 NAT 问题,但是 IOS 应用程序如何工作?我不知道去哪里以及寻找什么@mattm
  • @Garret 不同网络还是同一个网络?因为如果他们在不同的网络后面,如果一个需要 TURN 服务器而另一个不需要,这是完全可以理解的。

标签: android webrtc stun turn


【解决方案1】:

从评论链来看,Android 应用似乎在对称 NAT 之后。这通常是需要 TURN 服务器的原因。对称 NAT 后面的端点不能直接与另一个对称 NAT 或端口受限 NAT 后面的端点通信。

所以,假设这是正在发生的事情,你无能为力;这是需要 TURN 服务器的情况之一。

【讨论】:

  • 对称 NAT 在不使用 wifi 并使用运营商网络时很常见。
  • @Taylor Brandstetter STUN 服务器发送带有典型中继的 ICE 吗?如果 IOS 应用使用 TURN 服务器,我可以通过 ICE 确定吗?
  • @Garret STUN 服务器只提供“srflx”候选; “接力”候选人是 TURN 候选人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多