[Libav-user] a question for av_seek_frame

Don Moir donmoir at comcast.net
Wed Dec 4 13:33:55 CET 2013

>>2013/12/4 Don Moir <donmoir at comcast.net>

>>>----- 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.

>So in order to get a correct image, I must not use AVSEEK_FLAG_ANY so that av_seek_frame by default will seek to a key frame. And I should continue to read from that point and decode until I get a frame with the timestamp I want. 

Right and this takes some care.

>Do you know if all demuxers can support av_seek_frame() correctly so that as long as there's a key frame before the position I pass to the function, they all can correctly seek to that key frame?

Pretty much. You might have a problem with some mpeg files not seeking to key frame but otherwise works pretty well. You need to be careful about audio being in sync after a seek for some files as well.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20131204/17d22039/attachment.html>

More information about the Libav-user mailing list