[Libav-user] a question for av_seek_frame

YIRAN LI mrfun.china at gmail.com
Mon Dec 9 05:29:40 CET 2013

And I have another question: If an AVPacket object has AV_PKT_FLAG_KEY bit
set in flags, does that mean this packet when passed into
avcodec_decode_video2 can always get a complete frame (I mean by calling
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet) the 3rd
argument set to true)?


2013/12/9 YIRAN LI <mrfun.china at gmail.com>

> Thanks Don,
> 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.
> 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?
> Thanks
> 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?
>> >Thanks
>> 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.
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/libav-user
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20131209/645d4324/attachment.html>

More information about the Libav-user mailing list