1

エンコードされた adpcm ファイル (サンプル レートは 9600、ビット深度は 4) があり、NAudio で再生したいと考えています。

RawSourceWaveStream を使用してファイルを読み取り、次のようにします。

var reader = new RawSourceWaveStream(new MemoryStream(File.ReadAllBytes(path)), new AdpcmWaveFormat(9600,1));
var convert = WaveFormatConversionStream.CreatePcmStream(reader);
waveOut.Init(new BlockAlignReductionStream(convert));

PS違いがある場合は、実際にSampleProviderでもストリームをエンベロープします。

ファイルを再生しようとすると、acmStreamConvert で宛先バッファーが常に空になるため、waveOut バッファーにバッファーが書き込まれません。

convert 関数を含むすべての acm 関数でエラーが発生しなかったので、形式 (ソースと推奨) が正しいことを理解しています。

編集

役立つかもしれない情報を追加します..

再生しようとしている adpcm ファイルは、次の手順で作成したファイルです。

  1. 生の pcm ファイル (wav ヘッダーなし) サンプル レート = 9600、サンプルあたりのビット数 = 16、チャンネル = モノがあります。
  2. rawからwavファイルを作成します
  3. このwavファイルを読み込んで、adpcmファイルのサンプルレート=9600、サンプルあたりのビット数=4、チャンネル=モノに変換します
  4. エンコードされた adpcm ファイルを読み取って再生しようとしましたが、成功しませんでした

すべての手順は NAudio で行います。

すべての出力ファイル (raw、wav、adpcm) の信号を確認しましたが、信号は正しいようです。Audacity で行われたチェック。

また、WaveFileReader を使用して adpcm を読み取ろうとしましたが、WavFormatConversionStream の読み取りメソッドでは、「カウント」は常にゼロです (blockalign チェックのため)。

生のサンプルレートは 9600 ですが、問題になる可能性はありますか?

もう 1 つ、WaveFileWriter がサンプルあたりのビット数 = 4 のファイルを作成できないことを確認したので、エンコードされたファイルは実際にはサンプルあたり 4 ビットではなく 16 ビットで作成されました。

4

1 に答える 1