首页 > 解决方案 > 为什么 iOS WebRTC 在某些运营商的 LTE/4G 中不断断开和重新连接

问题描述

WebRTC 通话在 Wifi、VPN 和大多数蜂窝运营商中运行良好。有时 peerConnection 会不断断开并重新连接,从而破坏音频。

我们正在使用公共 STUN 服务器,例如stun.services.mozilla.comstun:stun.l.google.com:19302。我们的 TURN 服务器工作正常。如果我们只使用 TURN 服务器,调用就可以正常工作。

我正在提供断开呼叫的 SDP 和 ICE。

提供 SDP:

v=0\r\no=- 4172632258566879950 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS stream0\r\nm=audio 9 UDP\/TLS\/RTP\/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\nb=AS:100\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:A\/A5\r\na=ice-pwd:q++LMQQkQDpXCDuDN5hc8fb5\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 3C:71:C3:0A:3D:7D:0D:59:B0:16:3B:2F:35:B2:1F:4B:B2:DF:FE:4C:58:B8:8E:00:89:1C:90:08:F2:29:BB:3D\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=extmap:3 http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:stream0 audio0\r\na=rtcp-mux\r\na=rtpmap:111 opus\/48000\/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC\/16000\r\na=rtpmap:104 ISAC\/32000\r\na=rtpmap:9 G722\/8000\r\na=rtpmap:102 ILBC\/8000\r\na=rtpmap:0 PCMU\/8000\r\na=rtpmap:8 PCMA\/8000\r\na=rtpmap:106 CN\/32000\r\na=rtpmap:105 CN\/16000\r\na=rtpmap:13 CN\/8000\r\na=rtpmap:110 telephone-event\/48000\r\na=rtpmap:112 telephone-event\/32000\r\na=rtpmap:113 telephone-event\/16000\r\na=rtpmap:126 telephone-event\/8000\r\na=ssrc:3543196531 cname:oMZZP7Hbx628+UbM\r\na=ssrc:3543196531 msid:stream0 audio0\r\na=ssrc:3543196531 mslabel:stream0\r\na=ssrc:3543196531 label:audio0\r\n

冰候选人:

"candidate" : "candidate:3700740912 1 udp 2122260223 10.143.6.123 50584 typ host generation 0 ufrag 84ZF network-id 5 network-cost 900"
"candidate" : "candidate:1798952569 1 udp 2122194687 10.233.131.139 51549 typ host generation 0 ufrag 84ZF network-id 6 network-cost 900"
"candidate" : "candidate:1798952569 1 udp 2122129151 10.233.131.139 50701 typ host generation 0 ufrag 84ZF network-id 1 network-cost 50",
"candidate" : "candidate:1798952569 1 udp 2122063615 10.233.131.139 58015 typ host generation 0 ufrag 84ZF network-id 2 network-cost 50"
"candidate" : "candidate:3700740912 1 udp 2122260223 10.143.6.123 65317 typ host generation 1 ufrag A\/A5 network-id 5 network-cost 900",
"candidate" : "candidate:1798952569 1 udp 2122194687 10.233.131.139 64304 typ host generation 1 ufrag A\/A5 network-id 6 network-cost 900",
"candidate" : "candidate:1798952569 1 udp 2122129151 10.233.131.139 65194 typ host generation 1 ufrag A\/A5 network-id 1 network-cost 50",
"candidate" : "candidate:1798952569 1 udp 2122063615 10.233.131.139 63703 typ host generation 1 ufrag A\/A5 network-id 2 network-cost 50",
"candidate" : "candidate:713337572 1 udp 1686052607 51.39.192.20 1682 typ srflx raddr 10.143.6.123 rport 50584 generation 0 ufrag 84ZF network-id 5 network-cost 900",
"candidate" : "candidate:713337572 1 udp 1686052607 51.39.192.20 1683 typ srflx raddr 10.143.6.123 rport 65317 generation 1 ufrag A\/A5 network-id 5 network-cost 900",
"candidate" : "candidate:4229289395 1 udp 41885695 34.76.46.53 57332 typ relay raddr 51.39.192.20 rport 1683 generation 1 ufrag A\/A5 network-id 5 network-cost 900"

回答 SDP:

v=0\r\no=- 1423705976133154216 3 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS stream0\r\nm=audio 9 UDP\/TLS\/RTP\/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\nb=AS:100\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:y4G2\r\na=ice-pwd:CdiMVxIWPuocayORU+B6CiAK\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 66:79:BE:67:B4:47:1D:0B:4D:5E:52:2B:AE:B8:F9:E0:92:84:F0:6D:F4:30:AE:33:1B:20:BC:B5:1B:82:B1:D6\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=extmap:3 http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:stream0 audio0\r\na=rtcp-mux\r\na=rtpmap:111 opus\/48000\/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC\/16000\r\na=rtpmap:104 ISAC\/32000\r\na=rtpmap:9 G722\/8000\r\na=rtpmap:102 ILBC\/8000\r\na=rtpmap:0 PCMU\/8000\r\na=rtpmap:8 PCMA\/8000\r\na=rtpmap:106 CN\/32000\r\na=rtpmap:105 CN\/16000\r\na=rtpmap:13 CN\/8000\r\na=rtpmap:110 telephone-event\/48000\r\na=rtpmap:112 telephone-event\/32000\r\na=rtpmap:113 telephone-event\/16000\r\na=rtpmap:126 telephone-event\/8000\r\na=ssrc:88754471 cname:Wh+Qws5GKqMpg17J\r\n

