demuxing mp4 and queues

Mathieu Duponchelle mathieu at centricular.com
Wed Mar 6 11:45:49 UTC 2019


This is a classical problem, and a good illustration why you usually need queues after elements
with N src pads, and before elements with N sink pads:

The demuxer is pushing to its source pads from the same thread, and if you have connected
these source pads with sync=true sinks, their chain function blocks until prerolling is done,
that is until each sink with sync=true has received a buffer. Adding queues decouples branches of
the pipeline, as they will start their own streaming thread.

On 3/5/19 11:11 PM, Wudo Balmus wrote:
> Hello,
> I'm trying to demux and playback an mp4 file with h.264 video and aac audio. This pipeline works fine:
>
> gst-launch-1.0 -v filesrc location=working.mp4 ! qtdemux name=a a. ! queue ! avdec_h264 ! videoconvert ! autovideosink a. ! queue ! avdec_aac ! autoaudiosink
>
> However when the queues are removed, it hangs, nothing is played back:
>
> gst-launch-1.0 -v filesrc location=working.mp4 ! qtdemux name=a a. ! avdec_h264 ! videoconvert ! autovideosink a. ! avdec_aac ! autoaudiosink
>
> It works fine without a queue when I just try to playback video without audio:
>
> gst-launch-1.0 -v filesrc location=working.mp4 ! qtdemux name=a a. ! avdec_h264 ! videoconvert ! autovideosink
>
> I'm trying to understand why queues are necessary in this scenario. Cannot qtdemux just write data to video/audio decoder without the queues?
>
> Best regards,
> Wudo
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190306/26ca3687/attachment.html>


More information about the gstreamer-devel mailing list