C#WebBrowser控件中的Windows Media对象,在Windows 7中使用自定义DirectShow过滤器

时间:2011-09-29 08:21:59

标签: c# windows-7 browser directshow wmp

我在C#WebBrowser控件中有一个Windows Media对象。我们已经得到了基本的.AVI文件,并且文件已经被赋予了自定义标题。为了播放这些,我们有一个自定义的DirectShow过滤器。

视频可以在Windows Media Player内播放,在Windows 7中的IE9中的Windows Media Player对象内,以及Windows XP上的IE8中播放。

视频播放也会在XP中的C#嵌入式WebBrowser控件内成功,但在Windows 7中不会成功。当尝试在Windows 7中的C#WebBrowser控件中使用Windows Media Player对象时,我们会收到一条消息,指出:“Windows Media Player播放器可能不支持该文件类型,或者可能不支持用于压缩文件的编解码器。“

每次都是完全相同的代码,所以有人知道为什么Windows 7,WebBrowser控件和自定义DirectShow过滤器的特定组合无法播放视频,而其他任何地方都能正常运行吗?

2 个答案:

答案 0 :(得分:1)

您需要进行更多调试才能了解正在发生的事情。首先,你需要检查一下是否回放你的DirectShow过滤器,调用什么样的方法,是否有任何错误,这与其他成功播放的系统有什么不同。

答案 1 :(得分:1)

问题是我们的DirectShow过滤器只是作为x86 DLL构建的。出于某种原因,C#中的WebBrowser控件默认使用64位IE后端(如果可用),并且该版本不适用于我们构建的x86 DLL,因为WMP对象仅查看64位版本的过滤器的注册表项。

通过在Visual Studio中将构建配置设置为针对运行WebBrowser控件的应用程序的“x86”CPU而不是“任何CPU”,您可以确保即使在WebBrowser控制的64位版本的Windows上也是如此使用32位后端。

在64位版本可用之前,似乎有很多人遇到过与Flash相同的问题。