WebRTCSrc : create-answer::Promise returned with no reply

Hi all,

I’ve got a strange error using webrtcsrc with a producer written with aiortc

$ gst-launch-1.0 playbin uri=gstwebrtc://127.0.0.1:8443?peer-id=1e548974-6f18-4048-9512-c06fc9bc181b
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.328539923 58928 0x56249944f000 WARN               webrtcbin gstwebrtcbin.c:6671:_set_description_task:<webrtcbin0> returning error: media 1 has different ice-ufrag values in bundle. CQci != qvCg**
0:00:00.328561666 58928 0x56249944f000 WARN               webrtcbin gstwebrtcbin.c:4794:_create_sdp_task:<webrtcbin0> returning error: Asked to create an answer without a remote description
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source: GStreamer encountered a general stream error.
Additional debug info:
net/webrtc/src/webrtcsrc/imp.rs(812): gstrswebrtc::webrtcsrc::imp::WebRTCSrc::on_answer_created (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source:
create-answer::Promise returned with no reply
Execution ended after 0:00:00.234683472
Setting pipeline to NULL ...
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source: GStreamer encountered a general stream error.
Additional debug info:
net/webrtc/src/webrtcsrc/imp.rs(569): gstrswebrtc::webrtcsrc::imp::WebRTCSrc::connect_signaller::{{closure}}::{{closure}} (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source:
Signalling error: Error receiving: WebSocket protocol error: Connection reset without closing handshake
Freeing pipeline ...

Adding a single media track works, while two tracks (two videos, or one video and one audio) fails. The error suggests that there is a problem with the ice-ufrag values. This looks related to this issue. Is a problem from the the producer (aiortc) or the consumer side (gstreamer) ?
Thanks

FYI, the web browser, or a Unity custom client handle this SDP offer. It seems limited to webrtcsrc.

If a web browser (without manually massaging the SDP) handles this correctly then this would seem like a bug on the GStreamer-side, maybe in addition to aiortc doing something wrong.

Can you provide a full debug log with GST_DEBUG=webrtc*:9 and ideally also a way to reproduce the problem?

Here’s the log

GST_DEBUG=webrtc:*9 gst-launch-1.0 playbin uri=gstwebrtc://127.0.0.1:8443?peer-id=9f2e7063-2b01-4957-b575-3741c59d168c
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source: GStreamer encountered a general stream error.
Additional debug info:
net/webrtc/src/webrtcsrc/imp.rs(812): gstrswebrtc::webrtcsrc::imp::WebRTCSrc::on_answer_created (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source:
create-answer::Promise returned with no reply
Execution ended after 0:00:00.039085266
Setting pipeline to NULL ...
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source: GStreamer encountered a general stream error.
Additional debug info:
net/webrtc/src/webrtcsrc/imp.rs(569): gstrswebrtc::webrtcsrc::imp::WebRTCSrc::connect_signaller::{{closure}}::{{closure}} (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source:
Signalling error: Error receiving: WebSocket protocol error: Connection reset without closing handshake
Freeing pipeline ...

And a SDP offer

2023-10-03T07:43:24.695203Z INFO ThreadId(13) gst_plugin_webrtc_signalling::server: sending {"type":"peer","sessionId":"07e619da-901a-4bf3-8239-0dfb1d7f4bd3","sdp":{"type":"offer","sdp":"v=0\r\no=- 3905307804 3905307804 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic:WMS *\r\nm=video 46279 UDP/TLS/RTP/SAVPF 97 98 99 100\r\nc=IN IP4 10.0.1.32\r\na=sendrecv\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=mid:0\r\na=msid:7f838017-0054-45ab-ac59-5af96247d03d left\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=ssrc-group:FID 2504893550 333167639\r\na=ssrc:2504893550 cname:f9151ca6-ab02-40fd-8580-9c52e8950953\r\na=ssrc:333167639 cname:f9151ca6-ab02-40fd-8580-9c52e8950953\r\na=rtpmap:97 H264/90000\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 goog-remb\r\na=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:98 rtx/90000\r\na=fmtp:98 apt=97\r\na=rtpmap:99 H264/90000\r\na=rtcp-fb:99 nack\r\na=rtcp-fb:99 nack pli\r\na=rtcp-fb:99 goog-remb\r\na=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:100 rtx/90000\r\na=fmtp:100 apt=99\r\na=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 46279 typ host\r\na=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 38459 typ host\r\na=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 56676 typ host\r\na=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9630 typ srflx raddr 172.17.0.1 rport 56676\r\na=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9536 typ srflx raddr 10.0.1.32 rport 46279\r\na=end-of-candidates\r\na=ice-ufrag:mUc8\r\na=ice-pwd:YmDoyb93hZoMvcNagKoXpz\r\na=fingerprint:sha-256 90:48:17:10:18:4C:A9:AA:F6:C3:26:DD:51:49:8C:85:D0:A4:B3:5F:64:02:91:23:84:55:3C:7D:A6:3F:3F:01\r\na=setup:actpass\r\nm=video 43501 UDP/TLS/RTP/SAVPF 97 98 99 100\r\nc=IN IP4 10.0.1.32\r\na=sendrecv\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=mid:1\r\na=msid:7f838017-0054-45ab-ac59-5af96247d03d right\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=ssrc-group:FID 3921969490 1743742394\r\na=ssrc:3921969490 cname:f9151ca6-ab02-40fd-8580-9c52e8950953\r\na=ssrc:1743742394 cname:f9151ca6-ab02-40fd-8580-9c52e8950953\r\na=rtpmap:97 H264/90000\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 goog-remb\r\na=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:98 rtx/90000\r\na=fmtp:98 apt=97\r\na=rtpmap:99 H264/90000\r\na=rtcp-fb:99 nack\r\na=rtcp-fb:99 nack pli\r\na=rtcp-fb:99 goog-remb\r\na=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:100 rtx/90000\r\na=fmtp:100 apt=99\r\na=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 43501 typ host\r\na=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 57602 typ host\r\na=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 51972 typ host\r\na=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9538 typ srflx raddr 172.17.0.1 rport 51972\r\na=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9663 typ srflx raddr 10.0.1.32 rport 43501\r\na=end-of-candidates\r\na=ice-ufrag:OyuP\r\na=ice-pwd:JAi6pR5oRuiwDqppqA4En5\r\na=fingerprint:sha-256 90:48:17:10:18:4C:A9:AA:F6:C3:26:DD:51:49:8C:85:D0:A4:B3:5F:64:02:91:23:84:55:3C:7D:A6:3F:3F:01\r\na=setup:actpass\r\n"}} this_id=955a9847-a3b8-4b68-9a70-a99bab43e06e

I’ll see if I can give you some code

You’ve put the * in the wrong place :slight_smile: GST_DEBUG=webrtc*:9, not GST_DEBUG=webrtc:*9. Doing so should give you a lot of output.

Oups!
Here you go

Setting pipeline to PAUSED ...
0:00:00.106452641 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m          webrtcnice nice.c:1404:gst_webrtc_nice_set_stun_server:<webrtcbin0:ice>e[00m setting stun server, stun://stun.l.google.com:19302
0:00:00.106509063 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: NULL => READY
0:00:00.106606378 e[35m98650e[00m 0x565166b01b60 e[33;01mLOG    e[00m e[00m           webrtcbin gstwebrtcbin.c:1725:_check_if_negotiation_is_needed:<webrtcbin0>e[00m checking if negotiation is needed
0:00:00.106609465 e[35m98650e[00m 0x565166b01b60 e[33;01mLOG    e[00m e[00m           webrtcbin gstwebrtcbin.c:1741:_check_if_negotiation_is_needed:<webrtcbin0>e[00m no local description set
0:00:00.106619252 e[35m98650e[00m 0x565166d46800 e[37mTRACE  e[00m e[00m           webrtcbin gstwebrtcbin.c:1850:_check_need_negotiation_task:<webrtcbin0>e[00m emitting on-negotiation-needed
0:00:00.106632393 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: READY => PAUSED
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
0:00:00.106749803 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: PAUSED => PLAYING
0:00:00.106773020 e[35m98650e[00m 0x565166b01b60 e[36mINFO   e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:525:<gstrswebrtc::signaller::imp::Signaller as gstrswebrtc::signaller::iface::SignallableImpl>::start:<GstWebRTCSignaller@0x565166db3130>e[00m Starting
0:00:00.107145221 e[35m98650e[00m 0x565166b01b60 e[36mINFO   e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:931:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::maybe_start_signaller:<source>e[00m Started signaller
New clock: GstSystemClock
0:00:00.107628940 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:133:gstrswebrtc::signaller::imp::Signaller::connect::{{closure}}:<GstWebRTCSignaller@0x565166db3130>e[00m connected
0:00:00.107685807 e[35m98650e[00m 0x7fdbfc003430 e[37mTRACE  e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:263:gstrswebrtc::signaller::imp::Signaller::handle_message:<GstWebRTCSignaller@0x565166db3130>e[00m Received message {"type":"welcome","peerId":"2e761115-4218-46db-bce1-bc75d74c3040"}
0:00:00.107702662 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:248:gstrswebrtc::signaller::imp::Signaller::start_session:<GstWebRTCSignaller@0x565166db3130>e[00m Started session with producer peer id 9669718e-9c73-4352-a9f2-a23dbed9bf34
0:00:00.107714266 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:144:gstrswebrtc::signaller::imp::Signaller::connect::{{closure}}::{{closure}}:e[00m Sending websocket message StartSession(StartSessionMessage { peer_id: "9669718e-9c73-4352-a9f2-a23dbed9bf34" })
0:00:00.107734374 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:144:gstrswebrtc::signaller::imp::Signaller::connect::{{closure}}::{{closure}}:e[00m Sending websocket message SetPeerStatus(PeerStatus { roles: [], meta: None, peer_id: Some("2e761115-4218-46db-bce1-bc75d74c3040") })
0:00:00.107885066 e[35m98650e[00m 0x7fdbfc003430 e[37mTRACE  e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:263:gstrswebrtc::signaller::imp::Signaller::handle_message:<GstWebRTCSignaller@0x565166db3130>e[00m Received message {"type":"sessionStarted","peerId":"9669718e-9c73-4352-a9f2-a23dbed9bf34","sessionId":"14288230-5822-4412-9a70-8b0b28a72a06"}
0:00:00.107894481 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:584:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::connect_signaller::{{closure}}::{{closure}}:<source>e[00m Session started: 14288230-5822-4412-9a70-8b0b28a72a06
0:00:00.147820771 e[35m98650e[00m 0x7fdbfc003430 e[37mTRACE  e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:263:gstrswebrtc::signaller::imp::Signaller::handle_message:<GstWebRTCSignaller@0x565166db3130>e[00m Received message {"type":"peer","sessionId":"14288230-5822-4412-9a70-8b0b28a72a06","sdp":{"type":"offer","sdp":"v=0\r\no=- 3905310572 3905310572 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic:WMS *\r\nm=video 47391 UDP/TLS/RTP/SAVPF 97 98 99 100\r\nc=IN IP4 10.0.1.32\r\na=sendrecv\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=mid:0\r\na=msid:10a2212a-5af8-43af-9e76-ca612824d182 left\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=ssrc-group:FID 279497956 2890277861\r\na=ssrc:279497956 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad\r\na=ssrc:2890277861 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad\r\na=rtpmap:97 H264/90000\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 goog-remb\r\na=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:98 rtx/90000\r\na=fmtp:98 apt=97\r\na=rtpmap:99 H264/90000\r\na=rtcp-fb:99 nack\r\na=rtcp-fb:99 nack pli\r\na=rtcp-fb:99 goog-remb\r\na=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:100 rtx/90000\r\na=fmtp:100 apt=99\r\na=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 47391 typ host\r\na=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 41823 typ host\r\na=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 34199 typ host\r\na=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9556 typ srflx raddr 172.17.0.1 rport 34199\r\na=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9583 typ srflx raddr 10.0.1.32 rport 47391\r\na=end-of-candidates\r\na=ice-ufrag:DGHn\r\na=ice-pwd:pS8HEZarePq3I7jQFM4iFu\r\na=fingerprint:sha-256 7D:AA:46:85:77:B4:83:38:87:09:78:1A:55:82:DF:F0:93:31:BE:7E:1A:FC:6A:52:BD:59:8E:9C:33:85:CB:65\r\na=setup:actpass\r\nm=video 36419 UDP/TLS/RTP/SAVPF 97 98 99 100\r\nc=IN IP4 10.0.1.32\r\na=sendrecv\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=mid:1\r\na=msid:10a2212a-5af8-43af-9e76-ca612824d182 right\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtcp-mux\r\na=ssrc-group:FID 807064486 2160864189\r\na=ssrc:807064486 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad\r\na=ssrc:2160864189 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad\r\na=rtpmap:97 H264/90000\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 goog-remb\r\na=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:98 rtx/90000\r\na=fmtp:98 apt=97\r\na=rtpmap:99 H264/90000\r\na=rtcp-fb:99 nack\r\na=rtcp-fb:99 nack pli\r\na=rtcp-fb:99 goog-remb\r\na=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:100 rtx/90000\r\na=fmtp:100 apt=99\r\na=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 36419 typ host\r\na=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 53810 typ host\r\na=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 34433 typ host\r\na=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9667 typ srflx raddr 172.17.0.1 rport 34433\r\na=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9706 typ srflx raddr 10.0.1.32 rport 36419\r\na=end-of-candidates\r\na=ice-ufrag:8uRQ\r\na=ice-pwd:GY9ttEEUxMTZFybPRCDAAx\r\na=fingerprint:sha-256 7D:AA:46:85:77:B4:83:38:87:09:78:1A:55:82:DF:F0:93:31:BE:7E:1A:FC:6A:52:BD:59:8E:9C:33:85:CB:65\r\na=setup:actpass\r\n"}}
0:00:00.148243804 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:702:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::handle_offer:<source>e[00m Got offer v=0
o=- 3905310572 3905310572 IN IP4 0.0.0.0
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic:WMS *
m=video 47391 UDP/TLS/RTP/SAVPF 97 98 99 100
c=IN IP4 10.0.1.32
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:0
a=msid:10a2212a-5af8-43af-9e76-ca612824d182 left
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-mux
a=ssrc-group:FID 279497956 2890277861
a=ssrc:279497956 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=ssrc:2890277861 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=rtpmap:97 H264/90000
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=rtcp-fb:97 goog-remb
a=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=97
a=rtpmap:99 H264/90000
a=rtcp-fb:99 nack
a=rtcp-fb:99 nack pli
a=rtcp-fb:99 goog-remb
a=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=99
a=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 47391 typ host
a=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 41823 typ host
a=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 34199 typ host
a=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9556 typ srflx raddr 172.17.0.1 rport 34199
a=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9583 typ srflx raddr 10.0.1.32 rport 47391
a=end-of-candidates
a=ice-ufrag:DGHn
a=ice-pwd:pS8HEZarePq3I7jQFM4iFu
a=fingerprint:sha-256 7D:AA:46:85:77:B4:83:38:87:09:78:1A:55:82:DF:F0:93:31:BE:7E:1A:FC:6A:52:BD:59:8E:9C:33:85:CB:65
a=setup:actpass
m=video 36419 UDP/TLS/RTP/SAVPF 97 98 99 100
c=IN IP4 10.0.1.32
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:1
a=msid:10a2212a-5af8-43af-9e76-ca612824d182 right
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-mux
a=ssrc-group:FID 807064486 2160864189
a=ssrc:807064486 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=ssrc:2160864189 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=rtpmap:97 H264/90000
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=rtcp-fb:97 goog-remb
a=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=97
a=rtpmap:99 H264/90000
a=rtcp-fb:99 nack
a=rtcp-fb:99 nack pli
a=rtcp-fb:99 goog-remb
a=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=99
a=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 36419 typ host
a=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 53810 typ host
a=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 34433 typ host
a=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9667 typ srflx raddr 172.17.0.1 rport 34433
a=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9706 typ srflx raddr 10.0.1.32 rport 36419
a=end-of-candidates
a=ice-ufrag:8uRQ
a=ice-pwd:GY9ttEEUxMTZFybPRCDAAx
a=fingerprint:sha-256 7D:AA:46:85:77:B4:83:38:87:09:78:1A:55:82:DF:F0:93:31:BE:7E:1A:FC:6A:52:BD:59:8E:9C:33:85:CB:65
a=setup:actpass

0:00:00.148609891 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:652:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::create_and_probe_src_pad:e[00m Creating pad for Caps(application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", payload: (gint) 97, clock-rate: (gint) 90000, encoding-name: (gchararray) "H264", packetization-mode: (gchararray) "1", profile: (gchararray) "baseline" }, application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", payload: (gint) 99, clock-rate: (gint) 90000, encoding-name: (gchararray) "H264", packetization-mode: (gchararray) "1", profile: (gchararray) "constrained-baseline" }), stream: 463d7a932c14a18eb24bc3febd1bd9255df6d70e6125eceb7d1d700a45a09c0b:0
0:00:00.150352714 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:770:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::handle_offer:<source>e[00m Adding transceiver for 463d7a932c14a18eb24bc3febd1bd9255df6d70e6125eceb7d1d700a45a09c0b:0 with caps: Caps(
    application/x-rtp(memory:SystemMemory) {
        media: (gchararray) "video",
        payload: (gint) 97,
        clock-rate: (gint) 90000,
        encoding-name: (gchararray) "H264",
        packetization-mode: (gchararray) "1",
        profile: (gchararray) "baseline",
    },
    application/x-rtp(memory:SystemMemory) {
        media: (gchararray) "video",
        payload: (gint) 99,
        clock-rate: (gint) 90000,
        encoding-name: (gchararray) "H264",
        packetization-mode: (gchararray) "1",
        profile: (gchararray) "constrained-baseline",
    },
)
0:00:00.150554622 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcbin gstwebrtcbin.c:2411:_create_webrtc_transceiver:<webrtcbin0>e[00m created new transceiver <webrtctransceiver0> with direction recvonly (3), mline 4294967295, kind video (2)
0:00:00.150572539 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcbin gstwebrtcbin.c:6964:gst_webrtc_bin_add_transceiver:<webrtcbin0>e[00m Created new unassociated transceiver <webrtctransceiver0>
0:00:00.150807232 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:652:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::create_and_probe_src_pad:e[00m Creating pad for Caps(application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", payload: (gint) 97, clock-rate: (gint) 90000, encoding-name: (gchararray) "H264", packetization-mode: (gchararray) "1", profile: (gchararray) "baseline" }, application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", payload: (gint) 99, clock-rate: (gint) 90000, encoding-name: (gchararray) "H264", packetization-mode: (gchararray) "1", profile: (gchararray) "constrained-baseline" }), stream: 463d7a932c14a18eb24bc3febd1bd9255df6d70e6125eceb7d1d700a45a09c0b:1
0:00:00.151192668 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:770:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::handle_offer:<source>e[00m Adding transceiver for 463d7a932c14a18eb24bc3febd1bd9255df6d70e6125eceb7d1d700a45a09c0b:1 with caps: Caps(
    application/x-rtp(memory:SystemMemory) {
        media: (gchararray) "video",
        payload: (gint) 97,
        clock-rate: (gint) 90000,
        encoding-name: (gchararray) "H264",
        packetization-mode: (gchararray) "1",
        profile: (gchararray) "baseline",
    },
    application/x-rtp(memory:SystemMemory) {
        media: (gchararray) "video",
        payload: (gint) 99,
        clock-rate: (gint) 90000,
        encoding-name: (gchararray) "H264",
        packetization-mode: (gchararray) "1",
        profile: (gchararray) "constrained-baseline",
    },
)
0:00:00.151246547 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcbin gstwebrtcbin.c:2411:_create_webrtc_transceiver:<webrtcbin0>e[00m created new transceiver <webrtctransceiver1> with direction recvonly (3), mline 4294967295, kind video (2)
0:00:00.151272774 e[35m98650e[00m 0x7fdbfc003430 e[33;01mLOG    e[00m e[00m           webrtcbin gstwebrtcbin.c:6964:gst_webrtc_bin_add_transceiver:<webrtcbin0>e[00m Created new unassociated transceiver <webrtctransceiver1>
0:00:00.151584958 e[35m98650e[00m 0x565166d46800 e[36mINFO   e[00m e[00m           webrtcbin gstwebrtcbin.c:6300:_set_description_task:<webrtcbin0>e[00m Attempting to set remote offer in the stable state
0:00:00.152087111 e[35m98650e[00m 0x565166d46800 e[37mTRACE  e[00m e[00m           webrtcbin gstwebrtcbin.c:6302:_set_description_task:<webrtcbin0>e[00m SDP contents
v=0
o=- 3905310572 3905310572 IN IP4 0.0.0.0
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic:WMS *
m=video 47391 UDP/TLS/RTP/SAVPF 97 98 99 100
c=IN IP4 10.0.1.32
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:0
a=msid:10a2212a-5af8-43af-9e76-ca612824d182 left
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-mux
a=ssrc-group:FID 279497956 2890277861
a=ssrc:279497956 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=ssrc:2890277861 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=rtpmap:97 H264/90000
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=rtcp-fb:97 goog-remb
a=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=97
a=rtpmap:99 H264/90000
a=rtcp-fb:99 nack
a=rtcp-fb:99 nack pli
a=rtcp-fb:99 goog-remb
a=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=99
a=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 47391 typ host
a=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 41823 typ host
a=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 34199 typ host
a=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9556 typ srflx raddr 172.17.0.1 rport 34199
a=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9583 typ srflx raddr 10.0.1.32 rport 47391
a=end-of-candidates
a=ice-ufrag:DGHn
a=ice-pwd:pS8HEZarePq3I7jQFM4iFu
a=fingerprint:sha-256 7D:AA:46:85:77:B4:83:38:87:09:78:1A:55:82:DF:F0:93:31:BE:7E:1A:FC:6A:52:BD:59:8E:9C:33:85:CB:65
a=setup:actpass
m=video 36419 UDP/TLS/RTP/SAVPF 97 98 99 100
c=IN IP4 10.0.1.32
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=mid:1
a=msid:10a2212a-5af8-43af-9e76-ca612824d182 right
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-mux
a=ssrc-group:FID 807064486 2160864189
a=ssrc:807064486 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=ssrc:2160864189 cname:8fe1ac19-0a68-426a-831f-a501f513b4ad
a=rtpmap:97 H264/90000
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=rtcp-fb:97 goog-remb
a=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=97
a=rtpmap:99 H264/90000
a=rtcp-fb:99 nack
a=rtcp-fb:99 nack pli
a=rtcp-fb:99 goog-remb
a=fmtp:99 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=99
a=candidate:5893c2de5def470b59e2c42c650ee78a 1 udp 2130706431 10.0.1.32 36419 typ host
a=candidate:073d76714234a72b1ea24a739a601abe 1 udp 2130706431 2a00:1028:8388:1986:ec33:a025:499:598e 53810 typ host
a=candidate:580b5f32035da7f14a30ea7a8d826c67 1 udp 2130706431 172.17.0.1 34433 typ host
a=candidate:0ad8db753210ce9554cf251a9e51e792 1 udp 1694498815 109.81.170.201 9667 typ srflx raddr 172.17.0.1 rport 34433
a=candidate:f0f7f4c0f6408ce370b03219e415cb8c 1 udp 1694498815 109.81.170.201 9706 typ srflx raddr 10.0.1.32 rport 36419
a=end-of-candidates
a=ice-ufrag:8uRQ
a=ice-pwd:GY9ttEEUxMTZFybPRCDAAx
a=fingerprint:sha-256 7D:AA:46:85:77:B4:83:38:87:09:78:1A:55:82:DF:F0:93:31:BE:7E:1A:FC:6A:52:BD:59:8E:9C:33:85:CB:65
a=setup:actpass

0:00:00.152144038 e[35m98650e[00m 0x565166d46800 e[33;01mWARN   e[00m e[00m           webrtcbin gstwebrtcbin.c:6671:_set_description_task:<webrtcbin0>e[00m returning error: media 1 has different ice-ufrag values in bundle. DGHn != 8uRQ
0:00:00.152177222 e[35m98650e[00m 0x565166d46800 e[36mINFO   e[00m e[00m           webrtcbin gstwebrtcbin.c:4775:_create_sdp_task:<webrtcbin0>e[00m creating answer sdp with options (NULL)
0:00:00.152185990 e[35m98650e[00m 0x565166d46800 e[33;01mWARN   e[00m e[00m           webrtcbin gstwebrtcbin.c:4794:_create_sdp_task:<webrtcbin0>e[00m returning error: Asked to create an answer without a remote description
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source: GStreamer encountered a general stream error.
Additional debug info:
net/webrtc/src/webrtcsrc/imp.rs(812): gstrswebrtc::webrtcsrc::imp::WebRTCSrc::on_answer_created (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source:
create-answer::Promise returned with no reply
Execution ended after 0:00:00.045688021
Setting pipeline to NULL ...
0:00:00.152634429 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: PLAYING => PAUSED
0:00:00.152700788 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: PAUSED => READY
0:00:00.152738068 e[35m98650e[00m 0x565166b01b60 e[36mINFO   e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:541:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::unprepare:<source>e[00m unpreparing
0:00:00.152759703 e[35m98650e[00m 0x565166b01b60 e[36mINFO   e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:534:<gstrswebrtc::signaller::imp::Signaller as gstrswebrtc::signaller::iface::SignallableImpl>::stop:<GstWebRTCSignaller@0x565166db3130>e[00m Stopping now
0:00:00.152902561 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:152:gstrswebrtc::signaller::imp::Signaller::connect::{{closure}}::{{closure}}::{{closure}}:<GstWebRTCSignaller@0x565166db3130>e[00m Done sending
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source: GStreamer encountered a general stream error.
Additional debug info:
net/webrtc/src/webrtcsrc/imp.rs(569): gstrswebrtc::webrtcsrc::imp::WebRTCSrc::connect_signaller::{{closure}}::{{closure}} (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstWebRTCSrc:source:
Signalling error: Error receiving: WebSocket protocol error: Connection reset without closing handshake
0:00:00.153499335 e[35m98650e[00m 0x7fdbfc003430 e[36mINFO   e[00m e[00m webrtcsrc-signaller net/webrtc/src/signaller/imp.rs:183:gstrswebrtc::signaller::imp::Signaller::connect::{{closure}}::{{closure}}::{{closure}}:<GstWebRTCSignaller@0x565166db3130>e[00m Stopped websocket receiving
0:00:00.153599340 e[35m98650e[00m 0x565166b01b60 e[36mINFO   e[00m e[00m           webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:941:gstrswebrtc::webrtcsrc::imp::WebRTCSrc::maybe_stop_signaller:<source>e[00m Stopped signaller
0:00:00.153697564 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: READY => READY
0:00:00.153782419 e[35m98650e[00m 0x565166b01b60 e[37mDEBUG  e[00m e[00m           webrtcbin gstwebrtcbin.c:7848:gst_webrtc_bin_change_state:e[00m changing state: READY => NULL
Freeing pipeline ...

I did some reviewing of JSEP and the bundle RFC (https://www.rfc-editor.org/rfc/rfc8859.txt). I think what aiortc is doing there is valid (sending an SDP that works if the peer doesn’t support bundling). I think GStreamer should use the ice-ufrag/ice-pwd from the first m= section, since GStreamer does support bundle.

This sounds like it’s a bug and should be reported in GitLab.

Done webrtc: create-answer::Promise returned with no reply (#3017) · Issues · GStreamer / gstreamer · GitLab

1 Like