将 TURN 服务器添加到 android webRtc native

Add TURN server to android webRtc native

我正在开发 WebRtc 本机 android 应用程序。我也在编译 io.pristine 库。只有当两个设备都连接到 wifi 时,我才能在两个设备之间建立通话。如果其中一台设备连接到蜂窝网络,则无法建立呼叫。我在那里阅读了任何可能的论坛,看起来我需要 TURN 服务器。我已经 运行 我自己的 TURN 服务器,但不知道如何强制应用程序使用此服务器。欢迎任何帮助。谢谢!!

创建PeerConnection时需要设置TURN服务器。

它将是这样的:

    // Set ICE servers
    List<PeerConnection.IceServer> iceServers = new ArrayList<>();
    iceServers.add(new org.webrtc.PeerConnection.IceServer("stun:xxx.xxx.xxx.xxx"));
    iceServers.add(new org.webrtc.PeerConnection.IceServer("turn:xxx.xxx.xxx.xxx:3478", "username", "credential"));

    // Create peer connection
    final PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
    PeerConnectionFactory factory = new PeerConnectionFactory(new PeerConnectionFactory.Options());
    MediaConstraints constraints = new MediaConstraints();
    PeerConnection peerConnection = factory.createPeerConnection(iceServers, constraints, new YourPeerConnectionObserver());

我没有运行这个代码,但你应该明白了。

WebRTC 弃用旧 API 创建 ICE 服务器。 ()

要创建 ICE 服务器,您需要使用 IceServer 构建器模式。

 PeerConnection.IceServer stun =  PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer();
 PeerConnection.IceServer turn =  PeerConnection.IceServer.builder("turn:numb.viagenie.ca").setUsername("webrtc@live.com").setPassword("muazkh").createIceServer();