[Libav-user] Samples of silence after a av_seek_frame

Steve musicspeedchanger at gmail.com
Sun Sep 11 22:30:58 EEST 2016

Steve wrote
> Steve wrote
>> I'm using ffmpeg audio decoding to create a gapless audio loop. I call
>> av_seek_frame (with AVSEEK_FLAG_BACKWARD) to seek to my desired time, and
>> call avcode_flush_buffers after. It seems the first decoded frame in the
>> audio stream after the seek contains a few samples of silence or near
>> silence, thus making the loop not gapless.
>> If I skip an arbitrary amount of samples, the gap disappears. I've tried
>> bypassing any swr_convert resampling with same results and also using the
>> deprecated avcodec_decode_audio4 instead of the
>> avcodec_send_packet/av_read_frame scheme.
>> Is there a way to know how many samples I need to skip so I exactly hit
>> the
>> actual audio data, or prevent ffmpeg from having these filler samples in
>> AVFrame->data after the seek?
> I should also mention I know that the av_seek_frame won't seek to the
> exact time requested, it's on the packet boundary. I can account for the
> number of samples I need to skip to get to the exact time, but when the
> number of samples is low (or I try without skipping these samples), the
> problem of the silence samples is evident.
> This is using the mp3 decoder.

Incidentally this is ONLY happening with mp3 decoder (the most popular
format!). The other decoders like aac, wma, flac don't have this silence
gap. I guess it's some sort of bug.

View this message in context: http://libav-users.943685.n4.nabble.com/Libav-user-Samples-of-silence-after-a-av-seek-frame-tp4662617p4662619.html
Sent from the libav-users mailing list archive at Nabble.com.

More information about the Libav-user mailing list