ios - 为什么 iOS WebRTC 在某些运营商的 LTE/4G 中不断断开和重新连接
问题描述
WebRTC 通话在 Wifi、VPN 和大多数蜂窝运营商中运行良好。有时 peerConnection 会不断断开并重新连接,从而破坏音频。
我们正在使用公共 STUN 服务器,例如stun.services.mozilla.com
和stun: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
。
任何帮助,将不胜感激。
解决方案
推荐阅读
- python - ValueError:无法在位置 0 解析字符串“不存在”
- lua - init.lua:389: 未找到模块“hdf5”:未找到 hdf5 的 LuaRocks 模块
- ios - 在 Firebase 数据库中的 MKMapView 上放置多个标记
- c# - 无法启动服务挂载被拒绝 '/usr/local/share/dotnet/sdk/NuGetFallbackFolder\r\n' 不是来自 macOS X 的共享并且 docker 不知道
- input - 如何阻止在输入标签上输入“qq.com”?
- python - Codechef 上的错误答案
- c# - 如何在应用程序内关闭时重新启动应用程序
- google-sheets - 如何使用列作为标识符
- python - pycharm可以通过ssh连接wsl但不能在wsl中使用python
- javascript - 仅在没有 jQuery 的情况下完成 first 后调用语句