1

我有 Windows 8 KN(N 版本没有媒体播放器及其组件)。

这没有安装任何 ACM 解码器,所以我安装了 LAME MP3 ACM。(32 位和 64 位)

我通过 NAudio 演示应用程序检查了它,它就在那里。

但是,如果我尝试播放 MP3(甚至通过演示应用程序),它会因“AcmNotPossible 调用 AcmStreamOpen”而崩溃。

是否可以在不为这些版本的 Windows 安装媒体包的情况下使用 NAudio 播放音频?NAudio 是否仅依赖 ACM 编解码器或其中一些 Windows 组件?

编辑:安装 Windows6.2-KB2703761-x64(Windows 8 的 N 和 KN 版本的媒体功能包)后 NAudio 工作。

所以我的问题是:“有没有办法用 NAudio 和 .NET 播放 MP3 而不需要安装它?”。

截图

4

1 回答 1

1

要使用任何 ACM 编解码器,您传入的 WAVEFORMATEX 必须与编解码器想要的完全匹配。LAME MP3 编解码器可能使用与 Windows 附带的 Fraunhofer 不同的结构。您可以使用 NAudioDemo 应用程序检查输入和输出波形结构,查看 ACM 页面。

MP3FileReader 允许一个可插入的 MP3 帧解压缩器,因此如果 DirectX 媒体对象 MP3 解码器是您可以设置 MP3FileReader 以将其与采用函数的构造函数一起使用来构建 IMp3FrameDecompressor。如果这不起作用,您可以实现自己的 IMp3FrameDecompressor 函数,该函数使用您喜欢的任何编解码器,甚至是完全托管的编解码器(例如使用NLayer)。如果您根本不想依赖机器上安装的编解码器,那么最终这可能是您的最佳选择。

于 2013-10-08T16:08:38.973 回答