Hi all, I've been trying to offer a WebRTC stream from a gstreamer pipeline to Chrome without much success. I'm able to reproduce the same issue with the Centricular webrtc-sendrecv example:
https://github.com/centricular/gstwebrtc-demos/blob/master/sendrecv/gst/webrtc-sendrecv.c The GStreamer app creates and sends offer, the Chrome app responds with an answer and ICE candidates are exchanged but things go downhill from there. On the Chrome side, webrtc-internals show that a candidate pair was successfully selected
(googReadable/googWritable are true) but the PeerConnection's ICE connection state gets stuck in "checking". The Chrome debug logs show that there's a DTLS timeout. On the GStreamer side, with *tls* logs set to level 5, I see this sequence repeatedly: 0:00:11.835289000 15540 00000286D591D440 DEBUG dtlsdec gstdtlsdec.c:548:sink_chain:<dtlsdec0> received buffer from rtp_0_2873075822 with length 155 0:00:11.847957000 15540 00000286D591D440 LOG dtlsconnection gstdtlsconnection.c:629:log_state:<GstDtlsConnection@00000286D56A6890> process start: role=server buf=(00000286D5D3E130:0/155) 10110|0 before SSL initialization 0:00:11.869501000 15540 00000286D591D440 LOG dtlsconnection gstdtlsconnection.c:629:log_state:<GstDtlsConnection@00000286D56A6890> process after read: role=server buf=(00000286D5D3E130:0/155) 10110|0 before
SSL initialization 0:00:11.887298000 15540 00000286D591D440 LOG dtlsconnection gstdtlsconnection.c:629:log_state:<GstDtlsConnection@00000286D56A6890> poll: before handshake: role=server buf=(00000286D5D3E130:0/155) 10110|0 before
SSL initialization 0:00:11.904438000 15540 00000286D591D440 LOG dtlsconnection gstdtlsconnection.c:629:log_state:<GstDtlsConnection@00000286D56A6890> poll: after handshake: role=server buf=(00000286D5D3E130:0/155) 10110|0 before
SSL initialization 0:00:11.920380000 15540 00000286D591D440 DEBUG dtlsconnection gstdtlsconnection.c:758:openssl_poll:<GstDtlsConnection@00000286D56A6890> do_handshake encountered BIO error 0:00:11.935830000 15540 00000286D591D440 ERROR dtlsconnection gstdtlsconnection.c:771:openssl_poll:<GstDtlsConnection@00000286D56A6890> SSL error 0:00:11.946996000 15540 00000286D591D440 ERROR dtlsconnection gstdtlsconnection.c:727:ssl_err_cb:<GstDtlsConnection@00000286D56A6890> ssl error: 26156:error:140B4090:SSL routines:SSL_do_handshake:connection type
not set:ssl/ssl_lib.c:3554: 0:00:11.968253000 15540 00000286D591D440 LOG dtlsconnection gstdtlsconnection.c:629:log_state:<GstDtlsConnection@00000286D56A6890> process after poll: role=server buf=(00000286D5D3E130:0/155) 10110|0 before
SSL initialization 0:00:11.987237000 15540 00000286D591D440 DEBUG dtlsconnection gstdtlsconnection.c:551:gst_dtls_connection_process:<GstDtlsConnection@00000286D56A6890> read result: -1 Based on the "SSL_do_handshake:connection type not set" error, it appears that SSL_set_connect_state()/SSL_set_accept_state() hasn't been called on GstDtlsConnection's OpenSSL handle which should happen in gst_dtls_connection_start()
but I never see the corresponding "log_state:initial state set:" message. I *am* able to successfully run the gst-plugins-bad/tests/examples/webrtc/webrtc.c app. In that case, after the answer is processed, I see "initial state set" message preceded by creation of a new src pad on the webrtcbin instance which
I *don't* see in my problem apps: 0:00:01.867442000 35404 0000017960746740 DEBUG webrtcbin gstwebrtcbin.c:3145:_update_transceiver_from_sdp_media:<recv> creating new receive pad for transceiver <webrtctransceiver1> 0:00:01.881440000 35404 00000179607466C0 DEBUG dtlsenc gstdtlsenc.c:378:src_activate_mode:<dtlsenc0> src pad activating in push mode 0:00:01.896187000 35404 0000017960746740 DEBUG webrtcbin gstwebrtcbin.c:268:gst_webrtc_bin_pad_new:<'':src_0> new visible pad with direction src 0:00:01.910867000 35404 00000179607466C0 DEBUG dtlsenc gstdtlsenc.c:330:gst_dtls_enc_change_state:<dtlsenc0> starting connection rtp_0_324247815 0:00:01.921569000 35404 0000017960746740 INFO webrtcbin gstwebrtcbin.c:2910:_connect_output_stream:<recv> linking output stream 0 0:00:01.936102000 35404 00000179607466C0 LOG dtlsconnection gstdtlsconnection.c:629:log_state:<GstDtlsConnection@00000179607C1EE0> initial state set: role=server buf=(0000000000000000:0/0) 10110|0 before SSL
initialization Here's the Chrome answer: v=0 o=- 671422098252769522 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE video0 audio1 a=msid-semantic: WMS y6ekH83vxbrWGYgIHXshcbQUTSYjesz8cTQU m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:UN/v a=ice-pwd:5pyFZoXXTB6g/AAPq2ASVSdt a=ice-options:trickle a=fingerprint:sha-256 98:9C:D6:67:6D:C8:8D:80:61:A1:C0:08:89:6B:1C:99:56:AE:EF:00:61:22:1B:27:CB:20:2F:FB:13:C2:FE:32 a=setup:active a=mid:video0 a=sendrecv a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 nack pli a=ssrc:1873007401 cname:PbAeaJtZ3DsTAyc8 a=ssrc:1873007401 msid:y6ekH83vxbrWGYgIHXshcbQUTSYjesz8cTQU e5c18420-14d4-4ccd-b884-4f81b51081c5 a=ssrc:1873007401 mslabel:y6ekH83vxbrWGYgIHXshcbQUTSYjesz8cTQU a=ssrc:1873007401 label:e5c18420-14d4-4ccd-b884-4f81b51081c5 m=audio 9 UDP/TLS/RTP/SAVPF 97 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:UN/v a=ice-pwd:5pyFZoXXTB6g/AAPq2ASVSdt a=ice-options:trickle a=fingerprint:sha-256 98:9C:D6:67:6D:C8:8D:80:61:A1:C0:08:89:6B:1C:99:56:AE:EF:00:61:22:1B:27:CB:20:2F:FB:13:C2:FE:32 a=setup:active a=mid:audio1 a=sendrecv a=rtcp-mux a=rtpmap:97 OPUS/48000/2 a=fmtp:97 minptime=10;useinbandfec=1 a=ssrc:4026464680 cname:PbAeaJtZ3DsTAyc8 a=ssrc:4026464680 msid:y6ekH83vxbrWGYgIHXshcbQUTSYjesz8cTQU b7c37d92-042c-417e-a4ab-79fdbe577974 a=ssrc:4026464680 mslabel:y6ekH83vxbrWGYgIHXshcbQUTSYjesz8cTQU a=ssrc:4026464680 label:b7c37d92-042c-417e-a4ab-79fdbe577974 And the webrtc.c example answer: v=0 o=- 2260608518856376157 0 IN IP4 0.0.0.0 s=- t=0 0 a=ice-options:trickle m=video 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=ice-ufrag:tkt9ckCYhpGXYbx3vOHGSN68tTAOlomF a=ice-pwd:Mvu5cUlmqpvF6xrssiXcYOr0ShtJCOwn a=rtcp-mux a=mid:video0 a=setup:active a=rtpmap:96 VP8/90000 a=rtcp-fb:96 nack pli a=recvonly a=fingerprint:sha-256 DD:30:10:C2:F2:60:91:85:9F:6F:ED:BF:0A:23:AB:60:0B:FB:08:8E:04:83:D9:A1:DF:26:54:BC:A4:E8:59:BD My system config: Windows 10 GStreamer x86_64 v1.15.2 (I've also tried v1.14.4 with the same result) Chrome 73.0.3683.103 Any ideas as to what could be going wrong would be EXTREMELY appreciated! Best, Eric _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |