Problem with whipwebrtcsink uplink to Dolby.io, was Problem with NDISRC, WHIPSINK, and audio

Sanchayan Maity sanchayan at sanchayanmaity.net
Tue Aug 8 04:10:17 UTC 2023


Hello,

On 23-08-07 19:26:56, GST Developer via gstreamer-devel wrote:
> Hello Tarun
> 
> I have rebuilt gstreamer and tested again with Dolby.io <http://dolby.io/>
> 
> This its failing on a different tack.
> 
> gst-launch-1.0  ndisrc ndi-name="PRIMARY (SIGGEN)" ! ndisrcdemux  name=demux demux.video ! queue ! videoconvert ! whipwebrtcsink name=ws signaller::whip-endpoint="https://director.millicast.com/api/whip/myStreamName",auth-token='..redacted..' demux.audio ! queue ! audioconvert ! ws. 

We have tested the below pipeline with Dolby.

gst-launch-1.0 videotestsrc pattern=ball ! queue ! videoconvert ! queue ! vp8enc deadline=1 ! video/x-vp8 ! queue ! whipwebrtcsink name=ws signaller::whip-endpoint="https://director.millicast.com/api/whip/streamName" signaller::auth-token="auth-token" audiotestsrc wave=ticks ! queue ! opusenc ! audio/x-opus ! queue ! ws.

Note the specification of authentication token in the pipeline.

