webrtcsink: WebRTC Example sometimes produces ICE issue in Browsers
We're using a WebRTC Sink together with the example signalling Proxy and JS Browser Example as Receiver to send livestreams in an internal network from a host to multiple clients. When the Webclients try to connect using gstWebRTCAPI.createConsumerSession
we're experiencing sporadic issues that are logged in the Browser console:
an unrecoverable error occurred during ICE handshake DOMException: Failed to execute 'addIceCandidate' on 'RTCPeerConnection': The remote description was null
Somehow the Browserclient sometimes doesn't receive the remote SDP from the WebRTC Sink host. Here are two log outputs from the signalling proxy server:
Working connection attemp:
2023-05-11T15:23:04.151432Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"startSession\",\"peerId\":\"f7087dde-3a2f-4474-bf8e-08d0c08850ae\"}"))
2023-05-11T15:23:04.151615Z INFO ThreadId(02) gst_plugin_webrtc_signalling::handlers: started a session id=0ae5c8e3-a213-4eb6-ac85-5702fbfeb795 producer_id=f7087dde-3a2f-4474-bf8e-08d0c08850ae consumer_id=e2a707ab-3dee-4b83-96ea-332d8d9ffa45
2023-05-11T15:23:04.361012Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"sdp\":{\"type\":\"offer\",\"sdp\":\"v=0\\r\\no=- 6580819303826195657 0 IN IP4 0.0.0.0\\r\\ns=-\\r\\nt=0 0\\r\\na=ice-options:trickle\\r\\na=group:BUNDLE audio0 video1\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 100\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=ice-ufrag:8ILZoV7ly0fjiV/ofVDwNqvqprYaqaUR\\r\\na=ice-pwd:upvI7XZ+WRDAzxO7ClXCf7ruyNteYnL4\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=sendonly\\r\\na=rtpmap:100 OPUS/48000/2\\r\\na=rtcp-fb:100 transport-cc\\r\\na=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=fmtp:100 sprop-stereo=1;sprop-maxcapturerate=48000\\r\\na=ssrc:2975573705 msid:user1810426795@host-164aa520 webrtctransceiver26\\r\\na=ssrc:2975573705 cname:user1810426795@host-164aa520\\r\\na=mid:audio0\\r\\na=fingerprint:sha-256 20:3B:B8:C8:6D:91:C6:A9:36:46:FB:9C:5E:CD:E1:34:12:C4:92:A7:FB:47:FE:95:8C:31:C9:FB:C8:30:5B:9B\\r\\na=rtcp-mux-only\\r\\nm=video 0 UDP/TLS/RTP/SAVPF 96 97 98 99 101 102 103 104\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=ice-ufrag:8ILZoV7ly0fjiV/ofVDwNqvqprYaqaUR\\r\\na=ice-pwd:upvI7XZ+WRDAzxO7ClXCf7ruyNteYnL4\\r\\na=bundle-only\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=sendonly\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 transport-cc\\r\\na=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=rtpmap:97 H264/90000\\r\\na=rtcp-fb:97 nack\\r\\na=rtcp-fb:97 nack pli\\r\\na=rtcp-fb:97 ccm fir\\r\\na=rtcp-fb:97 transport-cc\\r\\na=fmtp:97 packetization-mode=1;profile-level-id=42c028;level-asymmetry-allowed=1\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtpmap:99 H265/90000\\r\\na=rtcp-fb:99 nack\\r\\na=rtcp-fb:99 nack pli\\r\\na=rtcp-fb:99 ccm fir\\r\\na=rtcp-fb:99 transport-cc\\r\\na=fmtp:99 sprop-vps=QAEMAf//AUAAAAMAAAMAAAMAAAMAeJcCQA==;sprop-sps=QgEBAUAAAAMAAAMAAAMAAAMAeKADwIARB8uWXSkIRkX/jAWoCAgIIAAAAwAgAAADA8E=;sprop-pps=RAHAk3wMyQ==\\r\\na=rtpmap:101 red/90000\\r\\na=rtpmap:102 ulpfec/90000\\r\\na=rtpmap:103 rtx/90000\\r\\na=fmtp:103 apt=96\\r\\na=rtpmap:104 rtx/90000\\r\\na=fmtp:104 apt=101\\r\\na=ssrc-group:FID 3842627032 775587184\\r\\na=ssrc:3842627032 msid:user1810426795@host-164aa520 webrtctransceiver27\\r\\na=ssrc:3842627032 cname:user1810426795@host-164aa520\\r\\na=ssrc:3842627032 msid:user1810426795@host-164aa520 webrtctransceiver27\\r\\na=ssrc:3842627032 cname:user1810426795@host-164aa520\\r\\na=ssrc:3842627032 msid:user1810426795@host-164aa520 webrtctransceiver27\\r\\na=ssrc:3842627032 cname:user1810426795@host-164aa520\\r\\na=ssrc:3842627032 msid:user1810426795@host-164aa520 webrtctransceiver27\\r\\na=ssrc:3842627032 cname:user1810426795@host-164aa520\\r\\na=ssrc:775587184 msid:user1810426795@host-164aa520 webrtctransceiver27\\r\\na=ssrc:775587184 cname:user1810426795@host-164aa520\\r\\na=mid:video1\\r\\na=fingerprint:sha-256 20:3B:B8:C8:6D:91:C6:A9:36:46:FB:9C:5E:CD:E1:34:12:C4:92:A7:FB:47:FE:95:8C:31:C9:FB:C8:30:5B:9B\\r\\na=rtcp-mux-only\\r\\n\"}}"))
2023-05-11T15:23:04.361340Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:1 1 UDP 2015363327 10.173.10.41 57162 typ host\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:23:04.361404Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:2 1 TCP 1015021823 10.173.10.41 9 typ host tcptype active\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:23:04.361461Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:3 1 TCP 1010827519 10.173.10.41 49890 typ host tcptype passive\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:23:04.361521Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:4 1 UDP 1679819007 PUBLICIPHERE 57162 typ srflx raddr 10.173.10.41 rport 57162\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:23:04.361580Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:5 1 TCP 847249663 PUBLICIPHERE 9 typ srflx raddr 10.173.10.41 rport 9 tcptype active\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:23:04.361639Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:6 1 TCP 843055359 PUBLICIPHERE 49890 typ srflx raddr 10.173.10.41 rport 49890 tcptype passive\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:23:04.423488Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"sdp\":{\"type\":\"answer\",\"sdp\":\"v=0\\r\\no=- 2918490131084816995 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE audio0 video1\\r\\na=msid-semantic: WMS\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 100\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:NKrA\\r\\na=ice-pwd:KSXhFx/9k84ltDUnXdR7YcKU\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 13:19:05:57:5A:C4:08:16:84:57:4F:F3:15:6B:A7:48:BA:68:A8:EA:51:B8:8F:10:28:98:FD:07:F7:A7:2D:F6\\r\\na=setup:active\\r\\na=mid:audio0\\r\\na=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:100 OPUS/48000/2\\r\\na=rtcp-fb:100 transport-cc\\r\\na=fmtp:100 minptime=10;useinbandfec=1\\r\\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 101 102 103 104\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:NKrA\\r\\na=ice-pwd:KSXhFx/9k84ltDUnXdR7YcKU\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 13:19:05:57:5A:C4:08:16:84:57:4F:F3:15:6B:A7:48:BA:68:A8:EA:51:B8:8F:10:28:98:FD:07:F7:A7:2D:F6\\r\\na=setup:active\\r\\na=mid:video1\\r\\na=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:96 VP8/90000\\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 H264/90000\\r\\na=rtcp-fb:97 transport-cc\\r\\na=rtcp-fb:97 ccm fir\\r\\na=rtcp-fb:97 nack\\r\\na=rtcp-fb:97 nack pli\\r\\na=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\r\\na=rtpmap:98 VP9/90000\\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=fmtp:98 profile-id=0\\r\\na=rtpmap:101 red/90000\\r\\na=rtpmap:102 ulpfec/90000\\r\\na=rtpmap:103 rtx/90000\\r\\na=fmtp:103 apt=96\\r\\na=rtpmap:104 rtx/90000\\r\\na=fmtp:104 apt=101\\r\\n\"}}"))
2023-05-11T15:23:04.425203Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"0ae5c8e3-a213-4eb6-ac85-5702fbfeb795\",\"ice\":{\"candidate\":\"candidate:2706590737 1 udp 2113937151 484069b2-ab3b-40ac-bab3-d4086ac67815.local 52871 typ host generation 0 ufrag NKrA network-cost 999\",\"sdpMid\":\"audio0\",\"sdpMLineIndex\":0,\"usernameFragment\":\"NKrA\"}}"))
Not working connection attemp:
2023-05-11T15:21:32.599344Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"startSession\",\"peerId\":\"f7087dde-3a2f-4474-bf8e-08d0c08850ae\"}"))
2023-05-11T15:21:32.600139Z INFO ThreadId(15) gst_plugin_webrtc_signalling::handlers: started a session id=933018cf-9617-40e8-8e0b-96bdd1988224 producer_id=f7087dde-3a2f-4474-bf8e-08d0c08850ae consumer_id=e2a707ab-3dee-4b83-96ea-332d8d9ffa45
2023-05-11T15:21:32.993447Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"sdp\":{\"type\":\"offer\",\"sdp\":\"v=0\\r\\no=- 315125339719130857 0 IN IP4 0.0.0.0\\r\\ns=-\\r\\nt=0 0\\r\\na=ice-options:trickle\\r\\na=group:BUNDLE audio0 video1\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 100\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=ice-ufrag:pHs8PoHW4X3YjNp0pO9vcfI4hm0DAFop\\r\\na=ice-pwd:GEj0s+T2B0fxxR0injenpFSaWTBWGlM5\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=sendonly\\r\\na=rtpmap:100 OPUS/48000/2\\r\\na=rtcp-fb:100 transport-cc\\r\\na=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=fmtp:100 sprop-stereo=1;sprop-maxcapturerate=48000\\r\\na=ssrc:3553971006 msid:user3683149181@host-649fc79a webrtctransceiver0\\r\\na=ssrc:3553971006 cname:user3683149181@host-649fc79a\\r\\na=mid:audio0\\r\\na=fingerprint:sha-256 20:3B:B8:C8:6D:91:C6:A9:36:46:FB:9C:5E:CD:E1:34:12:C4:92:A7:FB:47:FE:95:8C:31:C9:FB:C8:30:5B:9B\\r\\na=rtcp-mux-only\\r\\nm=video 0 UDP/TLS/RTP/SAVPF 96 97 98 99 101 102 103 104\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=ice-ufrag:pHs8PoHW4X3YjNp0pO9vcfI4hm0DAFop\\r\\na=ice-pwd:GEj0s+T2B0fxxR0injenpFSaWTBWGlM5\\r\\na=bundle-only\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=sendonly\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 transport-cc\\r\\na=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=rtpmap:97 H264/90000\\r\\na=rtcp-fb:97 nack\\r\\na=rtcp-fb:97 nack pli\\r\\na=rtcp-fb:97 ccm fir\\r\\na=rtcp-fb:97 transport-cc\\r\\na=fmtp:97 packetization-mode=1;profile-level-id=42c028;level-asymmetry-allowed=1\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtpmap:99 H265/90000\\r\\na=rtcp-fb:99 nack\\r\\na=rtcp-fb:99 nack pli\\r\\na=rtcp-fb:99 ccm fir\\r\\na=rtcp-fb:99 transport-cc\\r\\na=fmtp:99 sprop-vps=QAEMAf//AUAAAAMAAAMAAAMAAAMAeJcCQA==;sprop-sps=QgEBAUAAAAMAAAMAAAMAAAMAeKADwIARB8uWXSkIRkX/jAWoCAgIIAAAAwAgAAADA8E=;sprop-pps=RAHAk3wMyQ==\\r\\na=rtpmap:101 red/90000\\r\\na=rtpmap:102 ulpfec/90000\\r\\na=rtpmap:103 rtx/90000\\r\\na=fmtp:103 apt=96\\r\\na=rtpmap:104 rtx/90000\\r\\na=fmtp:104 apt=101\\r\\na=ssrc-group:FID 3457387863 3814940822\\r\\na=ssrc:3457387863 msid:user3683149181@host-649fc79a webrtctransceiver1\\r\\na=ssrc:3457387863 cname:user3683149181@host-649fc79a\\r\\na=ssrc:3457387863 msid:user3683149181@host-649fc79a webrtctransceiver1\\r\\na=ssrc:3457387863 cname:user3683149181@host-649fc79a\\r\\na=ssrc:3457387863 msid:user3683149181@host-649fc79a webrtctransceiver1\\r\\na=ssrc:3457387863 cname:user3683149181@host-649fc79a\\r\\na=ssrc:3457387863 msid:user3683149181@host-649fc79a webrtctransceiver1\\r\\na=ssrc:3457387863 cname:user3683149181@host-649fc79a\\r\\na=ssrc:3814940822 msid:user3683149181@host-649fc79a webrtctransceiver1\\r\\na=ssrc:3814940822 cname:user3683149181@host-649fc79a\\r\\na=mid:video1\\r\\na=fingerprint:sha-256 20:3B:B8:C8:6D:91:C6:A9:36:46:FB:9C:5E:CD:E1:34:12:C4:92:A7:FB:47:FE:95:8C:31:C9:FB:C8:30:5B:9B\\r\\na=rtcp-mux-only\\r\\n\"}}"))
2023-05-11T15:21:32.994183Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"ice\":{\"candidate\":\"candidate:1 1 UDP 2015363327 10.173.10.41 59501 typ host\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:21:32.994241Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"ice\":{\"candidate\":\"candidate:2 1 TCP 1015021823 10.173.10.41 9 typ host tcptype active\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:21:32.994296Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"ice\":{\"candidate\":\"candidate:3 1 TCP 1010827519 10.173.10.41 49875 typ host tcptype passive\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:21:32.994349Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"ice\":{\"candidate\":\"candidate:4 1 UDP 1679819007 PUBLICIPHERE 59501 typ srflx raddr 10.173.10.41 rport 59501\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:21:32.994404Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"ice\":{\"candidate\":\"candidate:5 1 TCP 847249663 PUBLICIPHERE 9 typ srflx raddr 10.173.10.41 rport 9 tcptype active\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:21:32.994514Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"peer\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\",\"ice\":{\"candidate\":\"candidate:6 1 TCP 843055359 PUBLICIPHERE 49875 typ srflx raddr 10.173.10.41 rport 49875 tcptype passive\",\"sdpMLineIndex\":0}}"))
2023-05-11T15:21:33.115416Z INFO ThreadId(15) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"endSession\",\"sessionId\":\"933018cf-9617-40e8-8e0b-96bdd1988224\"}"))
Note that in the not working attemp there is no SDP answer and canidate which is there in the working attemp.
Any ideas how this can occur? Can we do anything to further track down this issue?
Thanks, Joshua