C# NET中的Naudio NoDriver错误
执行此函数时出现异常“NoDriver调用acmFormatSuggest”:C# NET中的Naudio NoDriver错误,c#,.net,mp3,naudio,C#,.net,Mp3,Naudio,执行此函数时出现异常“NoDriver调用acmFormatSuggest”: private static WaveChannel32 OpenMp3Stream(string fileName) { WaveChannel32 inputStream; WaveStream mp3Reader = new Mp3FileReader(fileName); WaveStream pcmStream = WaveFormatConversi
private static WaveChannel32 OpenMp3Stream(string fileName)
{
WaveChannel32 inputStream;
WaveStream mp3Reader = new Mp3FileReader(fileName);
WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3Reader);
WaveStream blockAlignedStream = new BlockAlignReductionStream(pcmStream);
inputStream = new WaveChannel32(blockAlignedStream);
return inputStream;
}
在这一行:
WaveStream pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3Reader);
我曾尝试更改NAudio.dll的平台(从x86更改为x64,反之亦然),但没有任何帮助
是否有其他方法可以播放MemoryStream中的文件,或者如何修复此错误?此线程包含一些可能对您有所帮助的解决方案:此代码依赖于可以对系统中的MP3进行解码的ACM编解码器。你在用什么操作系统?此外,ACM编解码器通常为32位,因此在x64中运行意味着没有可用的编解码器 NAudio还提供了使用DMO MP3解码器作为替代方案的可能性,这在XP中不可用,但似乎在大多数较新版本的Windows上都有
最后,我建议使用最新的NAudio源代码,其中MP3FileReader内置PCM转换,这意味着您可以调用Read并将PCM取出。编译NAudioDemo for x86,并查看可用的ACM编解码器列表。据我所知,NAudio使用的是Fraunhofer professional ACM编解码器。如果您在列表中看不到,我以前尝试过安装LAME ACM,但没有效果,它需要Fraunhofer编解码器 另外需要注意的是,在x64版本的windows上,ACM注册表项位于
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32]
而不是
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32]
您可以使用Mark出色的NAudioDemo工具检查ACM是否在您的系统上正确注册您确定mp3读取正确吗?您是否尝试转储mp3Reader的内容?有没有办法检查ID3标签是否被正确读取为mp3?这不是我的代码。这是NAudio示例中的代码,它必须是正确的,但是。。。也许Hans Passant是对的,我应该编写自定义缓冲流。。。谢谢我之所以提到关键路径,是因为有各种网站展示了如何使用reg文件安装ACM编解码器,但这些reg文件往往针对x86