WebRTC 屏幕共享不适用于美国的 LTE

WebRTC screen share not working on LTE in USA

我正在开发一个 Android 使用 webRTC 进行远程屏幕共享的应用程序。对于 STUN 服务器,我使用 google stun 服务器。它在印度的 WIFI 和 LTE 上运行良好。在美国,它不支持 LTE,但支持 WIFI。

首先,我只使用了 STUN 服务器,然后现在结合了 STUN 和 TURN 服务器,但没有用。

下面是我的代码,

val iceServers = ArrayList<PeerConnection.IceServer>()
iceServers.add(PeerConnection.IceServer("stun:stun.l.google.com:19302"))
iceServers.add(PeerConnection.IceServer("turn:13.250.13.83:3478?transport=udp", "YzYNCouZM1mhqhmseWk6", "YzYNCouZM1mhqhmseWk6"))
return iceServers

不过,这在美国的 LTE 上不起作用。

这个 GOOGLE stun 服务器在 LTE 中不适用于美国吗?

使用 STUN、TURN 检查网络连接

在移动设备中查看最新 Chrome 中的这两个链接。

https://networktest.twilio.com

https://test.webrtc.org

可能你可以检查网络是否正常。

可能是 IPv6 问题

同样在韩国,我在使用 IPv6 LTE 移动客户端时遇到了一些问题。有时移动运营商将 IPv6 提供给他们的客户,然后 P2P 连接不起作用。也许那里有同样的问题。

我用 TURN + TCP 解决了。我不知道为什么,但是 IPv6 客户端不支持 UDP。

以下是一些相关文件:

  • Webrtc media over tcp?

    To force strict TCP via TURN server:

    • Use only TURN url with ?transport=tcp
    • Specify iceTransportPolicy:"relay", so that all media will flow via TURN
  • TURN, STUN setting

    Provide TURN and STUN functionality over TCP and UDP:

    sudo turnserver -L <your STUN server\'s IP address> -o -a -f -r red5pro.com
    

    To run the server without TCP:

    sudo turnserver -L <your STUN server\'s IP address> -o -a -f --no-tcp --no-tcp-relay -r red5pro.com
    

    To run STUN only over UDP:

    sudo turnserver -L <your STUN server\'s IP address> -o -a -f --stun-only --no-tcp --no-tcp-relay -r red5pro.com
    
  • What happens when WebRTC shifts to TURN over TCP