2010-01-26 118 views
6

當前正在構建需要播放高清WMV和H264視頻的Windows .NET應用程序的原型。我的測試文件全部是1080p。DirectShow/WinForms中的硬件加速視頻

目標硬件具有較弱的Atom處理器,但具有較強的NVidia 9400圖形。我知道這些圖形是集成的,但我的理解是它們適合視頻播放。

測試在Windows 7上,如果我在WPF玩我的測試文件,使用MediaElement控件,我的CPU使用率是0.1

然而,目標操作系統是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視頻播放?

謝謝!

+0

你必須找到與工作DirectShow中得到更好的PERF的一個更聰明的解碼器。好的花錢,ffdshow是免費的。在某些時候,你可能要考慮是否就沒有這些事了幾個XP計算機上安裝.NET 3.0的麻煩比安裝可能是昂貴的胡思亂想解碼器或許更少。 – 2010-01-26 15:48:51

+0

謝謝!看來,.NET 3.0 EVR是答案... – TheNextman 2010-01-26 21:03:32

回答

2

對您沒有直接的答案,但DXVA檢查器實用程序幫助我調試過去的DXVA問題。這裏有一個下載鏈接:http://bluesky23.hp.infoseek.co.jp/en/index.html

+0

謝謝!這是一個很棒的工具。它允許我指定要使用的DirectShow/MediaFoundation過濾器以及選擇視頻渲染器來播放我的文件。 – TheNextman 2010-01-26 21:03:03

2

我已經用Jeremiah Morill推薦的DXVA工具做了一些檢查。

我現在正在發生的事情的一個不錯的主意....

  • 我認爲Windows 7中的H264支持由MediaFoundation提供,這也解釋了爲什麼我的DirectShow應用程序可以不使用它!
  • 根據渲染器(VMR7/VMR9/EVR),在Windows 7中使用DirectShow過濾器運行WMV視頻會提供不同級別的性能。 VMR7是處理器密集度最低的(6-7%CPU),但質量最差,EVR(8-12%CPU)的效率稍高於VMR9(12-13%CPU),但它們看起來都很相似。然而,踢球者是MediaFoundation過濾器 - 顯然是完全加速並使用0%的CPU。因此我猜想在Windows 7上,MediaElement使用MediaFoundation?

所以底線是我需要在9400圖形的Windows XP盒子上進行測試。它看起來像完整的硬件加速將不可能(因爲我們沒有MediaFoundation,因此我們沒有DXvA2)...

再次感謝您的幫助!

+0

聽起來很對!在Vista和7上,Windows Media Player將根據文件類型選擇MediaFoundation路徑或DirectShow路徑。 WPF MediaElement在內部使用Windows Media Player OCX,因此WMP和MediaElement應具有相似的性能特徵。 – 2010-01-27 01:05:46

+1

這是0%的測量來自標準任務管理器還是來自Process Explorer?我懷疑任務管理器可能根本不會報告在系統代碼中花費的CPU時間。 – Alan 2010-01-27 03:24:47

+0

謝謝你們!是的 - 測量來自TM。我欣賞它可能不是嚴格準確,但它只是充當了一種「尺度」來比較不同的管道...... – TheNextman 2010-01-27 13:40:27

4

有許多商業硬件加速的h264 directshow過濾器可用。有些使用DXVA,有些使用Cuda。他們沒有一個是免費的,但其中大多數並不昂貴。 Ffdshow和相關的ffmpeg項目非常棒,但它們絕對不會在Atom cpu上執行HD h264。(如果任何人可以證明他,我很想聽聽您的意見。)

我一直在你所描述的相同Ion平臺上做高清H264播放,在XP中使用DirectShow。 1080p的性能處於臨界狀態,但如果可以限制比特率並且不需要同時執行其他CPU或GPU工作,則可以對其進行管理。特別是如果你能以24或30 fps而不是60來獲得。

關於我的頭頂,最適合h264的Ion的編解碼器是MainConcept,CoreAVC和Cyber​​link 。

我也建議嘗試,而不是VMR9 VMR7如果這是一個選擇。一些DXVA編解碼器更可靠,並且VMR7具有更好的性能。

+0

很高興聽到你已經受夠了ION平臺上DSHOW成功,即使你需要一個商業解碼器! 我要建立我的測試硬件與XP和嘗試你的一些建議。謝謝! – TheNextman 2010-01-27 13:39:01