目前正在为需要播放高清WMV和H264视频的Windows .NET应用程序进行原型设计。我的测试文件是完整的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 muxer / demuxer甚至可以播放H264文件,然后它们消耗了40-50%的CPU。
tldr:如何在WinForms中实现硬件加速的WMV和H264视频播放?
谢谢!
答案 0 :(得分:4)
有许多商用硬件加速的h264 directshow过滤器可供选择。有些人使用DXVA,有些人使用Cuda。它们都不是免费的,但大多数都不贵。 Ffdshow和相关的ffmpeg项目很棒,但他们绝对不会在Atom cpu上使用HD h264。 (如果有人能证明不是这样,我很乐意听取你的意见。)
我在XP中使用DirectShow在您描述的同一个Ion平台上进行HD h264播放。它是1080p性能的边界,但如果你可以限制比特率并且不需要同时做很多其他CPU或GPU工作,它可以管理它。 720p更加舒适,特别是如果你可以使用24或30 fps而不是60 fps。
在我的脑海中,对于h264 Ion最有效的编解码器是MainConcept,CoreAVC和Cyberlink。
我还建议尝试VMR7而不是VMR9,如果这是你的选择。一些DXVA编解码器更可靠,并且在VMR7上具有更好的性能。
答案 1 :(得分:2)
没有直接的答案,但DXVA检查程序实用程序帮助我调试过去的DXVA问题。这是一个下载链接:http://bluesky23.hp.infoseek.co.jp/en/index.html
答案 2 :(得分:2)
我已经使用Jeremiah Morill推荐的DXVA实用程序进行了一些检查。
我对现在发生的事情非常了解......
所以最重要的是我需要在带有9400图形的Windows XP盒子上进行测试。看起来完全硬件加速是不可能的(因为我们没有MediaFoundation,因此我们没有DXvA2)......
再次感谢您的帮助!