HRESULT:尝试使用 NAudio 库播放 mp2 编码的 wav 文件时出现 0xC00D5212

Posted

技术标签:

【中文标题】HRESULT:尝试使用 NAudio 库播放 mp2 编码的 wav 文件时出现 0xC00D5212【英文标题】:HRESULT: 0xC00D5212 when trying to play an mp2 encoded wav file with NAudio library 【发布时间】:2020-04-07 14:31:25 【问题描述】:

我正在编写一个简单的音频播放器,它支持 ASIO 和 MIDI 控制,供本地广播电台使用。我正在使用 NAudio 库。该电台使用了一些奇怪的古老软件,这些软件使用 mp2 编码的 wav 文件。该文件本身在 WMP 或 VLC 播放器中的所有 Windows 版本上都可以正常播放,在 Windows 10 上我的播放器也可以正常播放,但是那里的许多计算机仍在运行 Windows 7,当我尝试在 Windows 7 上播放文件时,程序会抛出一个例外:

System.Runtime.InteropServices.COMException (0xC00D5212): Výjimka na základě hodnoty HRESULT: 0xC00D5212
   v NAudio.MediaFoundation.IMFSourceReader.SetCurrentMediaType(Int32 dwStreamIndex, IntPtr pdwReserved, IMFMediaType pMediaType)
   v NAudio.Wave.MediaFoundationReader.CreateReader(MediaFoundationReaderSettings settings)
   v NAudio.Wave.MediaFoundationReader.Init(MediaFoundationReaderSettings initialSettings)
   v NAudio.Wave.MediaFoundationReader..ctor(String file)

我认为这是“缺少编解码器”,你们中有人知道如何解决这个问题吗?我在 NAudio 库中使用 MediaFoundationReader()。

【问题讨论】:

***.com/questions/5495490/… 谢谢,但这可能无济于事。我想我需要一个启用媒体基础的 mp2 解码器,或者我可以使用能够播放文件的 NLayer 库,但我仍然需要该程序来支持标准 WAV。我不知道如何在 NAudio 中使用多个阅读器,有什么建议吗? 我不认为缺少任何编解码器,我认为任何库与 windows 7 不兼容。检查所有 DLL 文件,并在另一个 windows 7 上尝试它以确保它是否出现在所有 windows 上7.因为windows版本不好,我一直是这种类型的问题。 我在几台Win 7机器上试过,也试过干净安装,但没有运气。任何其他格式都可以通过 Win 7 上的 MediaFoundationReader 播放。 【参考方案1】:

似乎很难为 Widows 7 获得支持 MF 的 MP2 编解码器。我最终使用了 NLayer 库并在 NAudio 库中编辑了 AudioFileReader 类型,它可以理解 MP2 WAV 文件。

【讨论】:

以上是关于HRESULT:尝试使用 NAudio 库播放 mp2 编码的 wav 文件时出现 0xC00D5212的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 播放卡顿

使用 NAudio 库播放原始文件

使用 NAudio 在 C# 中播放 ohLibSpotify pcm 数据流

NAudio - 从 Stream 播放 MIDI

在使用 Naudio 播放文件时检测当前音量

NAudio 使用 C# 播放 x 毫秒的正弦波