冰候选人:


"candidate" : "candidate:970003985 1 udp 2122260223 10.143.52.119 51961 typ host generation 0 ufrag gfYY network-id 13 network-cost 900",
"candidate" : "candidate:4005992910 1 udp 2122194687 100.116.32.182 52124 typ host generation 0 ufrag gfYY network-id 14 network-cost 900",
"candidate" : "candidate:1653955087 1 udp 2122134271 fd74:6572:6d6e:7573:c:8cab:882e:fb77 58617 typ host generation 0 ufrag gfYY network-id 2 network-cost 50",
"candidate" : "candidate:682348868 1 udp 2122068735 fd74:6572:6d6e:7573:d:8cab:882e:fb77 62719 typ host generation 0 ufrag gfYY network-id 3 network-cost 50"
"candidate" : "candidate:1653955087 1 udp 2122003199 fd74:6572:6d6e:7573:c:8cab:882e:fb77 52309 typ host generation 0 ufrag gfYY network-id 5 network-cost 50"
"candidate" : "candidate:1653955087 1 udp 2121937663 fd74:6572:6d6e:7573:c:8cab:882e:fb77 57335 typ host generation 0 ufrag gfYY network-id 7 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121867007 100.116.32.182 57839 typ host generation 0 ufrag gfYY network-id 1 network-cost 50"
"candidate" : "candidate:2486661909 1 udp 2121801471 10.254.254.254 49758 typ host generation 0 ufrag gfYY network-id 4 network-cost 50",
"candidate" : "candidate:2486661909 1 udp 2121735935 10.254.254.254 52294 typ host generation 0 ufrag gfYY network-id 6 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121670399 100.116.32.182 51897 typ host generation 0 ufrag gfYY network-id 8 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121604863 100.116.32.182 61504 typ host generation 0 ufrag gfYY network-id 9 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121539327 100.116.32.182 56753 typ host generation 0 ufrag gfYY network-id 10 network-cost 50"
"candidate" : "candidate:970003985 1 udp 2122260223 10.143.52.119 51627 typ host generation 1 ufrag y4G2 network-id 13 network-cost 900",
"candidate" : "candidate:4005992910 1 udp 2122194687 100.116.32.182 53004 typ host generation 1 ufrag y4G2 network-id 14 network-cost 900"
"candidate" : "candidate:1653955087 1 udp 2122134271 fd74:6572:6d6e:7573:c:8cab:882e:fb77 55726 typ host generation 1 ufrag y4G2 network-id 2 network-cost 50",
"candidate" : "candidate:682348868 1 udp 2122068735 fd74:6572:6d6e:7573:d:8cab:882e:fb77 53467 typ host generation 1 ufrag y4G2 network-id 3 network-cost 50"
"candidate" : "candidate:1653955087 1 udp 2122003199 fd74:6572:6d6e:7573:c:8cab:882e:fb77 52434 typ host generation 1 ufrag y4G2 network-id 5 network-cost 50",
"candidate" : "candidate:1653955087 1 udp 2121937663 fd74:6572:6d6e:7573:c:8cab:882e:fb77 51877 typ host generation 1 ufrag y4G2 network-id 7 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121867007 100.116.32.182 56486 typ host generation 1 ufrag y4G2 network-id 1 network-cost 50",
"candidate" : "candidate:2486661909 1 udp 2121801471 10.254.254.254 53000 typ host generation 1 ufrag y4G2 network-id 4 network-cost 50",
"candidate" : "candidate:2486661909 1 udp 2121735935 10.254.254.254 53627 typ host generation 1 ufrag y4G2 network-id 6 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121670399 100.116.32.182 52042 typ host generation 1 ufrag y4G2 network-id 8 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121604863 100.116.32.182 64341 typ host generation 1 ufrag y4G2 network-id 9 network-cost 50",
"candidate" : "candidate:4005992910 1 udp 2121539327 100.116.32.182 65433 typ host generation 1 ufrag y4G2 network-id 10 network-cost 50"

Ice谈判完成后,我得到

2021/01/14 20:02:10:663  peerConnection new connection state: connected
2021/01/14 20:02:21:044  peerConnection new connection state: disconnected
2021/01/14 20:02:21:163  peerConnection new connection state: connected
...

就这样继续下去。

在 Android 中,相同的实现工作正常。只有在 iOS 上,我们才面临这个问题。我们正在使用官方 SDK GoogleWebRTC

任何帮助,将不胜感激。

标签: ioswebrtc

解决方案


推荐阅读