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