1

我正在尝试创建一个可以在 Windows XP (SP3)、vista 和 7 上运行的媒体播放器(在 C# .net 4.0 中)。通常我会走简单的路并使用 WPF 自己的 MediaElement,但因为它依赖于 Windows Media Player 10 或更高版本,因为 Windows XP SP3 可能只有 WPM9,所以无法工作。

首先,我尝试下载 Jerimiah Morill 的 WPF MediaKit 示例应用程序,但这使用了不会在我的测试机器上显示的 EVR(仅带有默认编解码器和默认程序的 Windows xp SP3,以及各种 .Net 框架安装)。我还下载了二进制文件并将它们分开,仅参考 DirectShow-dll 和 WPF mediakit 的最低限度创建一个新项目,这次没有参考 EVR。仍然没有运气。这让我很难理解——即使是 Windows XP 也不能直接使用 VMR 播放电影吗?

我发现了一些媒体播放器的样本,其中一种是有效的。这个叫做DxPlay并使用了 directshow 的 graphbuilder,但它是在 winforms 中构建的,有一些看起来相当原始的代码,并且不会缩放、搜索、处理音频,而且总体上看起来很粗略。

那么,有没有什么简单的方法可以创建一个可以在所有提到的平台上播放而无需推动 WMP10+ 的媒体播放器?我对 WPF MediaKit 寄予厚望,但有些东西阻止它在 Windows XP SP3 上播放(对此的任何解决方案都会非常有趣)。

非常感谢您!

-ruNury

4

2 回答 2

2

我会尝试将 VLC 媒体播放器包装在您的 .Net 项目中。

以下是一些可能对您有所帮助的 .Net 项目:

于 2012-02-09T10:52:31.570 回答
0

MSDN 建议在受支持的系统中将 EVR(增强型视频渲染器)用于视频输出:Windows Vista 及更高版本。随着它的推出,它的前身 - 视频混合渲染器过滤器(版本 7 和 9)在视频的平滑缩放上被削减。Video Mixing Renderer 7 在自定义方面的能力也较差,但是它消耗的资源要少得多(不使用 Direct 3D),并且您可以一次输出更多视频。

您的标准解决方案是同时支持 VMR 和 EVR 输出并使用后者启动 Windows Vista,否则回退到前者。

EVR 是“非官方”安装在带有 .NET 运行时的 Windows XP 中,并且可以与实例化技巧一起使用:您相应的 DLL 未注册 COM,您无法使用CoCreateInstanceAPI 创建实例,但是如果您这样做CoLoadLibrary,您会成功,DllGetClassObject朋友们。

对于 C# 开发,您通常通过DirectShow.NET Library使用 DirectShow 。

于 2015-10-27T07:15:45.620 回答