flutter-webrtc / flutter-webrtc-demo

Demo for flutter-webrtc
MIT License
1.16k stars 418 forks source link

P2P Call work same LAN but not working different LAN #75

Closed azamshahriar closed 3 years ago

azamshahriar commented 4 years ago

Dear Concern, I am testing P2P call. I write my own signalling server for sending sdp and candidate and google stun server. When 2 devices in same network then video work, when different network remote videos don't work.

--------------------------My candidates and SDP from my signalling server-------------------- ``` {"event":"offer","data":{"to":"azam","from":"01674242986","description":{"sdp":"v=0\r\no=- 5850992512156981418 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS 4ab3d955-82c4-43d4-801f-0897b12ca896\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\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:pXja\r\na=ice-pwd:48tsPiRtzXHzxxoYoB5s/gzk\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 EF:D7:E8:D1:4B:C8:E0:CB:A6:1A:A2:52:BE:F7:9D:76:3A:EE:9F:6A:8B:5F:2D:CE:77:09:81:95:B4:3A:B0:E7\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=sendrecv\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:4252778928 cname:dF2Ze9cye3dbbUQ9\r\na=ssrc:4252778928 msid:4ab3d955-82c4-43d4-801f-0897b12ca896 38e70597-d818-4e70-b77f-600d4c299947\r\na=ssrc:4252778928 mslabel:4ab3d955-82c4-43d4-801f-0897b12ca896\r\na=ssrc:4252778928 label:38e70597-d818-4e70-b77f-600d4c299947\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 123 125 122 124\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:pXja\r\na=ice-pwd:48tsPiRtzXHzxxoYoB5s/gzk\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 EF:D7:E8:D1:4B:C8:E0:CB:A6:1A:A2:52:BE:F7:9D:76:3A:EE:9F:6A:8B:5F:2D:CE:77:09:81:95:B4:3A:B0:E7\r\na=setup:actpass\r\na=mid:video\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640c1f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:123 rtx/90000\r\na=fmtp:123 apt=127\r\na=rtpmap:125 red/90000\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=125\r\na=rtpmap:124 ulpfec/90000\r\na=ssrc-group:FID 1077594285 1737101324\r\na=ssrc:1077594285 cname:dF2Ze9cye3dbbUQ9\r\na=ssrc:1077594285 msid:4ab3d955-82c4-43d4-801f-0897b12ca896 fb0893e5-9c1a-4183-a1d9-4babb7e65679\r\na=ssrc:1077594285 mslabel:4ab3d955-82c4-43d4-801f-0897b12ca896\r\na=ssrc:1077594285 label:fb0893e5-9c1a-4183-a1d9-4babb7e65679\r\na=ssrc:1737101324 cname:dF2Ze9cye3dbbUQ9\r\na=ssrc:1737101324 msid:4ab3d955-82c4-43d4-801f-0897b12ca896 fb0893e5-9c1a-4183-a1d9-4babb7e65679\r\na=ssrc:1737101324 mslabel:4ab3d955-82c4-43d4-801f-0897b12ca896\r\na=ssrc:1737101324 label:fb0893e5-9c1a-4183-a1d9-4babb7e65679\r\n","type":"offer"},"session_id":"01674242986-azam","media":"video"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:4278134664 1 udp 2122260223 192.168.1.8 57125 typ host generation 0 ufrag pXja network-id 3 network-cost 10"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:559267639 1 udp 2122202367 ::1 50340 typ host generation 0 ufrag pXja network-id 2"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:1510613869 1 udp 2122129151 127.0.0.1 34929 typ host generation 0 ufrag pXja network-id 1"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:4278134664 1 udp 2122260223 192.168.1.8 46841 typ host generation 0 ufrag pXja network-id 3 network-cost 10"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:559267639 1 udp 2122202367 ::1 36889 typ host generation 0 ufrag pXja network-id 2"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:1510613869 1 udp 2122129151 127.0.0.1 42839 typ host generation 0 ufrag pXja network-id 1"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:1876313031 1 tcp 1518222591 ::1 36167 typ host tcptype passive generation 0 ufrag pXja network-id 2"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:344579997 1 tcp 1518149375 127.0.0.1 42965 typ host tcptype passive generation 0 ufrag pXja network-id 1"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:1876313031 1 tcp 1518222591 ::1 58947 typ host tcptype passive generation 0 ufrag pXja network-id 2"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:344579997 1 tcp 1518149375 127.0.0.1 52129 typ host tcptype passive generation 0 ufrag pXja network-id 1"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:842163049 1 udp 1686052607 27.147.206.100 57125 typ srflx raddr 192.168.1.8 rport 57125 generation 0 ufrag pXja network-id 3 network-cost 10"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"azam","from":"01674242986","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:842163049 1 udp 1686052607 27.147.206.100 46841 typ srflx raddr 192.168.1.8 rport 46841 generation 0 ufrag pXja network-id 3 network-cost 10"},"session_id":"01674242986-azam"}} {"event":"answer","data":{"to":"01674242986","from":"azam","description":{"sdp":"v=0\r\no=- 2848375437411985773 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS 03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5\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\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:QQd0\r\na=ice-pwd:u2Er+qkFve1TdIPuqfOR8coB\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 7A:9F:24:58:0F:E7:18:77:14:73:89:64:7B:C7:86:9F:C5:46:D7:73:4F:1C:39:C7:66:2C:EE:F8:60:FC:C4:14\r\na=setup:active\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=sendrecv\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:3158218155 cname:8LLX+GF9IyFKX+Rz\r\na=ssrc:3158218155 msid:03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5 b0c86fa3-e758-400f-88f1-a9d094b0d725\r\na=ssrc:3158218155 mslabel:03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5\r\na=ssrc:3158218155 label:b0c86fa3-e758-400f-88f1-a9d094b0d725\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 123 125 122 124\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:QQd0\r\na=ice-pwd:u2Er+qkFve1TdIPuqfOR8coB\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 7A:9F:24:58:0F:E7:18:77:14:73:89:64:7B:C7:86:9F:C5:46:D7:73:4F:1C:39:C7:66:2C:EE:F8:60:FC:C4:14\r\na=setup:active\r\na=mid:video\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640c1f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:123 rtx/90000\r\na=fmtp:123 apt=127\r\na=rtpmap:125 red/90000\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=125\r\na=rtpmap:124 ulpfec/90000\r\na=ssrc-group:FID 2871171728 3690008496\r\na=ssrc:2871171728 cname:8LLX+GF9IyFKX+Rz\r\na=ssrc:2871171728 msid:03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5 dc212a2f-cf1e-4d55-9940-86ad9a050eef\r\na=ssrc:2871171728 mslabel:03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5\r\na=ssrc:2871171728 label:dc212a2f-cf1e-4d55-9940-86ad9a050eef\r\na=ssrc:3690008496 cname:8LLX+GF9IyFKX+Rz\r\na=ssrc:3690008496 msid:03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5 dc212a2f-cf1e-4d55-9940-86ad9a050eef\r\na=ssrc:3690008496 mslabel:03ad6bd9-de4a-4002-99c7-a3a9c6ff7eb5\r\na=ssrc:3690008496 label:dc212a2f-cf1e-4d55-9940-86ad9a050eef\r\n","type":"answer"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"01674242986","from":"azam","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:505434299 1 udp 2122260223 192.168.1.6 46393 typ host generation 0 ufrag QQd0 network-id 3 network-cost 10"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"01674242986","from":"azam","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:559267639 1 udp 2122202367 ::1 59199 typ host generation 0 ufrag QQd0 network-id 2"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"01674242986","from":"azam","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:1510613869 1 udp 2122129151 127.0.0.1 55430 typ host generation 0 ufrag QQd0 network-id 1"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"01674242986","from":"azam","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:842163049 1 udp 1686052607 27.147.206.100 46393 typ srflx raddr 192.168.1.6 rport 46393 generation 0 ufrag QQd0 network-id 3 network-cost 10"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"01674242986","from":"azam","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:1876313031 1 tcp 1518222591 ::1 44741 typ host tcptype passive generation 0 ufrag QQd0 network-id 2"},"session_id":"01674242986-azam"}} {"event":"candidate","data":{"to":"01674242986","from":"azam","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:344579997 1 tcp 1518149375 127.0.0.1 49429 typ host tcptype passive generation 0 ufrag QQd0 network-id 1"},"sessionid":"01674242986-azam"}}



 Do I need turn server or overwrite priority of candidate at my signaling server or anything else?
kjpopov commented 4 years ago

I have experienced the same issue, if turn server is needed can someone contribute an example please.

ycherniavskyi commented 4 years ago

The necessity of TURN server depends on the type of NAT in both of your different networks. In general, if you can control these NATs then theoretically you can configure them be WebRTC friendly, another way you need TURN (or SFU/MCU server).

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.