首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NAUDIO播放Dialogic ADPCM音频文件

使用NAUDIO播放Dialogic ADPCM音频文件
EN

Stack Overflow用户
提问于 2014-06-03 21:29:03
回答 1查看 1.2K关注 0票数 1

我正在尝试使用NAUDIO库播放Dialogic ADPCM文件(没有RIFF头)。我已经尝试了几种不同的方法,但到目前为止都没有成功。我尝试了一个简单的wav转换:

代码语言:javascript
复制
        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:

代码语言:javascript
复制
        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“,我也尝试使用

代码语言:javascript
复制
AdpcmWaveFormat wf = new AdpcmWaveFormat(8000, 1);

对于我的WaveFormat对象,我得到了同样的异常。该文件是以8000 Hz的采样率记录的,并且只有1个通道。任何帮助解决这个问题的人都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-06-04 00:25:08

需要转换成普通的PCM才能播放。使用WaveFormatConversionStream.ConvertToPcm可以做到这一点。只有在您的计算机上安装了可以解压缩ADPCM的ACM编解码器,并且您还需要准确地传入正确的WaveFormat结构时,它才能工作。

NAudioDemo应用程序可以显示您的计算机上安装了哪些ACM编解码器,以及它们支持哪些输入和输出WaveFormats。

要了解有关使用NAudio在格式之间进行转换的更多信息,请阅读我的article on CodeProject

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24016476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档