[Libav-user] Seeking in a video with interframes
jstrecker at kosada.com
Thu Jun 2 00:33:00 CEST 2011
Alex, thanks for your reply. I'm not sure what you mean by "color conversion or filtering". You're referring to something like sws_scale? This is basically my read/decode loop for seeking--
// for each frame from the keyframe to the frame you want:
avcodec_decode_video2(pCodecCtx, captureFrame, &gotPicture, &packet);
} while (! gotPicture);
There's no color conversion or filtering in there, right?
On Jun 1, 2011, at 4:01 PM, Alex Cohn wrote:
> I am afraid you are out of luck there. You can use AVSEEK_FLAG_ANY
> only if you are not interested in the decoded results. For example,
> this way you can extract some metadata, or start read process to reach
> the next I-frame.
> There are some optimizations to consider for approach (1), though. For
> example, make sure you request no color conversion or filtering for
> the frames that you do not need.
> On Wed, Jun 1, 2011 at 9:15 PM, Jaymie Strecker <jstrecker at kosada.com> wrote:
>> If you want to seek to an arbitrary frame in a video with interframes, what are your options?
>> As I understand it, you should be able to:
>> (1) seek to the previous keyframe and then enter a read/decode loop until you reach the frame you want, or
>> (2) pass AVSEEK_FLAG_ANY to the seek function (av_seek_frame or avformat_seek_file).
>> Does (2) work? I've tried it with both seek functions, and with various configurations of avcodec_flush_buffers (flush before seeking, after seeking, or not at all) -- but, at best, it results in frames with artifacts. If it makes a difference, I'm working with H.264 videos.
>> So, right now I'm using (1) but the read/decode loop is slow. Is there a faster way to seek?
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
> Libav-user mailing list
> Libav-user at ffmpeg.org
More information about the Libav-user