Simple AV pipeline stuck in prerolling state (mp4/h264/aac)

Mandeep Sandhu mandeepsandhu.chd at gmail.com
Mon Nov 19 03:46:04 PST 2012


>
> You need queues for each branch after qtdemux (decodebin will plug a
> multiqueue; note that the default size of 'queue' may be too small).
>
> The reason for this is the preroll mechanism. Sinks will block once they
> have received a buffer. The entire pipeline will only preroll / go to
> PAUSED state once all sinks have a buffer prerolled. If you don't have
> queues, the demuxer will push a packet out on one pad, the decoder will
> output a packet, the sink will preroll and block. This will block the
> demuxer thread, since there's no queue, so the demuxer can never push a
> buffer to the other branch, so that sink will never preroll.

Thanks for the explanation Tim. That indeed was the problem!

Adding queues after the demux fixed the issue:

$ gst-launch-0.10 filesrc location=/path/to/video.mp4 ! qtdemux
name=qtd ! queue2 ! ffdec_h264 ! autovideosink qtd. ! queue2 !
ffdec_aac ! autoaudiosink

Thanks again,
-mandeep


More information about the gstreamer-devel mailing list