我有一个使用自定义编解码器录制的 WAV 文件。编解码器已安装在我的机器上,WAV 文件在我的机器上使用 Windows Media 播放器可以正常播放。我正在使用 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.dll 中发生“NAudio.MmException”类型的未处理异常。附加信息:WaveBadFormat 调用 waveOutOpen。
该代码是使用自定义编解码器播放 WAV 的正确策略吗?我已经尝试了在 A 行和 B 行中注释/注释的所有四种组合(与错误消息没有区别)。
我正在使用 Windows 7 64 位、Visual Studio 2010 专业版(项目设置为 x86)和 NAudio 1.6 版。我对 NAudio 很陌生,但确实有几行播放“标准”WAV(即不使用自定义编解码器的文件)。