winforms - DirectShow/WinForms 中的硬件加速视频

标签 winforms hardware directshow h.264 wmv

目前正在对需要播放高清 WMV 和 H264 视频的 Windows .NET 应用程序进行原型(prototype)设计。我的测试文件是完整的 1080p。

目标硬件具有较弱的 Atom 处理器,但具有强大的 NVidia 9400 显卡。我知道图形是集成的,但我的理解是它们有利于视频播放。

在 Windows 7 上测试,如果我使用 MediaElement 控件在 WPF 中播放测试文件,我的 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 视频播放?

谢谢!

最佳答案

有许多商业硬件加速的 h264 directshow 过滤器可用。有些使用 DXVA,有些使用 Cuda。它们都不是免费的,但大多数并不昂贵。 Ffdshow 和相关的 ffmpeg 项目很棒,但它们绝对不会在 Atom cpu 上执行 HD h264。 (如果有人能证明事实并非如此,我很乐意听取您的意见。)

我一直在您描述的同一 Ion 平台上使用 XP 中的 DirectShow 进行高清 h264 播放。对于 1080p,它的性能处于临界点,但如果您可以限制比特率并且不需要同时执行太多其他 CPU 或 GPU 工作,则可以管理它。 720p 更舒适,特别是如果您可以使用 24 或 30 fps 而不是 60 fps。

在我看来,在 Ion 上运行最好的 h264 编解码器是 MainConcept、CoreAVC 和 Cyber​​link。

如果您可以选择,我还建议您尝试使用 VMR7 而不是 VMR9。某些 DXVA 编解码器在使用 VMR7 时更可靠且性能更好。

关于winforms - DirectShow/WinForms 中的硬件加速视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140120/

相关文章:

c# - 为什么第二个 IF 语句检测到无法访问的代码?

c# - 在其他控件上方显示具有半透明背景颜色的标签?

c# - CheckedListBox 数据绑定(bind)到项目的选中状态

windows - 我应该为 Windows 7 分区留出多少空间?

c# - 样本采集器抓取的 Directshow 帧被裁剪

.net - 开源 Windows 窗体应用程序的建议控件?

keyboard - 用于 Visual Studio 的 Sidewinder x6 键盘宏?

java - 在java中使用外部硬件组件?

http - 在 DirectShow 中直播 H.264

directx - 使用 DirectX 重新创建剧院模式