1

我编写了一个有 2 个窗口的 WPF 应用程序(在 Visual C# 2010 Express 中)。第一个有各种按钮,另一个使用 MediaElement 控件显示视频。当按下按钮时,与其关联的视频将播放或停止(如果它已经在播放)。

在我的开发机器(Windows 7、良好的显卡、大量内存等)上,它运行良好。我遇到的唯一问题是,当附加到调试器时,它非常不稳定,但是当正常运行时,这些问题就会消失。

不幸的是,当在功能更弱的 XP 机器上运行时,视频以 1-2fps 的速度运行。尽管这些视频在 Windows Media Player 中运行良好,但还是如此。

似乎有很多关于 MediaElement 控件性能不佳的报告(更不用说它可以播放的内容不一致),所以我决定看看一些替代方案。

我尝试了一个名为 WPF MediaKit ( http://wpfmediakit.codeplex.com ) 的免费库,我认为它可能会产生一些影响,但是当我让它在 XP 机器上工作时,它坚决拒绝在我的开发中显示视频机器尽管使用完全相同的代码。我仍然希望我能做到这一点,但我不确定它是否会有所帮助,因为它仍在幕后使用 MediaElement 控件。

然后我尝试使用 wmp.dll COM 控件(Windows 窗体而不是 WPF),甚至使用最简单的应用程序(新的 Windows 窗体项目、添加到窗体的 WMP 控件以及设置加载 URL 的 1 行代码)我得到奇怪的行为. 连接调试器后,它可以在多台显示器上工作,但有时当它开始播放时,它只是在前几帧反复断断续续,打破它的唯一方法似乎是将其移动到另一台显示器。如果我不使用调试器,我似乎没有遇到口吃问题,但视频只显示在主监视器上,一旦我将窗口移动到辅助监视器,它就会变黑。

所以我的问题是,有没有人经历过类似的事情和/或有一个不错的解决方案?找到在有和没有附加调试器的情况下都能正常工作的东西会特别好!

4

2 回答 2

0

WPF MediaKit 在幕后不使用 MediaElement,而是使用 D3DImage 互操作类为 WPF 提供高性能视频。

XP 中的 WPF 在性能方面一直是个失败者。您可能想查看渲染层以确保 WPF 完全硬件加速。还要确保你有最新的视频驱动程序可用并且 GPU 是有能力的。

-杰尔

于 2010-09-12T18:49:50.753 回答
0

你试过这个库吗?

http://directshownet.sourceforge.net/about.html

VideoLAN媒体播放器也有这个.NET接口,但这引入了对VLC的依赖:

http://wiki.videolan.org/.Net_Interface_to_VLC

于 2010-09-08T16:54:01.410 回答