2015-11-06 64 views
5

我试图直接从互联网上使用URL播放M4A(MP4音频)文件。
我使用n音讯与MediaFoundation实现这一目标:NAudio - MediaFoundationReader:构造函数不采用传递的m4a-URL(来自youtube-Link)

using (var reader = new MediaFoundationReader(audioUrl)) //exception 
using (var wave = new WaveOutEvent()) 
{ 
    wave.Init(reader); 
    wave.Play(); 
} 

这非常适用于两个测试系统与Windows 8.1和Windows 10,但在我的Windows 7机器上它不工作,我得到的例外来自MediaFoundationReader构造函数。
最初,我得到了ArgumentOutOfRangeException。我测试了在WMP中播放这个m4a文件,它也无法播放它。我下载了一个编解码器包并安装了它。这帮助了WMP,但我的代码仍然是抛出一个异常,尽管另一个问题:

型 的“System.Runtime.InteropServices.COMException”未经检查的异常出现在NAudio.dll

其他信息:有更多的数据可用。 (例外从 HRESULT:0x800700EA)

任何想法可能会导致这种情况,我怎么能解决它?

+1

我会去**调试\的Windows \例外设置**并将其配置为_Break在所有Exceptions_。检查内部例外情况应该能够更好地了解问题的可能性。 – jsanalytics

+0

另外,通过使用Codeplex的源代码,我可以使用调试器遍历MediaFoundationReader()构造函数的代码,没有任何问题。我无法访问可用于重现异常的Windows7机器。 “不幸的是”在我的Windows 10机器下,一切正常。 – jsanalytics

+0

无法在win7 sp1上重现。链接到文件? – cviejo

回答

0

有时用户没有足够的权限来运行COM方法。

尝试以管理员身份运行该应用程序。

1

有了一些研究,我确定当你的Windows操作系统成为 损坏发生此

0X800700ea。可能有很多原因,包括过多的启动条目,注册表错误,硬件/内存不足,文件碎片,不必要的或冗余程序 安装等等,包括过多的启动项, 发生此错误。

你可以尝试你在另一个系统进行编程和验证

+0

我在我的女朋友win7系统上试过它,但是发生了奇怪的其他错误,它也没有工作。也许这个系统也被破坏了(两台PC都有几年的历史......)。 所以,我会重新安装我的系统,再试一次,导致这个错误是奇怪的...我认为,一个损坏的系统是原因。无论如何,在大约3个月内,我会得到一台新的,非常好的电脑。 感谢您的时间;) – Aldarion