[Libav-user] Why does av_seek_frame() not seek to a keyframe?

Don Moir donmoir at comcast.net
Sun Aug 5 12:36:23 CEST 2012

----- Original Message ----- 
From: "Roger Pack" <rogerdpack2 at gmail.com>
To: "This list is about using libavcodec, libavformat, libavutil,libavdevice 
and libavfilter." <libav-user at ffmpeg.org>
Sent: Thursday, August 02, 2012 2:48 PM
Subject: Re: [Libav-user] Why does av_seek_frame() not seek to a keyframe?

>> I believe that does no seeking there. Putting -ss after the input will 
>> cause
>> ffmpeg to demux up to the requested timestamp, so it's not quite related 
>> to
>> seeking (putting -ss before the input will seek the input file).
>> Since -a/vcoded copy avoids re-encoding, it just copies the packets 
>> (without
>> regard to keyframes, iiuc). The packet closest to 90 seconds probably 
>> isn't
>> a keyframe, but since that's where you requested the start it ffmpeg 
>> starts
>> copying packets from there anyway.
> Yes I would totally agree with you, except I can't find a single "-ss"
> time that seems to "accidentally hit an i-frame" and work the way you
> and I would expect it to...though I haven't looked into it much...
> -r

Given that seeking on mpeg2video does not seek to a key frame unless you get 

I did a couple of test and normally for mpeg2video the first frame read 
after a seek is not a key frame which causes a delay in the animiation. Then 
I seeked to known keyframe times and that seems to successfully seek to a 
key frame. I did this a couple times. For testing, I got the known keyframe 
times by looking at the data after a seek.

So when seeking backward you should always be at a keyframe at or before 
your requested time but in the case of mpeg2video it does not happen.

o - Is there an intent to get this reported as a bug if not already ?

o - If it is reported as a bug, whats the likelyhood it will be fixed ? I 
think I saw somewhere that it has been known for sometime or something to 
that effect. 

More information about the Libav-user mailing list