muaz-khan / RTCMultiConnection

RTCMultiConnection is a WebRTC JavaScript library for peer-to-peer applications (screen sharing, audio/video conferencing, file sharing, media streaming etc.)
https://muazkhan.com:9001/
MIT License
2.56k stars 1.38k forks source link

addStream/removeStream setRemoteDescription #726

Open burak1489 opened 5 years ago

burak1489 commented 5 years ago

Hi Muaz,

thank you for this nice piece of work.

I get the following errors after adding and removing a couple of streams in a chat room for multiple times at the same time (sometimes it's working only once, sometimes i can add/remove streams up to 4-5 times)

DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Called in wrong state: kStable

v=0 o=- 6792446638475752600 17 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a=msid-semantic: WMS sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg m=application 53337 DTLS/SCTP 5000 c=IN IP4 192.168.1.101 a=candidate:186199869 1 udp 2122260223 192.168.1.101 53337 typ host generation 0 network-id 1 network-cost 10 a=candidate:1167774669 1 tcp 1518280447 192.168.1.101 9 typ host tcptype active generation 0 network-id 1 network-cost 10 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:0 a=sctpmap:5000 webrtc-datachannel 1024 m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:1 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg 66880f65-bc6a-4ce8-a4c1-81696e38adb5 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:2129559723 cname:YkXYcVRb8J1shx5m a=ssrc:2129559723 msid:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg 66880f65-bc6a-4ce8-a4c1-81696e38adb5 a=ssrc:2129559723 mslabel:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg a=ssrc:2129559723 label:66880f65-bc6a-4ce8-a4c1-81696e38adb5 m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:2 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg 1821ba1c-e8c9-4b55-8346-92d90c43bc6e a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 2666198384 1309412914 a=ssrc:2666198384 cname:YkXYcVRb8J1shx5m a=ssrc:2666198384 msid:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg 1821ba1c-e8c9-4b55-8346-92d90c43bc6e a=ssrc:2666198384 mslabel:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg a=ssrc:2666198384 label:1821ba1c-e8c9-4b55-8346-92d90c43bc6e a=ssrc:1309412914 cname:YkXYcVRb8J1shx5m a=ssrc:1309412914 msid:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg 1821ba1c-e8c9-4b55-8346-92d90c43bc6e a=ssrc:1309412914 mslabel:sz3p7bomqT1Unss08ffYPWmQTGUH0nKymJzg a=ssrc:1309412914 label:1821ba1c-e8c9-4b55-8346-92d90c43bc6e m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:3 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe 9494d3ad-0ca5-4221-bc8c-79e77e977f1c a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:3102793224 cname:YkXYcVRb8J1shx5m a=ssrc:3102793224 msid:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe 9494d3ad-0ca5-4221-bc8c-79e77e977f1c a=ssrc:3102793224 mslabel:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe a=ssrc:3102793224 label:9494d3ad-0ca5-4221-bc8c-79e77e977f1c m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:4 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe 5074ccb6-83c5-40b1-9e41-24370d12cd7e a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 1522384615 2759005834 a=ssrc:1522384615 cname:YkXYcVRb8J1shx5m a=ssrc:1522384615 msid:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe 5074ccb6-83c5-40b1-9e41-24370d12cd7e a=ssrc:1522384615 mslabel:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe a=ssrc:1522384615 label:5074ccb6-83c5-40b1-9e41-24370d12cd7e a=ssrc:2759005834 cname:YkXYcVRb8J1shx5m a=ssrc:2759005834 msid:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe 5074ccb6-83c5-40b1-9e41-24370d12cd7e a=ssrc:2759005834 mslabel:CdrtM6YBbZP4nFlZBwMPPy6h3tj2Pi9OdxFe a=ssrc:2759005834 label:5074ccb6-83c5-40b1-9e41-24370d12cd7e m=audio 27360 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 85.106.105.239 a=rtcp:9 IN IP4 0.0.0.0 a=candidate:186199869 1 udp 2122260223 192.168.1.101 51388 typ host generation 0 network-id 1 network-cost 10 a=candidate:2320574857 1 udp 1686052607 85.106.105.239 27360 typ srflx raddr 192.168.1.101 rport 51388 generation 0 network-id 1 network-cost 10 a=candidate:1167774669 1 tcp 1518280447 192.168.1.101 9 typ host tcptype active generation 0 network-id 1 network-cost 10 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:5 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F a66f4659-bbb8-4540-b008-d7149c628d62 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:1337857918 cname:YkXYcVRb8J1shx5m a=ssrc:1337857918 msid:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F a66f4659-bbb8-4540-b008-d7149c628d62 a=ssrc:1337857918 mslabel:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F a=ssrc:1337857918 label:a66f4659-bbb8-4540-b008-d7149c628d62 m=video 28591 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 85.106.105.239 a=rtcp:9 IN IP4 0.0.0.0 a=candidate:186199869 1 udp 2122260223 192.168.1.101 51389 typ host generation 0 network-id 1 network-cost 10 a=candidate:2320574857 1 udp 1686052607 85.106.105.239 28591 typ srflx raddr 192.168.1.101 rport 51389 generation 0 network-id 1 network-cost 10 a=candidate:1167774669 1 tcp 1518280447 192.168.1.101 9 typ host tcptype active generation 0 network-id 1 network-cost 10 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:6 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F 9f4039d4-764c-45e6-9024-cf4b2f5018bf a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 785012082 1740690977 a=ssrc:785012082 cname:YkXYcVRb8J1shx5m a=ssrc:785012082 msid:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F 9f4039d4-764c-45e6-9024-cf4b2f5018bf a=ssrc:785012082 mslabel:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F a=ssrc:785012082 label:9f4039d4-764c-45e6-9024-cf4b2f5018bf a=ssrc:1740690977 cname:YkXYcVRb8J1shx5m a=ssrc:1740690977 msid:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F 9f4039d4-764c-45e6-9024-cf4b2f5018bf a=ssrc:1740690977 mslabel:52AQ3OUcsfn7Q5P1xzz2IKgQ5PFjbKE0X07F a=ssrc:1740690977 label:9f4039d4-764c-45e6-9024-cf4b2f5018bf m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:7 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK eaf33e7d-dc2f-42c4-92d0-66eeb25bbfda a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:3109403042 cname:YkXYcVRb8J1shx5m a=ssrc:3109403042 msid:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK eaf33e7d-dc2f-42c4-92d0-66eeb25bbfda a=ssrc:3109403042 mslabel:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK a=ssrc:3109403042 label:eaf33e7d-dc2f-42c4-92d0-66eeb25bbfda m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:8 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK 76d7f02b-603a-46af-8739-60c18c0d7a2a a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 1689031261 2611519348 a=ssrc:1689031261 cname:YkXYcVRb8J1shx5m a=ssrc:1689031261 msid:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK 76d7f02b-603a-46af-8739-60c18c0d7a2a a=ssrc:1689031261 mslabel:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK a=ssrc:1689031261 label:76d7f02b-603a-46af-8739-60c18c0d7a2a a=ssrc:2611519348 cname:YkXYcVRb8J1shx5m a=ssrc:2611519348 msid:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK 76d7f02b-603a-46af-8739-60c18c0d7a2a a=ssrc:2611519348 mslabel:LTa27zJcoFtSaU9t2KN7vClzIZM2AvJBfZZK a=ssrc:2611519348 label:76d7f02b-603a-46af-8739-60c18c0d7a2a m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:9 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 c7f7972e-4112-4b90-ab3a-9bfafd99869d a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:568616270 cname:YkXYcVRb8J1shx5m a=ssrc:568616270 msid:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 c7f7972e-4112-4b90-ab3a-9bfafd99869d a=ssrc:568616270 mslabel:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 a=ssrc:568616270 label:c7f7972e-4112-4b90-ab3a-9bfafd99869d m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:10 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 02696498-dc3b-4e93-a430-fc15d6fcb2ea a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 4232105322 2455430896 a=ssrc:4232105322 cname:YkXYcVRb8J1shx5m a=ssrc:4232105322 msid:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 02696498-dc3b-4e93-a430-fc15d6fcb2ea a=ssrc:4232105322 mslabel:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 a=ssrc:4232105322 label:02696498-dc3b-4e93-a430-fc15d6fcb2ea a=ssrc:2455430896 cname:YkXYcVRb8J1shx5m a=ssrc:2455430896 msid:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 02696498-dc3b-4e93-a430-fc15d6fcb2ea a=ssrc:2455430896 mslabel:yIJtuNzyDpFSfwTmYfvPYqzmk6yScnzKTk57 a=ssrc:2455430896 label:02696498-dc3b-4e93-a430-fc15d6fcb2ea m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:11 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ e2d692fc-ac2e-4638-8d00-17868cddd256 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:3618144398 cname:YkXYcVRb8J1shx5m a=ssrc:3618144398 msid:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ e2d692fc-ac2e-4638-8d00-17868cddd256 a=ssrc:3618144398 mslabel:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ a=ssrc:3618144398 label:e2d692fc-ac2e-4638-8d00-17868cddd256 m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:12 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ c1e605aa-6018-459c-9caf-835e5eb6099b a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 3721539844 15880601 a=ssrc:3721539844 cname:YkXYcVRb8J1shx5m a=ssrc:3721539844 msid:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ c1e605aa-6018-459c-9caf-835e5eb6099b a=ssrc:3721539844 mslabel:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ a=ssrc:3721539844 label:c1e605aa-6018-459c-9caf-835e5eb6099b a=ssrc:15880601 cname:YkXYcVRb8J1shx5m a=ssrc:15880601 msid:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ c1e605aa-6018-459c-9caf-835e5eb6099b a=ssrc:15880601 mslabel:sGiPsC39jJUApcFgXW05T6uL8Sb5PloohWNQ a=ssrc:15880601 label:c1e605aa-6018-459c-9caf-835e5eb6099b m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:13 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx 2b9e7802-d9f3-4740-a30a-13e74bef35eb a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:3990480399 cname:YkXYcVRb8J1shx5m a=ssrc:3990480399 msid:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx 2b9e7802-d9f3-4740-a30a-13e74bef35eb a=ssrc:3990480399 mslabel:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx a=ssrc:3990480399 label:2b9e7802-d9f3-4740-a30a-13e74bef35eb m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:14 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx 2a6ac40d-32cc-46fb-8196-3a16344ed202 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 3345345318 3693984894 a=ssrc:3345345318 cname:YkXYcVRb8J1shx5m a=ssrc:3345345318 msid:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx 2a6ac40d-32cc-46fb-8196-3a16344ed202 a=ssrc:3345345318 mslabel:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx a=ssrc:3345345318 label:2a6ac40d-32cc-46fb-8196-3a16344ed202 a=ssrc:3693984894 cname:YkXYcVRb8J1shx5m a=ssrc:3693984894 msid:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx 2a6ac40d-32cc-46fb-8196-3a16344ed202 a=ssrc:3693984894 mslabel:Rkid1Rn4nee2vlR3nlXaPrs5K7Xz97Yitgrx a=ssrc:3693984894 label:2a6ac40d-32cc-46fb-8196-3a16344ed202 m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:15 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh cbb25b27-03d9-4aa2-bb34-58995f568c67 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:4088417297 cname:YkXYcVRb8J1shx5m a=ssrc:4088417297 msid:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh cbb25b27-03d9-4aa2-bb34-58995f568c67 a=ssrc:4088417297 mslabel:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh a=ssrc:4088417297 label:cbb25b27-03d9-4aa2-bb34-58995f568c67 m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 122 118 114 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:yF0G a=ice-pwd:YwCj95fxmsMp1JXssAtfN+ux a=ice-options:trickle a=fingerprint:sha-256 BA:C1:76:31:9F:D1:BC:3C:A7:03:58:6B:21:7C:16:30:41:18:B3:B7:BB:59:57:24:B0:FB:B8:E4:66:24:E2:1B a=setup:actpass a=mid:16 a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh 782520e6-40af-4a59-bab8-be07e4bee799 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 H264/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:122 red/90000 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=122 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 767779569 2662952490 a=ssrc:767779569 cname:YkXYcVRb8J1shx5m a=ssrc:767779569 msid:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh 782520e6-40af-4a59-bab8-be07e4bee799 a=ssrc:767779569 mslabel:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh a=ssrc:767779569 label:782520e6-40af-4a59-bab8-be07e4bee799 a=ssrc:2662952490 cname:YkXYcVRb8J1shx5m a=ssrc:2662952490 msid:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh 782520e6-40af-4a59-bab8-be07e4bee799 a=ssrc:2662952490 mslabel:tBrLI1694cr5vLQu0sO7PNdpwgG0OcvsqcLh a=ssrc:2662952490 label:782520e6-40af-4a59-bab8-be07e4bee799

Followed by these ones:

sdp-error DOMException: Failed to execute 'createAnswer' on 'RTCPeerConnection': PeerConnection cannot create an answer in a state other than have-remote-offer or have-local-pranswer.

Uncaught (in promise) DOMException: Failed to execute 'addIceCandidate' on 'RTCPeerConnection': Error processing ICE candidate

You can reproduce a similar error on your demo by quick switches between AddStream and RemoveStream.

"https://rtcmulticonnection.herokuapp.com/demos/addStream-in-Chat-room.html"

Thank you for your help!

ghost commented 5 years ago

Hi. I have the same problem . Found a solution?

burak1489 commented 5 years ago

I read about your issue. I will try today another solution by creating rooms for each stream.

My knowledge about WebRTC is not enough to eliminate this error. Unfortunately I have no time to read in there at the moment.

muaz-khan commented 5 years ago

Please use replaceTrack rather than add/remove streams. Same as I'm doing in this demo:

Unified-plan is bringing multi-similar-tracks limitations. That's why please make sure that you're not using multiple video tracks. A solution for such situations can be to setup multiple parallel RTCMultiConnection instances. i.e. one for video and another one for screen.

burak1489 commented 5 years ago

I will test it. Thank you!

ghost commented 5 years ago

I have this error appears at the moment of Broadcast's connection with the Viewer.

Scenario

  1. The initiator opens the room.
  2. In an open room, the Viewer comes first to the Initiator.
  3. After this, Broadcaster is connected to the Initiator.
  4. Broadcaster is trying to connect with the Viewer.
  5. An error in the viewer in the console appears:

setRemoteDescription failed DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Called in wrong state: kStable v = 0 o = - 2965669704544847005 2 IN IP4 127.0.0.1 s = - t = 0 0 a = msid-semantic: WMS

  1. In the end. Viewer does not connect stream from Broadcaster.

At the same time, in the Broadcast console, RTCMultiConnection displays the status of the Viewer. And in the viewer console there is also the active Broadcast status. But because of an error, they do not connect.

=========== In order for the Viewer to connect the stream from Broadcaster (I remind you that Broadcastter in my scenario connects to the room after the Viewer) I use the following algorithm:  

  1. The initiator opens the room

  2. The viewer connects to the room.

  3. Broadcast last connects to the room.

  4. At Broadcast, the connection.onopen event is triggered.

  5. Broadcaster sends the request to the initiator and receives from it a list of participants connected to the room:

    connection.socket.emit (connection.socketCustomEvent, {
    giveAllParticipants: true
    });
  6. Broadcast in the list finds Viewers and sends a connection request to all Viewers using the command:

    
    connection.peers [participant.pid] .addStream ({
    audio: true,
    video: true,
    oneway: true
    });

7. After that the Viewer connects to itself broadsters.

Maybe you need to do something differently in order not to use the crutch I described?
burak1489 commented 5 years ago

@muaz-khan Thank you again for your suggestion. The problem is now that the LED from the webcam is on continuously. When we use this in a chat application, users may be uncomfortable that the camera is always on. Is there another solution?

Would be nice if we could get an example how to replace the track for a addStream/removeStream Chat Room ie. Start Webcam -> Remove Webcam -> Start Webcam again without getting into trouble.

burak1489 commented 5 years ago

@VShtaba Good news for you. Solved the problem by creating a queue for adding/removing actions.

The client side is waiting for a callback that there is no adding/removing action currently. The other requests are waiting for previous requests have been handled.

ghost commented 5 years ago

Hello. Thank. Are you talking about this decision? https://github.com/mdn/samples-server/issues/57#issuecomment-412468733

burak1489 commented 5 years ago

@VShtaba No... It's a custom solution.

On the clientside you can set 2 custom socket callback events for adding/removing streams.

// Same for adding stream function removeLocalStream() {

connection.socket.emit('waitingRemove', connection.userid, function(response) {

    if(response === true) {

        connection.extra.broadcastid = "";
        connection.updateExtraData();

        connection.attachStreams.forEach(function(stream) {
            stream.getTracks().forEach(track => track.stop());
            stream.getTracks().forEach(track => stream.removeTrack(track));
        });

        $("#webcamload").addClass("fa-video-camera");
        $("#webcamload").removeClass("fa-spinner");
        $("#webcamlabel").text("Kamera Aç");
        ready = 1;

    }

});

}

