创建通用视频播放器(XP,vista,7)

时间:2012-02-09 10:26:05

标签: c# wpf media-player directshow wpf-mediakit

我正在尝试创建一个可以在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构建的,具有一些相当原始的代码,并且不会扩展,搜索,处理音频,并且通常看起来相当粗略。 / p>

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

非常感谢你!

-ruNury

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

EVR在Windows XP中使用.NET运行时“非正式”安装,并且可以与实例化技巧一起使用:您没有注册COM,并且无法使用CoCreateInstance API创建实例,但是您成功了如果您CoLoadLibraryDllGetClassObject和朋友。

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

相关问题