[Libav-user] a question for av_seek_frame

Don Moir donmoir at comcast.net
Wed Dec 4 13:00:09 CET 2013

>----- Original Message ----- 
>From: YIRAN LI 
>To: This list is about using libavcodec, libavformat, libavutil,libavdevice and libavfilter. 
>Sent: Sunday, December 08, 2013 9:44 PM
>Subject: [Libav-user] a question for av_seek_frame

>Hi friends

>Here I have a question about av_seek_frame.

>For example if I have a video stream of time stamps 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. and only frame at 0 is a key frame.

>if I call av_seek_frame(x,x,5, AVSEEK_FLAG_BACKWARD | AVSEEK_FLAG_ANY) and then av_read_frame, the first frame I get will be frame 6, is this correct?

>then if I call av_seek_frame(x, x, 5, AVSEEK_FLAG_BACKWARD) and then av_read_frame, then the first frame I get will be frame 1, is this correct?

>and if both can seek to a frame and first one can get a frame quicker, in what circumstance should I use the second one?


Non key frames require the previous key frame in order to be decoded correctly. So if you skip past the key frame to frame 6, then the decoded image will most likely be incorrect.

While your first example may be quicker, it will not be correct. Best to stay away from AVSEEK_FLAG_ANY for normal display purposes. Proper seeking to frame 6 would require a seek to frame 1 and then read and decode to frame 6.  AVSEEK_FLAG_ANY can be useful in some cases but generally not for normal display.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20131204/10abb603/attachment.html>

More information about the Libav-user mailing list