udp streaming and webm

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

udp streaming and webm

Trevor Clarke
I'm trying to generate a UDP stream encoded with webm/vp8 and I'm having some issues. My source pipeline is:

videotestsrc is-live=true ! videoconvert ! vp8enc ! webmmux streamable=true ! chopmydata max-size=9000 ! udpsink qos=true sync=true host=127.0.0.1 port=5432 bind-address=127.0.0.1

Eventually this will be multicast udp but I'm using loopback for testing. The chopmydata is there to ensure the data packets are below the MTU (all machines and network equip can handle big packets).

I'm testing the stream in VLC and connect to udp://@:5432

If I start VLC then start gst-launch-1.0 everything works fine. However, if I start gst-launch first, then VLC (or stop gst-launch then start it again without restarting VLC) I see no video. VLC reports that packets are being received but no video is decoded.

If I use gst-discoverer-1.0 on udp://127.0.0.1:5432 and start that before the stream it detects webm/vp8. If I start the stream first I get an error "Could not determine type of stream."

My guess is that I haven't configured the codec or the container to include additional headers or something similar. Is this even possible with webm/vp8? I've successfully set this up with x264enc ! mpegtsmux  which are typically used for this sort of thing but one of my clients will be a web browser (via a udp to websocket proxy and MediaSource extensions) so mpegts is not an option.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: udp streaming and webm

Baby Octopus
Administrator
It seems the VLC is not receiving header data if it joins in the middle
Check SPS and PPS setting in the H264 stream. They need to be sent
periodically, typically once for each keyframe

I'm not really sure if webm needs to have any header data like PAT/PMT
in mpegts that needs to be sent periodically. You can check the standard



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: udp streaming and webm

Arjen Veenhuizen
How about setting min-index-interval on webmmux to something sensible like
1000000000 (1 sec)?
Also, you should consider keeping the GOP of the video short, e.g. mode=cbr
error-resilient=true keyframe-max-dist=10 auto-alt-ref=true





--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: udp streaming and webm

Trevor Clarke
Still no luck:

$ gst-launch-1.0 videotestsrc ! videoconvert ! vp8enc end-usage=cbr error-resilient=partitions keyframe-max-dist=10 auto-alt-ref=true ! webmmux min-index-interval=10000000 ! chopmydata max-size=9000 ! udpsink host=127.0.0.1 port=5432 & sleep 3 && gst-discoverer-1.0 udp://127.0.0.1:5432

[1] 78569

Setting pipeline to PAUSED ...

Pipeline is PREROLLING ...

Redistribute latency...

Pipeline is PREROLLED ...

Setting pipeline to PLAYING ...

New clock: GstSystemClock

Analyzing udp://127.0.0.1:5432

Done discovering udp://127.0.0.1:5432

An error was encountered while discovering the file

 Could not determine type of stream.



But this works (changed sleep to 0)

$ gst-launch-1.0 videotestsrc ! videoconvert ! vp8enc end-usage=cbr error-resilient=partitions keyframe-max-dist=10 auto-alt-ref=true ! webmmux min-index-interval=10000000 ! chopmydata max-size=9000 ! udpsink host=127.0.0.1 port=5432 & sleep 0 && gst-discoverer-1.0 udp://127.0.0.1:5432

[1] 78566

Analyzing udp://127.0.0.1:5432

Setting pipeline to PAUSED ...

Pipeline is PREROLLING ...

Redistribute latency...

Pipeline is PREROLLED ...

Setting pipeline to PLAYING ...

New clock: GstSystemClock

Done discovering udp://127.0.0.1:5432


Topology:

  container: WebM

    video: VP8


Properties:

  Duration: 0:00:00.266333333

  Seekable: no

  Tags: 

      video codec: VP8 video

      container format: Matroska






On Thu, Mar 8, 2018 at 11:54 AM, Arjen Veenhuizen <[hidden email]> wrote:
How about setting min-index-interval on webmmux to something sensible like
1000000000 (1 sec)?
Also, you should consider keeping the GOP of the video short, e.g. mode=cbr
error-resilient=true keyframe-max-dist=10 auto-alt-ref=true





--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel