NAudio – 控制哪个ACM编解码器使用

我使用NAudio将mp3转换为WAV,使用WaveFormatConversionStream.CreatePcmStream()方法。

据我了解,这要求操作系统有关可用的ACM编解码器,然后select一个。

我如何控制使用哪些ACM,或为其设置优先级? 在Windows操作系统或NAudio中有没有这个选项?

目前,它似乎是使用Windows媒体播放器,并在某些播放/转换罚款在其他地方的MP3失败。

基本上我想告诉它使用一个体面的编解码器。

在它下面调用acmFormatSuggest尝试找到转换到PCM的方式。 您实际上可以在Windows中为每个安装的ACM设置优先级。 我以前知道如何在Windows XP中实现这一点,但是我不知道Windows 7在何处保持等价的对话框。 有许多方法可以使用acmDriverEnum和acmDriverOpen明确指定您想要的ACM驱动程序。

我没有在AcmStream类中使用额外的构造函数来实现ACM过滤器的这种功能,即允许驱动程序ID和WaveFilter传入。您可以尝试使用空WaveFilter和驱动程序Id使用AcmDriver.EnumerateAcmDriversAcmDriver.FindByShortName选择ACM编解码器。 恐怕我没有把一个构造函数放到WaveFormatConversionStream ,这个函数可以让你传入你自己的AcmDriver ,所以你必须做出自己的mod。

另外,什么MP3失败,什么是错误信息? 这可能是一个MP3帧解析问题,而不是解码器。 此外,NAudio有一个替代的MP3帧解码器 – DmoMp3FrameDecompressor ,虽然在XP上不可用,但可能会给出更好的结果。