[Libav-user] Libavformat - Guranteed seeking before keyframe

ilkercan Kaya canilkerkaya at gmail.com
Sat Mar 6 02:44:29 EET 2021


Hi Everyone,

Anyone kindly wanting to help me on this matter? I am really stuck. In case
of my question being vague, I can reword it. Please let me know.

Kind regards.


On Wed, Mar 3, 2021, 19:31 ilkercan Kaya <canilkerkaya at gmail.com> wrote:

> In case this got lost, I'm kindly replying to this thread.
>
> On Sun, Feb 21, 2021, 04:20 ilkercan Kaya <canilkerkaya at gmail.com> wrote:
>
>> Hello Everyone,
>>
>> I am trying to seek my audio ogg file with the following:
>>
>> int64_t targetPts = av_rescale_q(seekTimeMicro, AV_TIME_BASE_Q, streamTimeBase);
>>
>> av_seek_frame(avFormatContext, streamInfoIndex, targetPts, AVSEEK_FLAG_BACKWARD);
>>
>>
>> This works all fine. Most of the time AVSEEK_FLAG_BACKWARD makes sure
>> that the stream is seeked to a time before targetPts. However, there are
>> times the opposite happens, seeking a time after targetPts. I can see this
>> with the first frame I request from avcodec_receive_frame() having pts
>> (avFrame->pts) greater than my targetPts. I need to ensure that the first
>> frame I receive is always smaller than my targetPts. (it's an overhead in
>> my system, long story).
>>
>> I read it that here
>> <https://stackoverflow.com/questions/20734814/ffmpeg-av-seek-frame-with-avseek-flag-any-causes-grey-screen>:
>> "It appears that, for some reason, av_seek_frame() using
>> AVSEEK_FLAG_BACKWARD returns the next keyframe when the frame that I am
>> seeking is the one directly before this keyframe. Otherwise it returns the
>> previous keyframe (which is what I want).". I suspect that this is the
>> case. However, this post is too old so it might be outdated.
>>
>> Could you help me?
>> Thank you!
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20210306/bd1f7905/attachment.html>


More information about the Libav-user mailing list