私は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
私は残存オーディオを追求しないと得ることができますので、何をすべきか上の任意のアイデアを? ありがとう!
いいえ、アイデアはありませんか?私はこれを引き起こしているかもしれないことについて何も考えずにほぼ2週間これを修正しようとしています...それはうまくいくのでしょうか? –
ffmpeg-user公式メーリングリストにもメッセージが送信されました。まだ必要なヘルプ。 –
アーティファクトをより詳細に記述できますか?彼らはクリックとポップですか? –