Поиск FFMPEG приносит аудио артефакты

Я реализую аудиодекодер с использованием ffmpeg. При чтении аудио и даже поиске уже работает, я не могу понять, как очистить буферы после поиска, поэтому у меня нет артефактов, когда приложение начинает читать аудио сразу после поиска.

avcodec_flush_buffers , похоже, не влияет на внутренние буферы. Эта проблема возникает со всеми декодерами (mp3, aac, wma, ...), кроме PCM / WAV (которые не используют внутренние буферы для хранения данных для декодирования, поскольку звук не сжимается).

Фрагмент кода прост:

av_seek_frame(audioFilePack->avContext, audioFilePack->stream, posInTimeFrame, AVSEEK_FLAG_ANY);
avcodec_flush_buffers(audioFilePack->avContext->streams[audioFilePack->stream]->codec);

Объяснение:

audioFilePack->avContext = FormatContext
audioFilePack->stream = Stream Position (also used to read audio packets)
audioFilePack->avContext->streams[audioFilePack->stream]->codec = CodecContext for the codec used

Есть идеи, что мне делать, чтобы я мог искать и не получать остаточного звука? Спасибо!

6
задан halfelf 20 December 2018 в 08:07
поделиться