我正在尝试使用 NAUDIO 库播放 Dialogic ADPCM 文件(无 RIFF 标头)。我尝试了几种不同的方法,但到目前为止都没有成功。我尝试了一个简单的 wav 转换:
FileStream fs = new FileStream(@"C:\TestFile.vox", FileMode.Open, FileAccess.Read);
WaveFormat wf = new WaveFormat(8000, 1);
WaveOut wo = new WaveOut();
RawSourceWaveStream rawSource = new RawSourceWaveStream(fs, wf);
wo.Init(rawSource);
wo.Play();
这实际上加载了文件并开始播放,但它非常嘈杂和失真(实际上不可听),几乎就像选择了错误的编解码器来转换文件一样。我尝试了更具体的转换,因为 NAUDIO 似乎支持内置的 Dialogic ADPCM:
FileStream fs = new FileStream(@"C:\TestFile.vox", FileMode.Open, FileAccess.Read);
WaveFormat wf = WaveFormat.CreateCustomFormat(WaveFormatEncoding.DialogicOkiAdpcm, 8000, 1, 3000, 1, 4);
WaveOut wo = new WaveOut();
RawSourceWaveStream rawSource = new RawSourceWaveStream(fs, wf);
wo.Init(rawSource);
wo.Play();
这会在调用 WaveOut.Init() 时引发异常 - 异常是“WaveBadFormat 调用 waveOutOpen”我也尝试使用
AdpcmWaveFormat wf = new AdpcmWaveFormat(8000, 1);
对于我的 WaveFormat 对象-我得到了同样的例外。该文件以 8000 Hz 的采样率录制,只有 1 个通道。任何帮助解决这个问题将不胜感激。谢谢