0

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

这些视频可以在 Windows Media Player 中播放,也可以在 Windows 7 的 IE9 和 Windows XP 的 IE8 中的 Windows Media Player 对象中播放。

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

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

4

2 回答 2

1

您需要进行更多调试才能了解发生了什么。首先,您需要检查播放是否完全选择了您的 DirectShow 过滤器,调用了哪种方法,是否涉及任何错误,这与其他成功播放的系统有何不同。

于 2011-09-29T08:35:48.080 回答
1

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

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

在 64 位版本可用之前,似乎有不少人对 Flash 有同样的问题。

于 2011-09-30T07:43:18.447 回答