WebRTC: browser offers to receive only, webrtcbin endlessly signals on-negotiation-needed
Michiel Konstapel
michiel at aanmelder.nl
Wed Jul 14 12:59:40 UTC 2021
I'm trying to have the browser send an offer to my webrtcbin without
tracks, just offerToReceiveVideo = offerToReceiveAudio = true. This is
Chrome's offer:
type: offer, sdp: v=0
o=- 3378399417305009623 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS
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:RR+k
a=ice-pwd:7rdM4ehFUxYT5eBJOHjD+QR4
a=ice-options:trickle
a=fingerprint:sha-256 2B:A6:0D:4E:DD:A6:70:C9:22:A1:20:00:F0:1C:28:B1:8D:6F:4A:B8:00:D8:B0:B0:71:76:63:DE:75:1D:91:2C
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
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
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 102 121 127 120 125 107 108 109 35 36 124 119 123 37
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:RR+k
a=ice-pwd:7rdM4ehFUxYT5eBJOHjD+QR4
a=ice-options:trickle
a=fingerprint:sha-256 2B:A6:0D:4E:DD:A6:70:C9:22:A1:20:00:F0:1C:28:B1:8D:6F:4A:B8:00:D8:B0:B0:71:76:63:DE:75:1D:91:2C
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
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 VP9/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 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:122 VP9/90000
a=rtcp-fb:122 goog-remb
a=rtcp-fb:122 transport-cc
a=rtcp-fb:122 ccm fir
a=rtcp-fb:122 nack
a=rtcp-fb:122 nack pli
a=fmtp:122 profile-id=1
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=1;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=0;profile-level-id=42001f
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=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:35 AV1X/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
a=rtpmap:124 red/90000
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=124
a=rtpmap:123 ulpfec/90000
a=rtpmap:37 flexfec-03/90000
a=rtcp-fb:37 goog-remb
a=rtcp-fb:37 transport-cc
a=fmtp:37 repair-window=10000000
I have a webrtcbin with H.264 video and OPUS audio feeding into it. When
started, it signals on-negotiation-needed:
0:00:19.521085415 5088 0x7f72a4034de0 DEBUG webrtcbin
gstwebrtcbin.c:279:gst_webrtcbin_sink_event:<webrtcbin:spk_42-view> On
<webrtcbin:spk_42-view:sink_1> checking negotiation? 1, caps
application/x-rtp, media=(string)audio, clock-rate=(int)48000,
encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000,
sprop-stereo=(string)0, payload=(int)96, encoding-params=(string)2,
ssrc=(uint)1698041367, timestamp-offset=(uint)2332231012,
seqnum-offset=(uint)4427
0:00:19.573505689 5088 0x2363400 DEBUG webrtcbin
gstwebrtcbin.c:279:gst_webrtcbin_sink_event:<webrtcbin:spk_42-view> On
<webrtcbin:spk_42-view:sink_0> checking negotiation? 1, caps
application/x-rtp, media=(string)video, clock-rate=(int)90000,
encoding-name=(string)H264, packetization-mode=(string)1,
sprop-parameter-sets=(string)"Z0LAKJWgHgCJ+XAWoCAgKAAAH0AABhqEIA\=\=\,aM48gA\=\=",
payload=(int)97, seqnum-offset=(uint)4023,
timestamp-offset=(uint)3581144498, ssrc=(uint)1818410027,
a-framerate=(string)25
I set the remote description to the offer, and ask for an answer, but
the first answer only has VP8 video:
0:00:14.965521108 5262 0x7f3a90024640 DEBUG webrtcbin
gstwebrtcbin.c:319:gst_webrtc_bin_pad_new:<'':sink_0> new visible pad
with direction sink
0:00:14.965896644 5262 0x7f3a90024640 DEBUG webrtcbin
gstwebrtcbin.c:319:gst_webrtc_bin_pad_new:<'':sink_1> new visible pad
with direction sink
0:00:14.966645866 5262 0x7f3a90024640 DEBUG webrtcbin
gstwebrtcbin.c:5737:gst_webrtc_bin_change_state: changing state: NULL =>
READY
0:00:14.967108331 5262 0x7f3a90024640 DEBUG webrtcbin
gstwebrtcbin.c:5737:gst_webrtc_bin_change_state: changing state: READY
=> PAUSED
0:00:14.967213263 5262 0x7f3a90024640 DEBUG webrtcbin
gstwebrtcbin.c:5737:gst_webrtc_bin_change_state: changing state: PAUSED
=> PLAYING
0:00:14.967255398 5262 0x7f3a90024640 DEBUG webrtcbin
gstwebrtcbin.c:5737:gst_webrtc_bin_change_state: changing state: PLAYING
=> PLAYING
0:00:14.982021409 5262 0x34b1400 DEBUG webrtcbin
gstwebrtcbin.c:279:gst_webrtcbin_sink_event:<webrtcbin:spk_42-view> On
<webrtcbin:spk_42-view:sink_1> checking negotiation? 1, caps
application/x-rtp, media=(string)audio, clock-rate=(int)48000,
encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000,
sprop-stereo=(string)0, payload=(int)96, encoding-params=(string)2,
ssrc=(uint)1715306335, timestamp-offset=(uint)3970215235,
seqnum-offset=(uint)25746
0:00:15.061982594 5262 0x7f3a80012c00 DEBUG webrtcbin
gstwebrtcbin.c:279:gst_webrtcbin_sink_event:<webrtcbin:spk_42-view> On
<webrtcbin:spk_42-view:sink_0> checking negotiation? 1, caps
application/x-rtp, media=(string)video, clock-rate=(int)90000,
encoding-name=(string)H264, packetization-mode=(string)1,
sprop-parameter-sets=(string)"Z0LAKJWgHgCJ+XAWoCAgKAAAH0AABhqEIA\=\=\,aM48gA\=\=",
payload=(int)97, seqnum-offset=(uint)4349,
timestamp-offset=(uint)4239337664, ssrc=(uint)3751326270,
a-framerate=(string)25
2021-07-14 14:38:51,444 INFO srtutils on-negotiation-needed
0:00:15.064742301 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:4325:_set_description_task:<webrtcbin:spk_42-view>
Attempting to set remote offer in the stable state
0:00:15.064806297 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:4492:_set_description_task:<webrtcbin:spk_42-view> we are
in ice controlling mode: true
0:00:15.157264085 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: NULL => READY
0:00:15.158004327 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: READY => PAUSED
0:00:15.158279424 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PAUSED => PLAYING
0:00:15.158497190 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: NULL => READY
0:00:15.159535181 5262 0x7f3a6c0190a0 FIXME default
gstutils.c:4026:gst_pad_create_stream_id_internal:<nicesrc0:src>
Creating random stream-id, consider implementing a deterministic way of
creating a stream-id
0:00:15.159590895 5262 0x7f3a6c0190a0 WARN GST_PADS
gstpad.c:4303:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:15.162837000 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: READY => PAUSED
0:00:15.164229948 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PAUSED => PLAYING
0:00:15.165576050 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:746:gst_webrtc_ice_set_remote_credentials:<webrtcbin0:ice>
Setting remote ICE credentials on ICE stream 1 ufrag:UEdf
pwd:cmYR4+mJlv7JhfaK310sCKCi
0:00:15.165738843 5262 0x7f3a7c031630 FIXME default
gstutils.c:4026:gst_pad_create_stream_id_internal:<nicesrc1:src>
Creating random stream-id, consider implementing a deterministic way of
creating a stream-id
0:00:15.172050742 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: NULL => READY
0:00:15.172797073 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: READY => PAUSED
0:00:15.173253881 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PAUSED => PLAYING
0:00:15.173637336 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: NULL => READY
0:00:15.176088379 5262 0x7f3a7c0045e0 FIXME default
gstutils.c:4026:gst_pad_create_stream_id_internal:<nicesrc2:src>
Creating random stream-id, consider implementing a deterministic way of
creating a stream-id
0:00:15.176342014 5262 0x7f3a7c0045e0 WARN GST_PADS
gstpad.c:4303:gst_pad_peer_query:<nicesrc2:src> could not send sticky events
0:00:15.178527641 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: READY => PAUSED
0:00:15.179807284 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PAUSED => PLAYING
0:00:15.181126192 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:746:gst_webrtc_ice_set_remote_credentials:<webrtcbin0:ice>
Setting remote ICE credentials on ICE stream 2 ufrag:UEdf
pwd:cmYR4+mJlv7JhfaK310sCKCi
2021-07-14 14:38:51,564 INFO srtutils remote description set:
<GstWebRTC.WebRTCSessionDescription object at 0x7f3af741a888
(GstWebRTCSessionDescription at 0x7f3aa4118580)>
0:00:15.182790012 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:3323:_create_sdp_task:<webrtcbin:spk_42-view> creating
answer sdp with options (NULL)
0:00:15.182948017 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.183010238 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.183775093 5262 0x7f3a6c031c00 FIXME default
gstutils.c:4026:gst_pad_create_stream_id_internal:<nicesrc3:src>
Creating random stream-id, consider implementing a deterministic way of
creating a stream-id
0:00:15.183929748 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:1600:_find_codec_preferences:<webrtctransceiver2> Could
not find caps for mline 2
0:00:15.184138884 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.184200679 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
2021-07-14 14:38:51,567 INFO srtutils on_answer_created:
v=0
o=- 1542449444684893457 2 IN IP4 0.0.0.0
s=-
t=0 0
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=ice-ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n
a=ice-pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
a=mid:0
a=rtcp-mux
a=setup:active
a=rtpmap:111 OPUS/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=inactive
a=fingerprint:sha-256
1D:29:E3:99:15:B7:90:D3:D7:4B:C7:AB:6D:FE:A6:C4:F5:CC:D2:FA:07:0B:A3:3D:6A:B3:15:A1:C1:56:8D:AE
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=ice-ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n
a=ice-pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
a=mid:1
a=rtcp-mux
a=setup:active
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 nack pli
a=rtcp-fb:96 ccm fir
a=inactive
a=fingerprint:sha-256
1D:29:E3:99:15:B7:90:D3:D7:4B:C7:AB:6D:FE:A6:C4:F5:CC:D2:FA:07:0B:A3:3D:6A:B3:15:A1:C1:56:8D:AE
How did it decide on VP8 when its input is H.264? Then, if I set that as
the local description, it fires on-negotiation-needed again:
0:00:15.188359523 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:4325:_set_description_task:<webrtcbin:spk_42-view>
Attempting to set local answer in the have-remote-offer state
0:00:15.189970596 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:4492:_set_description_task:<webrtcbin:spk_42-view> we are
in ice controlling mode: false
0:00:15.190002306 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.190028273 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.190068370 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3731:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp session level attributes to caps
0:00:15.190073242 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3733:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp media level attributes to caps
0:00:15.190085717 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3746:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
looking at 0 pt: 111
0:00:15.190142867 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3892:_update_transceiver_from_sdp_media:<webrtcbin:spk_42-view>
transceiver <webrtctransceiver0> direction change from none to inactive
0:00:15.190158887 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:329:_on_notify_dtls_client_status:<transportsendbin0>
DTLS-SRTP encoder configured. Unlocking it and changing state <dtlssrtpenc0>
0:00:15.193798362 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:329:_on_notify_dtls_client_status:<transportsendbin0>
DTLS-SRTP encoder configured. Unlocking it and changing state <dtlssrtpenc1>
0:00:15.195598812 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.195628443 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.195866037 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3731:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp session level attributes to caps
0:00:15.195875558 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3733:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp media level attributes to caps
0:00:15.195997110 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3746:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
looking at 0 pt: 96
0:00:15.196124436 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3892:_update_transceiver_from_sdp_media:<webrtcbin:spk_42-view>
transceiver <webrtctransceiver1> direction change from none to inactive
0:00:15.196155894 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:329:_on_notify_dtls_client_status:<transportsendbin1>
DTLS-SRTP encoder configured. Unlocking it and changing state <dtlssrtpenc2>
0:00:15.197359817 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:329:_on_notify_dtls_client_status:<transportsendbin1>
DTLS-SRTP encoder configured. Unlocking it and changing state <dtlssrtpenc3>
0:00:15.198049151 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:3495:_connect_input_stream:<webrtcbin:spk_42-view:sink_0>
linking input stream 0
0:00:15.198721321 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.198929452 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:3495:_connect_input_stream:<webrtcbin:spk_42-view:sink_1>
linking input stream 1
0:00:15.199184951 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.199252142 5262 0x7f3a80012c00 INFO webrtcbin
gstwebrtcbin.c:5632:on_rtpbin_new_sender_ssrc:<webrtcbin:spk_42-view>
session 0 ssrc 3751326270 new sender ssrc
0:00:15.199598925 5262 0x34b1400 INFO webrtcbin
gstwebrtcbin.c:5632:on_rtpbin_new_sender_ssrc:<webrtcbin:spk_42-view>
session 1 ssrc 1715306335 new sender ssrc
0:00:15.199821121 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.199963080 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.202803810 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:805:gst_webrtc_ice_set_local_credentials:<webrtcbin0:ice>
Setting local ICE credentials on ICE stream 1
ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
0:00:15.202993633 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.203208710 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.203509293 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:805:gst_webrtc_ice_set_local_credentials:<webrtcbin0:ice>
Setting local ICE credentials on ICE stream 2
ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
0:00:15.205188305 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:823:gst_webrtc_ice_gather_candidates:<webrtcbin0:ice>
gather candidates for stream 1
0:00:15.205396429 5262 0x3ad6850 DEBUG webrtcicestream
icestream.c:177:gst_webrtc_ice_stream_gather_candidates:<webrtcicestream0>
start gathering candidates
0:00:15.207012230 5262 0x3ad6850 DEBUG webrtcnicetransport
nicetransport.c:186:_on_component_state_changed:<webrtcnicetransport0> 1
1 gathering
0:00:15.208067985 5262 0x3ad6850 DEBUG webrtcnicetransport
nicetransport.c:186:_on_component_state_changed:<webrtcnicetransport1> 1
2 gathering
0:00:15.208646506 5262 0x3ad6850 DEBUG webrtcicestream
icestream.c:116:_on_candidate_gathering_done:<webrtcicestream0> 1
gathering done
0:00:15.208806734 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:823:gst_webrtc_ice_gather_candidates:<webrtcbin0:ice>
gather candidates for stream 2
0:00:15.208961307 5262 0x3ad6850 DEBUG webrtcicestream
icestream.c:177:gst_webrtc_ice_stream_gather_candidates:<webrtcicestream1>
start gathering candidates
0:00:15.210687994 5262 0x3ad6850 DEBUG webrtcnicetransport
nicetransport.c:186:_on_component_state_changed:<webrtcnicetransport2> 2
1 gathering
0:00:15.211877308 5262 0x3ad6850 DEBUG webrtcnicetransport
nicetransport.c:186:_on_component_state_changed:<webrtcnicetransport3> 2
2 gathering
0:00:15.212072519 5262 0x3ad6850 DEBUG webrtcicestream
icestream.c:116:_on_candidate_gathering_done:<webrtcicestream1> 2
gathering done
2021-07-14 14:38:51,604 INFO srtutils on-negotiation-needed
That triggers my "set offer, ask for answer" code again, but this time,
the answer does have H.264 video.
0:00:15.228541017 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:1295:_update_peer_connection_state_task:<webrtcbin:spk_42-view>
Peer connection state change from new(0) to connecting(1)
0:00:15.230429205 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:1225:_update_ice_gathering_state_task:<webrtcbin:spk_42-view>
ICE gathering state change from new(0) to gathering(1)
0:00:15.232160720 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:1225:_update_ice_gathering_state_task:<webrtcbin:spk_42-view>
ICE gathering state change from gathering(1) to complete(2)
0:00:15.232414793 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:4325:_set_description_task:<webrtcbin:spk_42-view>
Attempting to set remote offer in the stable state
0:00:15.232567868 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:4492:_set_description_task:<webrtcbin:spk_42-view> we are
in ice controlling mode: false
0:00:15.232687305 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.232853212 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.233006585 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:746:gst_webrtc_ice_set_remote_credentials:<webrtcbin0:ice>
Setting remote ICE credentials on ICE stream 1 ufrag:UEdf
pwd:cmYR4+mJlv7JhfaK310sCKCi
0:00:15.233113869 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.233262634 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.233406570 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:746:gst_webrtc_ice_set_remote_credentials:<webrtcbin0:ice>
Setting remote ICE credentials on ICE stream 2 ufrag:UEdf
pwd:cmYR4+mJlv7JhfaK310sCKCi
2021-07-14 14:38:51,617 INFO srtutils remote description set:
<GstWebRTC.WebRTCSessionDescription object at 0x7f3af741af48
(GstWebRTCSessionDescription at 0x7f3aa416c490)>
0:00:15.235706028 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:3323:_create_sdp_task:<webrtcbin:spk_42-view> creating
answer sdp with options (NULL)
2021-07-14 14:38:51,620 INFO srtutils on_answer_created:
v=0
o=- 1542449444684893457 2 IN IP4 0.0.0.0
s=-
t=0 0
m=video 9 UDP/TLS/RTP/SAVPF 97
c=IN IP4 0.0.0.0
a=ice-ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n
a=ice-pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
a=mid:0
a=rtcp-mux
a=setup:active
a=rtpmap:97 H264/90000
a=framerate:25
a=fmtp:97
packetization-mode=1;sprop-parameter-sets=Z0LAKJWgHgCJ+XAWoCAgKAAAH0AABhqEIA==,aM48gA==
a=ssrc:3751326270 msid:user2625019075 at host-23f83448 webrtctransceiver0
a=ssrc:3751326270 cname:user2625019075 at host-23f83448
a=sendonly
a=fingerprint:sha-256
1D:29:E3:99:15:B7:90:D3:D7:4B:C7:AB:6D:FE:A6:C4:F5:CC:D2:FA:07:0B:A3:3D:6A:B3:15:A1:C1:56:8D:AE
m=audio 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=ice-ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n
a=ice-pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
a=mid:1
a=rtcp-mux
a=setup:active
a=rtpmap:96 OPUS/48000/2
a=fmtp:96 sprop-maxcapturerate=48000;sprop-stereo=0
a=ssrc:1715306335 msid:user2625019075 at host-23f83448 webrtctransceiver1
a=ssrc:1715306335 cname:user2625019075 at host-23f83448
a=sendonly
a=fingerprint:sha-256
1D:29:E3:99:15:B7:90:D3:D7:4B:C7:AB:6D:FE:A6:C4:F5:CC:D2:FA:07:0B:A3:3D:6A:B3:15:A1:C1:56:8D:AE
2021-07-14 14:38:51,621 INFO srtutils setting local description
0:00:15.239510653 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:4325:_set_description_task:<webrtcbin:spk_42-view>
Attempting to set local answer in the have-remote-offer state
0:00:15.239699831 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:4492:_set_description_task:<webrtcbin:spk_42-view> we are
in ice controlling mode: false
0:00:15.239776376 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.239999841 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.240105900 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3731:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp session level attributes to caps
0:00:15.240114334 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3733:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp media level attributes to caps
0:00:15.240221854 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3746:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
looking at 0 pt: 97
0:00:15.240275660 5262 0x3ad6850 FIXME webrtcbin
gstwebrtcbin.c:3841:_update_transceiver_from_sdp_media:<webrtcbin:spk_42-view>
implement transceiver direction changes
0:00:15.240306760 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.240356443 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.240414495 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3731:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp session level attributes to caps
0:00:15.240420499 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3733:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
mapping sdp media level attributes to caps
0:00:15.240557729 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:3746:_update_transport_ptmap_from_media:<webrtcbin:spk_42-view>
looking at 0 pt: 96
0:00:15.240610060 5262 0x3ad6850 FIXME webrtcbin
gstwebrtcbin.c:3841:_update_transceiver_from_sdp_media:<webrtcbin:spk_42-view>
implement transceiver direction changes
0:00:15.240619145 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.240680122 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.240729844 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:805:gst_webrtc_ice_set_local_credentials:<webrtcbin0:ice>
Setting local ICE credentials on ICE stream 1
ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
0:00:15.240738618 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.240946413 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.240996130 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:805:gst_webrtc_ice_set_local_credentials:<webrtcbin0:ice>
Setting local ICE credentials on ICE stream 2
ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
0:00:15.241003763 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:823:gst_webrtc_ice_gather_candidates:<webrtcbin0:ice>
gather candidates for stream 1
0:00:15.241023932 5262 0x3ad6850 DEBUG webrtcicestream
icestream.c:177:gst_webrtc_ice_stream_gather_candidates:<webrtcicestream0>
start gathering candidates
0:00:15.241030587 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:823:gst_webrtc_ice_gather_candidates:<webrtcbin0:ice>
gather candidates for stream 2
0:00:15.241034939 5262 0x3ad6850 DEBUG webrtcicestream
icestream.c:177:gst_webrtc_ice_stream_gather_candidates:<webrtcicestream1>
start gathering candidates
2021-07-14 14:38:51,623 INFO srtutils on-negotiation-needed
0:00:15.241607769 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:4325:_set_description_task:<webrtcbin:spk_42-view>
Attempting to set remote offer in the stable state
0:00:15.241677069 5262 0x3ad6850 DEBUG webrtcbin
gstwebrtcbin.c:4492:_set_description_task:<webrtcbin:spk_42-view> we are
in ice controlling mode: false
0:00:15.241743688 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin0>
changing state: PLAYING => PLAYING
0:00:15.241835549 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.241928179 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:746:gst_webrtc_ice_set_remote_credentials:<webrtcbin0:ice>
Setting remote ICE credentials on ICE stream 1 ufrag:UEdf
pwd:cmYR4+mJlv7JhfaK310sCKCi
0:00:15.241939628 5262 0x3ad6850 DEBUG webrtctransportsendbin
transportsendbin.c:195:transport_send_bin_change_state:<transportsendbin1>
changing state: PLAYING => PLAYING
0:00:15.242105492 5262 0x3ad6850 DEBUG webrtctransportreceivebin
transportreceivebin.c:236:transport_receive_bin_change_state: changing
state: PLAYING => PLAYING
0:00:15.242487623 5262 0x3ad6850 DEBUG webrtcice
gstwebrtcice.c:746:gst_webrtc_ice_set_remote_credentials:<webrtcbin0:ice>
Setting remote ICE credentials on ICE stream 2 ufrag:UEdf
pwd:cmYR4+mJlv7JhfaK310sCKCi
2021-07-14 14:38:51,625 INFO srtutils remote description set:
<GstWebRTC.WebRTCSessionDescription object at 0x7f3af741aee8
(GstWebRTCSessionDescription at 0x7f3aa401fed0)>
0:00:15.243474103 5262 0x3ad6850 INFO webrtcbin
gstwebrtcbin.c:3323:_create_sdp_task:<webrtcbin:spk_42-view> creating
answer sdp with options (NULL)
2021-07-14 14:38:51,628 INFO srtutils on_answer_created:
v=0
o=- 1542449444684893457 2 IN IP4 0.0.0.0
s=-
t=0 0
m=video 9 UDP/TLS/RTP/SAVPF 97
c=IN IP4 0.0.0.0
a=ice-ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n
a=ice-pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
a=mid:0
a=rtcp-mux
a=setup:active
a=rtpmap:97 H264/90000
a=framerate:25
a=fmtp:97
packetization-mode=1;sprop-parameter-sets=Z0LAKJWgHgCJ+XAWoCAgKAAAH0AABhqEIA==,aM48gA==
a=ssrc:3751326270 msid:user2625019075 at host-23f83448 webrtctransceiver0
a=ssrc:3751326270 cname:user2625019075 at host-23f83448
a=sendonly
a=fingerprint:sha-256
1D:29:E3:99:15:B7:90:D3:D7:4B:C7:AB:6D:FE:A6:C4:F5:CC:D2:FA:07:0B:A3:3D:6A:B3:15:A1:C1:56:8D:AE
m=audio 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=ice-ufrag:LoyecsyyVzcyyCGDeABWAulrIpKDmH4n
a=ice-pwd:ZNdBoFhJ0ry93Ajc8Pq901irjOmbPdXQ
a=mid:1
a=rtcp-mux
a=setup:active
a=rtpmap:96 OPUS/48000/2
a=fmtp:96 sprop-maxcapturerate=48000;sprop-stereo=0
a=ssrc:1715306335 msid:user2625019075 at host-23f83448 webrtctransceiver1
a=ssrc:1715306335 cname:user2625019075 at host-23f83448
a=sendonly
a=fingerprint:sha-256
1D:29:E3:99:15:B7:90:D3:D7:4B:C7:AB:6D:FE:A6:C4:F5:CC:D2:FA:07:0B:A3:3D:6A:B3:15:A1:C1:56:8D:AE
It just keeps signalling on-negotiation-needed. This doesn't happen when
the webrtcbin creates the offer, nor when the browser is sending an
offer to send audio/video. If I try to skip the set-remote-description
the second time, and only ask for a new answer, it just says
ERROR webrtcbin
gstwebrtcbin.c:2913:_create_answer_task:<webrtcbin:spk_42-view> Asked to
create an answer without a remote description
What am I doing wrong?
Kind regards,
Michiel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20210714/bd2b67c8/attachment-0001.htm>
More information about the gstreamer-devel
mailing list