カスタム コーデックを使用して録音された WAV ファイルがあります。コーデックはマシンにインストールされており、WAV ファイルは Windows Media Player を使用してマシンで正常に再生されます。NAudio ルーチンを使用して、C# コードを介して WAV ファイルを再生しようとしています。カスタム形式の値は奇妙に見えますが、WAV ファイルのヘッダーを分析して入念にチェックしました。ファイルを再生するために私が思いついた最高の C# コードを次に示します。
WaveFormat wfOKI = WaveFormat.CreateCustomFormat(WaveFormatEncoding.DialogicOkiAdpcm, 8000, 1, 3000, 48, 3);
WaveStream wsRaw = new WaveFileReader(txtFileName.Text);
wsRaw = WaveFormatConversionStream.CreatePcmStream(wsRaw); // Line A
wsRaw = new BlockAlignReductionStream(wsRaw); // Line B
WaveStream wsOKI = new RawSourceWaveStream(wsRaw, wfOKI);
WaveOut woCall = new WaveOut();
woCall.Init(wsOKI); // <-- This line gives an error.
woCall.Play();
while (woCall.PlaybackState == PlaybackState.Playing)
{
System.Threading.Thread.Sleep(300);
}
Init() により、次のエラーが発生します: タイプ 'NAudio.MmException' の未処理の例外が NAudio.dll で発生しました。追加情報: WaveBadFormat 呼び出し waveOutOpen。
コードは、カスタム コーデックで WAV を再生するための正しい戦略ですか? A行とB行のコメントアウト/インの4つの組み合わせすべてを試しました(エラーメッセージに違いはありません)。
Windows 7 64 ビット、Visual Studio 2010 プロフェッショナル (プロジェクトは x86 に設定)、および NAudio のバージョン 1.6 を使用しています。私は NAudio を初めて使用しますが、「標準」の WAV (つまり、カスタム コーデックを使用しないファイル) を再生する行を数行取得しました。