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
残留オーディオを探して取得できないようにするために何をすべきかについてのアイデアはありますか? ありがとう!