AppSink pull-preroll doesn't work on H.264 MP4 Videos

Nicolas Dufresne nicolas at
Fri Aug 4 18:27:44 UTC 2017

Le vendredi 04 août 2017 à 10:01 -0700, Kirk Baker a écrit :
> Hello,
> I have been working on a small program to extract frames from videos,
> basing my work on the 'snapshot' example code:
> <
> xamples/snapshot/snapshot.c>
> …adapting it to our needs.  It works great for the great majority of
> video formats that I've tried, but H.264 encoded MP4 videos cause it
> to hang when emitting the 'pull-preroll' signal.  I modified the code
> to instead call gst_app_sink_try_pull_preroll() and giving it a 15-
> second timeout, which eliminates the hang but does not produce a
> frame sample either.
> Is this expected?  Is there some way to work around this behavior?

H.264 and snapshops (aka single image) isn't a great fit. Encoder may
require multiple input frame before producing the first output. To
workaround this, you should send en EOS event to force the encoder from
draining the frames.

> In order to try and diagnose the problem I have played around with
> gst-launch-1.0 like so:
> gst-launch-1.0 filesrc location=path/to/mp4 ! decodebin ! queue !
> autovideoconvert ! pngenc ! filesink location="frame.png"
> And it does produce an image correctly (it writes each frame of the
> video to the same image file though, and I do know that one can
> number the files if one wants to.)  But I only want one frame at a
> particular time point in the video, so this isn't a good solution for
> us.
> Any ideas?

EOS event.

> Thanks in advance,
> -Kirk
> Kirk A. Baker
> Senior Software Engineer
> Camera Bits, Inc.
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part
URL: <>

More information about the gstreamer-devel mailing list