0

我们正在我们的应用程序中实现 Webrtc。库版本:implementation 'org.webrtc:google-webrtc:1.0.30039'. 在 Android 上,它只生成 UDP ICE 候选者,在 IOS 上生成 UDP 和 TCP,尽管 lib 版本在两者上都是最新的,并且设置大致相同。我们认为因为一些需要 TURN 的调用不会立即工作,而是在重新连接后,当 webrtc 库将其状态更改为失败时,我们重新发送一个报价,其中已经包含 ICE。这是我对 Peerconnection 的设置:

  PeerConnection.RTCConfiguration rtcConfig =
            new PeerConnection.RTCConfiguration(peerIceServers);
    rtcConfig.tcpCandidatePolicy = PeerConnection.TcpCandidatePolicy.ENABLED;
    rtcConfig.bundlePolicy = PeerConnection.BundlePolicy.MAXBUNDLE;
    rtcConfig.rtcpMuxPolicy = PeerConnection.RtcpMuxPolicy.REQUIRE;
    rtcConfig.continualGatheringPolicy = PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY;
    // Use ECDSA encryption.
    rtcConfig.keyType = PeerConnection.KeyType.ECDSA;

为了使 Webrtc 库也生成 TCP ICE,我应该设置什么样的设置?

4

1 回答 1

0

通过双重生成报价并发送第二个报价已解决了该问题。事实证明,第二个报价已经包含 ICE,仍然仅限 UDP,无需单独发送。我不知道为什么,但它有帮助。

于 2020-05-15T17:58:07.553 回答