Create a queue (object) on the serverside and check (setInterval - i.e. 1 second interval) if there are streams to add or remove. Handle the requests one by one with callbacks. This should solve the issue.

setInterval(function() {

if(Object.keys(streamQueue).length > 0) {

    for(var key in streamQueue) {

        streamQueue[key] = 0;
        console.log("Queue: " + streamQueue[key]);
        break;

    }

}

}, 1000);

// In io.connection socket.on("waitingRemove", function(userid, fn) {

    console.log("Remove requested");
    streamQueue[userid] = 1;

    ii[userid] = setInterval(function() {

        if(streamQueue[userid] == 0 && typeof userlist[userid] != 'undefined' && typeof broadcast[userid] != 'undefined') {
            clearInterval(ii[userid]);
            delete streamQueue[userid];
            console.log("Deleted from queue");
            fn(true);
        }
        else if(typeof userlist[userid] == 'undefined' || typeof broadcast[userid] == 'undefined') {

            clearInterval(ii[userid]);
            console.log("Couldnt be found");
            delete streamQueue[userid];
            fn(false);

        }

    }, 100);

});
ghost commented 5 years ago

Thank you, colleague.

I get this error when Broadcaster connects to the Viewer (one-way direction). In this case, an error appears in the Viewer console: "setRemoteDescription failed DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Called in wrong state: kStable v = 0 o = - 2965669704544847005 2 IN IP4 127.0. 0.1 s = - t = 0 0 a = msid-semantic: WMS " and Broadcast stream does not appear in Viewer.

burak1489 commented 4 years ago

@muaz-khan

"Called in wrong state: kStable" is caused by Google Chrome. It sends the request twice Could you fix it please?

See here: https://stackoverflow.com/questions/48963787/failed-to-set-local-answer-sdp-called-in-wrong-state-kstable