Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET中的Naudio NoDriver错误_C#_.net_Mp3_Naudio - Fatal编程技术网

C# NET中的Naudio NoDriver错误

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

执行此函数时出现异常“NoDriver调用acmFormatSuggest”:

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