NAudio错误:“NoDriver调用acmFormatSuggest”

我有一个使用NAudio从mp3转换为wav的项目。 (使用WaveFormatConversionStream.CreatePcmStream()方法)

它在我的开发机器上工作正常,但现在我在一个新的服务器上尝试它并抛出这个错误:

NAudio.MmException:NoDriver调用acmFormatSuggest
在NAudio.MmException.Try(MmResult结果,字符串函数)
at NAudio.Wave.Compression.AcmStream.SuggestPcmFormat(WaveFormat compressedFormat)
在NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(WaveStream sourceStream)

我假设NAudio需要一些不在新服务器上的依赖。 它是什么,我应该从哪里安装它?

Server是一个新设置的Amazon EC2 Windows 2008 32位实例,安装了“Web服务器”和“应用服务器”角色。

运行Windows 2008 R2,使用Naudio检测Wav和Mp3文件的长度,我遇到了同样的问题。

我解决了这个问题: https : //technet.microsoft.com/en-us/library/cc772567.aspx

基本上,安装“桌面体验”function。

以上将需要重新启动服务器。

安装完上述内容后,我需要进一步启用,问题得到解决。

WaveFormatConversionStream使用您机器上安装的ACM编解码器。 首先询问是否安装了可以从源转换为目标格式的ACM编解码器。 您似乎在目标机器上缺少MP3编解码器。

NAudio确实提供了一种不同的解码MP3的方法,使用DMO MP3解码器(DirectX媒体对象),它也可能在你的目标机器上。 要使用它,您需要从Codeplex和MP3FileReader(现在为您转换为PCM)获取最新的NAudio源,您可以使用以下行:

 decompressor = new AcmMp3FrameDecompressor(this.Mp3WaveFormat); 

并替换它

 decompressor = new DmoMp3FrameDecompressor(this.Mp3WaveFormat); 

感谢@Shiroy,我找到了令人惊叹的NLayer( https://github.com/naudio/NLayer )库@MarkHeath。 如果使用NLayer.NAudioSupport安装它,则可以使用一行额外代码进行压缩(并且不需要安装编解码器)。