> 
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Pipeline is PREROLLED ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> Redistribute latency...
> Redistribute latency...
> Redistribute latency...
> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: GStreamer encountered a general stream error.
> Additional debug info:
> net/webrtc/src/webrtcsink/imp.rs(1499): gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::connect_signaller::{{closure}}::{{closure}} (): /GstPipeline:pipeline0/GstWhipWebRTCSink:ws:
> Signalling error: Error: Unexpected response: 401 - Unauthorized
> Execution ended after 0:00:02.364739232
> Setting pipeline to NULL ...
> Freeing pipeline ...
> 
> I have confirmed the same authentication token works fine with the older whipsink method, so if authentication is failing, it's not simply due to a bad token. 
> 
> Please let me know your thoughts ?   
> 
> Are you able to test with dolby.io <http://dolby.io/> ?  they have a free account mechanism for this sort of testing.
> 
> Many thanks for your help.
> 
> 
> 
> > On 5 Aug 2023, at 05:24, Tarun Tej K <tarun4690 at gmail.com> wrote:
> > 
> > Hello,
> > 
> > The fix for this issue is now merged upstream. Here is the MR - https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1290
> > 
> > 
> > On Sat, 29 Jul, 2023, 19:25 Tarun Tej K, <tarun4690 at gmail.com <mailto:tarun4690 at gmail.com>> wrote:
> >> Hi,
> >> 
> >> Thanks for trying this out. 
> >> 
> >> We discovered a bug with whipwebrtcsink (and whipsink) that got exposed because of one of the recent changes.
> >> 
> >> More information about this issue is captured here - https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/394 to track this bug.
> >> 
> >> 
> >> On Sat, 29 Jul, 2023, 18:33 GST Developer, <gstreamer at gallery.co.uk <mailto:gstreamer at gallery.co.uk>> wrote:
> >>> Hi Tarun
> >>> 
> >>> We have finally got things up and running with GStreamer 1.22 as you advised, and indeed the 'request-aux-sender' issue has gone away.
> >>> 
> >>> Now we have a different issue, which might be some specific compatibility with Dolby.io <http://dolby.io/> (formerly millicast).
> >>> 
> >>> Here is what we get - the pipeline runs for a few seconds before failing:
> >>> 
> >>> 
> >>> gst-launch-1.0  ndisrc ndi-name="PRIMARY (SIGGEN)" ! ndisrcdemux  name=demux demux.video ! queue ! videoconvert ! whipwebrtcsink name=ws signaller::whip-endpoint="https://director.millicast.com/api/whip/myStreamName",auth-token="......redacted......" demux.audio ! queue ! audioconvert ! ws.
> >>> Setting pipeline to PAUSED ...
> >>> Pipeline is live and does not need PREROLL ...
> >>> Pipeline is PREROLLED ...
> >>> Setting pipeline to PLAYING ...
> >>> New clock: GstSystemClock
> >>> Redistribute latency...
> >>> Redistribute latency...
> >>> Redistribute latency...
> >>> 
> >>> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: GStreamer encountered a general stream error.
> >>> Additional debug info:
> >>> net/webrtc/src/webrtcsink/imp.rs <http://imp.rs/>(1493): gstrswebrtc::webrtcsink::imp::BaseWebRTCSink::connect_signaller::{{closure}}::{{closure}} (): /GstPipeline:pipeline0/GstWhipWebRTCSink:ws:
> >>> Signalling error: Error: Error None (Some("Old Canceller should not exist")) at net/webrtc/src/utils.rs:131 <http://utils.rs:131/>
> >>> 
> >>> Execution ended after 0:00:02.911160133
> >>> Setting pipeline to NULL ...
> >>> Freeing pipeline ...
> >>> 
> >>> 
> >>> Any ideas ?
> >>> 
> >>> Many thanks !
> >>> 
> >>>  
> >>> 
> >>>> On 15 Jul 2023, at 15:44, Tarun Tej K <tarun4690 at gmail.com <mailto:tarun4690 at gmail.com>> wrote:
> >>>> 
> >>>> Ok, you will need Gstreamer version 1.22 for this, where webrtcbin has this signal 'request-aux-sender' implemented.
> >>>> 
> >>> 
> >>> 
> >>>> On Sat, 15 Jul, 2023, 19:53 GST Developer, <gstreamer at gallery.co.uk <mailto:gstreamer at gallery.co.uk>> wrote:
> >>>>> Thanks Tarun,
> >>>>> 
> >>>>> we are making progress - this pipeline does startup, but it fails after a few seconds:
> >>>>> 
> >>>>> gst-launch-1.0  ndisrc ndi-name="NDIPE8 (SIGGEN)" ! ndisrcdemux  name=demux demux.video ! queue ! videoconvert ! whipwebrtcsink name=ws signaller::whip-endpoint="https://director.millicast.com/api/whip/myStreamName",auth-token=“..redacted.." demux.audio ! queue ! audioconvert ! ws.
> >>>>> 
> >>>>> Setting pipeline to PAUSED ...
> >>>>> Pipeline is live and does not need PREROLL ...
> >>>>> Pipeline is PREROLLED ...
> >>>>> Setting pipeline to PLAYING ...
> >>>>> New clock: GstSystemClock
> >>>>> Redistribute latency...
> >>>>> Redistribute latency...
> >>>>> Redistribute latency…
> >>>>> 
> >>>>> <it runs fine here for a few seconds with the numbers running>
> >>>>> 
> >>>>> thread 'tokio-runtime-worker' panicked at 'Signal 'request-aux-sender' of type 'GstWebRTCBin' not found', /home/ubuntu/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/44c4ab3/glib/src/object.rs:2642:32
> >>>>> note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
> >>>>> thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: PoisonError { .. }', net/webrtc/src/webrtcsink/imp.rs:3013:47
> >>>>> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: Panicked: called `Result::unwrap()` on an `Err` value: PoisonError { .. }
> >>>>> thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: PoisonError { .. }', net/webrtc/src/webrtcsink/imp.rs:3013Execution ended after 0:00:01.886767934
> >>>>> :47Setting pipeline to NULL ...
> >>>>> 
> >>>>> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: Panicked
> >>>>> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: Panicked
> >>>>> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: Panicked: called `Result::unwrap()` on an `Err` value: PoisonError { .. }
> >>>>> ERROR: from element /GstPipeline:pipeline0/GstWhipWebRTCSink:ws: Panicked
> >>>>> Freeing pipeline …
> >>>>> 
> >>>>> 
> >>> 
> 
> 
> 
> 

-- 
Regards,
Sanchayan.


More information about the gstreamer-devel mailing list