目前正在对需要播放高清 WMV 和 H264 视频的 Windows .NET 应用程序进行原型设计。我的测试文件是完整的 1080p。
目标硬件具有弱 Atom 处理器但强大的 NVidia 9400 图形。我知道图形是集成的,但我的理解是它们非常适合视频播放。
在 Windows 7 上测试,如果我在 WPF 中播放我的测试文件,使用 MediaElement 控件,我的 CPU 使用率为 0。
但是,目标操作系统是 Windows XP,我们可能没有 .NET 3.0。因此应用程序需要在 WinForms 中运行。由于各种原因,Windows Media Player ActiveX 不是一个选项。所以我们正在研究 DirectShow。
我使用 DirectShow.NET 组装了一个播放器,使用 VMR9 全屏播放视频。使用这种方法,我的 WMV 文件会消耗 20 - 30% 的 CPU。我必须安装一个 mp4 复用器/解复用器才能播放 H264 文件,然后它们消耗了 40 - 50% 的 CPU。
- 我知道 Windows 7 支持 H264 开箱即用。但是,它似乎不是 DirectShow 过滤器?
- 为什么我的视频使用 WPF 可以加速,但使用 DirectShow 时却不行?我的理解是 DirectShow 支持 DXvA。
tldr:如何在 WinForms 中实现硬件加速的 WMV 和 H264 视频播放?
谢谢!