livekitwebrtcsink: failure to negotiate h264
On M1 MacOS, livekitwebrtcsink
appears to be unable to negotiate h264 encoding, and without a video-caps='video/x-vp8'
property, logs a pipeline discover ERROR
message, even though the connection is still made with vp8 encoding.
I've tested against versions 0.11, current HEAD and branch livekit-0.2
and all exhibit this behavior.
The pipeline I'm using for these tests is autovideosrc ! videoconvert ! video/x-raw ! queue ! livekitwebrtcsink
(see properties in the first line of logs output below).
The behavior appears to be 100% reproducible.
video-caps
Logs without $ GST_DEBUG=webrtcsink:6 GST_PLUGIN_PATH=$HOME/src/rust/gst-plugins-rs/target/release/ gst-launch-1.0 -e autovideosrc ! videoconvert ! video/x-raw ! queue ! livekitwebrtcsink signaller::ws-url=wss://<project>.livekit.cloud signaller::api-key="<api-key>" signaller::secret-key="<secret-key>" signaller::room-name='<room>'
Using default project gstreamer-test
twirp error not_found: room not found
Setting pipeline to PAUSED ...
0:00:00.057385000 60119 0x13280d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1402:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::prepare:<livekitwebrtcsink0> preparing
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.208232000 60119 0x13281d300 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:3035:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::sink_event:<livekitwebrtcsink0:video_0> Received caps event Caps { seqnum: Seqnum(68), running-time-offset: 0, structure: Some(GstEventCaps { caps: (GstCaps) video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 }), caps: Caps(video/x-raw(memory:SystemMemory) { width: (gint) 1920, height: (gint) 1080, format: (gchararray) "UYVY", framerate: (GstFraction) 30/1 }) }
Redistribute latency...
0:00:00.420834000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2773:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline for input caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 and output caps ANY with codec Codec { name: "VP8", caps: Caps(video/x-vp8(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(96), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x132831b30, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328cf810, type: GstElementFactory } }, output_filter: None }) }
0:00:00.420854000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2779:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline
0:00:00.434257000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x1331081e0, type: GstVP8Enc } }
0:00:00.435455000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2773:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline for input caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 and output caps ANY with codec Codec { name: "H264", caps: Caps(video/x-h264(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(97), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x1328fb9e0, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328d68b0, type: GstElementFactory } }, output_filter: None }) }
0:00:00.435469000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2779:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline
0:00:00.443567000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x1331201c0, type: vtenc_h264 } }
0:00:00.444693000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2773:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline for input caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 and output caps ANY with codec Codec { name: "VP9", caps: Caps(video/x-vp9(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(98), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x132831970, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328ced40, type: GstElementFactory } }, output_filter: None }) }
0:00:00.444701000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2779:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline
0:00:00.450997000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x1340282b0, type: GstVP9Enc } }
0:00:00.452109000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2773:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline for input caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 and output caps ANY with codec Codec { name: "H265", caps: Caps(video/x-h265(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(99), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x1328fb900, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328d4d70, type: GstElementFactory } }, output_filter: None }) }
0:00:00.452116000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2779:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline
0:00:00.458130000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x133120700, type: vtenc_h265 } }
0:00:00.458340000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2876:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}: Discovery pipeline got caps Caps(application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", clock-rate: (gint) 90000, encoding-name: (gchararray) "VP8", payload: (gint) 96, ssrc: (guint) 3607631419, timestamp-offset: (guint) 744056945, seqnum-offset: (guint) 7492, a-framerate: (gchararray) "30", extmap-1: (gchararray) "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" })
0:00:00.458354000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2892:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Codec discovery pipeline for caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 with codec Codec { name: "VP8", caps: Caps(video/x-vp8(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(96), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x132831b30, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328cf810, type: GstElementFactory } }, output_filter: None }) } succeeded: application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8, payload=(int)96, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01;
0:00:00.470003000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2876:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}: Discovery pipeline got caps Caps(application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", clock-rate: (gint) 90000, encoding-name: (gchararray) "VP9", payload: (gint) 98, ssrc: (guint) 1440737744, timestamp-offset: (guint) 2138351826, seqnum-offset: (guint) 28602, a-framerate: (gchararray) "30", extmap-1: (gchararray) "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" })
0:00:00.470026000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2892:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Codec discovery pipeline for caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 with codec Codec { name: "VP9", caps: Caps(video/x-vp9(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(98), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x132831970, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328ced40, type: GstElementFactory } }, output_filter: None }) } succeeded: application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP9, payload=(int)98, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01;
0:00:00.485517000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.485527000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.517997000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.518009000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.555375000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.555390000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.555928000 60119 0x132785a90 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:2843:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}: Error in discovery pipeline: Error {
structure: Some(
GstMessageError {
gerror: (GError) ((GError*) 0x133a0f470),
debug: (gchararray) "../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline2/GstAppSrc:appsrc1:\nstreaming stopped, reason not-negotiated (-4)",
details: Structure(
details {
flow-return: (gint) -4,
},
),
},
),
source: Some(
(
Object {
inner: TypedObjectRef {
inner: 0x00000001330f08e0,
type: GstAppSrc,
},
},
"appsrc1",
),
),
error: Error {
domain: gst-stream-error-quark,
code: 1,
message: "Internal data stream error.",
},
debug: Some(
"../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline2/GstAppSrc:appsrc1:\nstreaming stopped, reason not-negotiated (-4)",
),
details: Some(
details {
flow-return: (gint) -4,
},
),
}
0:00:00.587078000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.587085000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.587087000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.587326000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2876:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}: Discovery pipeline got caps Caps(application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", clock-rate: (gint) 90000, encoding-name: (gchararray) "H265", sprop-vps: (gchararray) "QAEMAf//AWAAAAMAsAAAAwAAAwB4FcCQ", sprop-sps: (gchararray) "QgEBAWAAAAMAsAAAAwAAAwB4oAPAgBEHy4gV7kWVTUBAQEAg", sprop-pps: (gchararray) "RAHALLwUyQ==", payload: (gint) 99, ssrc: (guint) 2159928674, timestamp-offset: (guint) 606956755, seqnum-offset: (guint) 6787, a-framerate: (gchararray) "30", extmap-1: (gchararray) "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" })
0:00:00.587349000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2892:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Codec discovery pipeline for caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 with codec Codec { name: "H265", caps: Caps(video/x-h265(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(99), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x1328fb900, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1328d4d70, type: GstElementFactory } }, output_filter: None }) } succeeded: application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265, sprop-vps=(string)QAEMAf//AWAAAAMAsAAAAwAAAwB4FcCQ, sprop-sps=(string)QgEBAWAAAAMAsAAAAwAAAwB4oAPAgBEHy4gV7kWVTUBAQEAg, sprop-pps=(string)"RAHALLwUyQ\=\=", payload=(int)99, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01;
0:00:00.618457000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.618476000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.618479000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.650327000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.650333000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.650335000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.683711000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.683718000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.683721000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.718771000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.718781000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.718784000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.749401000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.749410000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.749412000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.784758000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.784768000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.784771000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.816911000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.816920000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.816923000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.850036000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.850044000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.850047000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.883981000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.883994000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.883997000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.914933000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.914940000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.914943000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.949311000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.949320000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.949322000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:00.983365000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:00.983375000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:00.983378000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:01.013680000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:01.013690000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:01.013692000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:01.047499000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:01.047507000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:01.047510000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:01.082146000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:01.082155000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:01.082159000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:01.113573000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:01.113581000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:01.113585000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:01.147843000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc0> Failed to push buffer: Pad is flushing
0:00:01.147852000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc1> Failed to push buffer: Pad is flushing
0:00:01.147855000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc2> Failed to push buffer: Pad is flushing
0:00:01.147857000 60119 0x13281d300 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3081:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed:<appsrc3> Failed to push buffer: Pad is flushing
0:00:01.147888000 60119 0x132785a90 WARN webrtcsink net/webrtc/src/webrtcsink/imp.rs:2977:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::lookup_caps::{{closure}}:<livekitwebrtcsink0> Codec discovery pipeline failed: Internal data stream error.
0:00:02.164937000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1959:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session:<livekitwebrtcsink0> Adding session: unique for peer: unique
0:00:02.176002000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1357:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::request_webrtcbin_pad::{{closure}}:<livekitwebrtcsink0> Requesting WebRTC pad with caps application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8, payload=(int)96, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, ssrc=(uint)4024356659; application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP9, payload=(int)98, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, ssrc=(uint)4024356659; application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265, sprop-vps=(string)QAEMAf//AWAAAAMAsAAAAwAAAwB4FcCQ, sprop-sps=(string)QgEBAWAAAAMAsAAAAwAAAwB4oAPAgBEHy4gV7kWVTUBAQEAg, sprop-pps=(string)"RAHALLwUyQ\=\=", payload=(int)99, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, ssrc=(uint)4024356659
0:00:02.176607000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1836:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::negotiate:<livekitwebrtcsink0> Negotiating for session unique
0:00:02.176620000 60119 0x132785a90 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1859:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::negotiate: Creating offer for session unique
0:00:02.177105000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.177150000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.213588000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.214965000 60119 0x13310c860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1862:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::negotiate::{{closure}}: Created offer for session unique
0:00:02.218482000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2162:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice gathering state in session unique (peer unique) changed: Gathering
0:00:02.253095000 60119 0x13310c860 WARN webrtcsink net/webrtc/src/webrtcsink/imp.rs:2039:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}::{{closure}}: rtprtxsend doesn't have a `stuffing-kbps` property, stuffing disabled
0:00:02.253376000 60119 0x13310c860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2732:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::handle_sdp_answer::{{closure}}: received reply Ok(None)
0:00:02.253387000 60119 0x13310c860 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:979:gstrswebrtc::webrtcsink::imp::Session::connect_input_stream:<livekitwebrtcsink0> Connecting input stream video_0 for consumer unique and media 0
0:00:02.253390000 60119 0x13310c860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1000:gstrswebrtc::webrtcsink::imp::Session::connect_input_stream:<livekitwebrtcsink0> Picking codec from local offer
0:00:02.256137000 60119 0x13310c860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x13310b740, type: GstVP8Enc } }
0:00:02.256213000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.257576000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2125:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice connection state in session unique (peer unique) changed: Checking
0:00:02.257585000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2091:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Connection state in session unique (peer unique) changed: Connecting
0:00:02.266876000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.270476000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.412996000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2125:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice connection state in session unique (peer unique) changed: Connected
0:00:02.413214000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.436391000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2091:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Connection state in session unique (peer unique) changed: Connected
0:00:02.502470000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.502632000 60119 0x132785a90 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:04.314220000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2162:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice gathering state in session unique (peer unique) changed: Complete
0:00:04.364306000 60119 0x13310c860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2125:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice connection state in session unique (peer unique) changed: Completed
^Chandling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:21.874743000
Setting pipeline to NULL ...
0:00:22.032436000 60119 0x13280d1e0 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1417:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> unpreparing
0:00:22.032446000 60119 0x13280d1e0 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:854:gstrswebrtc::webrtcsink::imp::State::finalize_session: Ending session unique
0:00:22.032575000 60119 0x13280d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1441:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> Waiting for codec discoveries to finish
0:00:22.032581000 60119 0x13280d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1448:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> No codec discovery is running anymore
0:00:22.032633000 60119 0x13280d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1459:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> Ending sessions
0:00:22.032657000 60119 0x13280d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1463:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> All sessions have started finalizing
0:00:22.032661000 60119 0x13280d1e0 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1466:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> Stopping signaller
0:00:22.044069000 60119 0x133c4c4c0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:886:gstrswebrtc::webrtcsink::imp::State::finalize_session::{{closure}}: Session unique ended
0:00:22.047544000 60119 0x13280d1e0 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1468:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> Stopped signaller
0:00:22.047552000 60119 0x13280d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1479:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> All sessions are done finalizing
Freeing pipeline ...
video-caps='video/x-vp8'
Logs with $ GST_DEBUG=webrtcsink:6 GST_PLUGIN_PATH=$HOME/src/rust/gst-plugins-rs/target/release/ gst-launch-1.0 -e autovideosrc ! videoconvert ! video/x-raw ! queue ! livekitwebrtcsink video-caps='video/x-vp8' signaller::ws-url=wss://<project>.livekit.cloud signaller::api-key="<api-key>" signaller::secret-key="<secret-key>" signaller::room-name='<room>'
Setting pipeline to PAUSED ...
0:00:00.057660000 60566 0x12580d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1402:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::prepare:<livekitwebrtcsink0> preparing
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.205945000 60566 0x127010700 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:3035:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::sink_event:<livekitwebrtcsink0:video_0> Received caps event Caps { seqnum: Seqnum(68), running-time-offset: 0, structure: Some(GstEventCaps { caps: (GstCaps) video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 }), caps: Caps(video/x-raw(memory:SystemMemory) { width: (gint) 1920, height: (gint) 1080, format: (gchararray) "UYVY", framerate: (GstFraction) 30/1 }) }
Redistribute latency...
0:00:00.423235000 60566 0x125773290 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2773:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline for input caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 and output caps ANY with codec Codec { name: "VP8", caps: Caps(video/x-vp8(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(96), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x12704bb30, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1270eb810, type: GstElementFactory } }, output_filter: None }) }
0:00:00.423253000 60566 0x125773290 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2779:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline
0:00:00.437254000 60566 0x125773290 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x1260e41e0, type: GstVP8Enc } }
0:00:00.446623000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2876:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}: Discovery pipeline got caps Caps(application/x-rtp(memory:SystemMemory) { media: (gchararray) "video", clock-rate: (gint) 90000, encoding-name: (gchararray) "VP8", payload: (gint) 96, ssrc: (guint) 2572323493, timestamp-offset: (guint) 2899619961, seqnum-offset: (guint) 24472, a-framerate: (gchararray) "30", extmap-1: (gchararray) "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" })
0:00:00.446648000 60566 0x125773290 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2892:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Codec discovery pipeline for caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 with codec Codec { name: "VP8", caps: Caps(video/x-vp8(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(96), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x12704bb30, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x1270eb810, type: GstElementFactory } }, output_filter: None }) } succeeded: application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8, payload=(int)96, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01;
0:00:00.626819000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1959:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session:<livekitwebrtcsink0> Adding session: unique for peer: unique
0:00:00.634499000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1357:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::request_webrtcbin_pad::{{closure}}:<livekitwebrtcsink0> Requesting WebRTC pad with caps application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8, payload=(int)96, extmap-1=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, ssrc=(uint)1618448973
0:00:00.634934000 60566 0x125773290 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1836:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::negotiate:<livekitwebrtcsink0> Negotiating for session unique
0:00:00.634942000 60566 0x125773290 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1859:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::negotiate: Creating offer for session unique
0:00:00.635280000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.635311000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.686846000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.688056000 60566 0x1260e3860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1862:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::negotiate::{{closure}}: Created offer for session unique
0:00:00.691383000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2162:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice gathering state in session unique (peer unique) changed: Gathering
0:00:00.748313000 60566 0x1260e3860 WARN webrtcsink net/webrtc/src/webrtcsink/imp.rs:2039:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}::{{closure}}: rtprtxsend doesn't have a `stuffing-kbps` property, stuffing disabled
0:00:00.748618000 60566 0x1260e3860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2732:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::handle_sdp_answer::{{closure}}: received reply Ok(None)
0:00:00.748635000 60566 0x1260e3860 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:979:gstrswebrtc::webrtcsink::imp::Session::connect_input_stream:<livekitwebrtcsink0> Connecting input stream video_0 for consumer unique and media 0
0:00:00.748638000 60566 0x1260e3860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1000:gstrswebrtc::webrtcsink::imp::Session::connect_input_stream:<livekitwebrtcsink0> Picking codec from local offer
0:00:00.751364000 60566 0x1260e3860 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x13003c170, type: GstVP8Enc } }
0:00:00.751433000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.752679000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2125:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice connection state in session unique (peer unique) changed: Checking
0:00:00.752692000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2091:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Connection state in session unique (peer unique) changed: Connecting
0:00:00.779432000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.783266000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.898698000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2125:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice connection state in session unique (peer unique) changed: Connected
0:00:00.899173000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.918731000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2091:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Connection state in session unique (peer unique) changed: Connected
0:00:00.973260000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:00.973413000 60566 0x125773290 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:2265:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<session-pipeline-unique> Recalculating latency
0:00:02.761900000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2162:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice gathering state in session unique (peer unique) changed: Complete
0:00:02.836978000 60566 0x1260e3860 LOG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2125:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_session::{{closure}}:<livekitwebrtcsink0> Ice connection state in session unique (peer unique) changed: Completed
0:00:16.7 / 99:99:99.
video-caps='video/x-h264'
Logs with $ GST_DEBUG=webrtcsink:6 GST_PLUGIN_PATH=$HOME/src/rust/gst-plugins-rs/target/release/ gst-launch-1.0 -e autovideosrc ! videoconvert ! video/x-raw ! queue ! livekitwebrtcsink video-caps='video/x-h264' signaller::ws-url=wss://<project>.livekit.cloud signaller::api-key="<api-key>" signaller::secret-key="<secret-key>" signaller::room-name='<room>'
Using default project gstreamer-test
twirp error not_found: room not found
Setting pipeline to PAUSED ...
0:00:00.054942000 61480 0x15c00d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1402:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::prepare:<livekitwebrtcsink0> preparing
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.202709000 61480 0x15c01c700 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:3035:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::sink_event:<livekitwebrtcsink0:video_0> Received caps event Caps { seqnum: Seqnum(68), running-time-offset: 0, structure: Some(GstEventCaps { caps: (GstCaps) video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 }), caps: Caps(video/x-raw(memory:SystemMemory) { width: (gint) 1920, height: (gint) 1080, format: (gchararray) "UYVY", framerate: (GstFraction) 30/1 }) }
Redistribute latency...
0:00:00.414077000 61480 0x15bf5c090 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2773:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline for input caps video/x-raw, width=(int)1920, height=(int)1080, format=(string)UYVY, framerate=(fraction)30/1 and output caps ANY with codec Codec { name: "H264", caps: Caps(video/x-h264(memory:SystemMemory)), stream_type: StreamType(VIDEO), payload_type: Some(96), decoding_info: Some(DecodingInfo { has_decoder: true }), encoding_info: Some(EncodingInfo { encoder: ElementFactory { inner: TypedObjectRef { inner: 0x15c0ff1e0, type: GstElementFactory } }, payloader: ElementFactory { inner: TypedObjectRef { inner: 0x15c0d98b0, type: GstElementFactory } }, output_filter: None }) }
0:00:00.414094000 61480 0x15bf5c090 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:2779:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}:<livekitwebrtcsink0> Running discovery pipeline
0:00:00.426963000 61480 0x15bf5c090 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:3518:<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink as glib::subclass::object::ObjectImpl>::signals::SIGNALS::{{closure}}::{{closure}}:<livekitwebrtcsink0> applying default configuration on encoder Element { inner: TypedObjectRef { inner: 0x15c8d0190, type: vtenc_h264 } }
0:00:00.627384000 61480 0x15bf5c090 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:2843:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::run_discovery_pipeline::{{closure}}: Error in discovery pipeline: Error {
structure: Some(
GstMessageError {
gerror: (GError) ((GError*) 0x14ca3ef00),
debug: (gchararray) "../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline1/GstAppSrc:appsrc0:\nstreaming stopped, reason not-negotiated (-4)",
details: Structure(
details {
flow-return: (gint) -4,
},
),
},
),
source: Some(
(
Object {
inner: TypedObjectRef {
inner: 0x000000015c8bc360,
type: GstAppSrc,
},
},
"appsrc0",
),
),
error: Error {
domain: gst-stream-error-quark,
code: 1,
message: "Internal data stream error.",
},
debug: Some(
"../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline1/GstAppSrc:appsrc0:\nstreaming stopped, reason not-negotiated (-4)",
),
details: Some(
details {
flow-return: (gint) -4,
},
),
}
0:00:00.920236000 61480 0x15bf5c090 WARN webrtcsink net/webrtc/src/webrtcsink/imp.rs:2977:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::lookup_caps::{{closure}}:<livekitwebrtcsink0> Codec discovery pipeline failed: Internal data stream error.
0:00:00.920297000 61480 0x15bf5c090 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:3136:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed::{{closure}}:<livekitwebrtcsink0> Error running discovery: No caps found for stream video_0
ERROR: from element /GstPipeline:pipeline0/GstLiveKitWebRTCSink:livekitwebrtcsink0: There is no codec present that can handle the stream's type.
Additional debug info:
net/webrtc/src/webrtcsink/imp.rs(3137): gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::start_stream_discovery_if_needed::{{closure}} (): /GstPipeline:pipeline0/GstLiveKitWebRTCSink:livekitwebrtcsink0:
Failed to look up output caps: No caps found for stream video_0
Execution ended after 0:00:00.768052000
Setting pipeline to NULL ...
0:00:00.920699000 61480 0x15c00d1e0 INFO webrtcsink net/webrtc/src/webrtcsink/imp.rs:1417:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> unpreparing
0:00:00.920795000 61480 0x15c00d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1441:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> Waiting for codec discoveries to finish
0:00:00.920817000 61480 0x15c00d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1448:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> No codec discovery is running anymore
0:00:00.920934000 61480 0x15c00d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1459:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> Ending sessions
0:00:00.920940000 61480 0x15c00d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1463:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> All sessions have started finalizing
0:00:00.920944000 61480 0x15c00d1e0 DEBUG webrtcsink net/webrtc/src/webrtcsink/imp.rs:1479:gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::unprepare:<livekitwebrtcsink0> All sessions are done finalizing
Freeing pipeline ...
Setup
- Operating System:: macOS 13.4.1
- Device: Computer
-
gst-plugins-rs Version: tested with 0.11, current
HEAD
, and branchlivekit-0.2
, all exhibited behavior - GStreamer Version: 1.22.5
- Command line: See first line of logs above
Steps to reproduce the bug
Other than the command above, I installed GStreamer via the project's published .dmg, then cloned the gst-plugin-rs
repo and built the various tested versions with cargo build --release -p gst-plugin-webrtc
, then pointed gstreamer to it via GST_PLUGIN_PATH=$HOME/src/rust/gst-plugins-rs/target/release/
when running pipelines.