1

C++ プログラムで、8192 オーディオ サンプルのブロック (-32768...32767) をダウンサンプリングしようとしています。オリジナルのサンプリングレートは 48kHz ですが、16kHz が欲しいです。

元のサンプル数が 8192 の場合、比率 16/48 は約 2731 サンプルを生成するはずです。

これには libav を使用しようとしました。8192 個の入力サンプルのすべてのブロックにこのコードを使用します。

struct AVResampleContext* ctx = av_resample_init(16000,48000,16,10,1,1.0)
av_resample(ctx,dataIn,dataOut,&samplesConsumed,8192,2731,0)

ただし、これはある程度機能しているように見えますが、最後の 30 サンプル程度は 2731 サンプルの各出力ブロックでゼロであるため、ここで常に「可聴クリック」を行うことができます。

ここで何が間違っていますか?

助けてくれてありがとう!

4

0 に答える 0