2012/02/04 更新:
對應最近新的 MPC-HC v.1.6.0.4014,以往一堆麻煩的設定可以省略掉很多,懶得看下面一堆廢話的話看分隔線上面部份就好,這次設定步驟很簡單就不抓圖了。新版的 MPC-HC 不需要其他拉哩拉雜的解碼包,只需播放程式本體就行了。(不過如果要播放萬惡的 rmvb 檔還是要去裝一下 Real Alternative Lite)
所以第一步驟就是先把如 k-lite、CCCP、對岸的一些奇怪解碼包統統先砍光,舊版的播放程式也先移除掉,然後裝新版的 MPC-HC。
設定的部份只要到「檢視」→「設定選項」→「輸出」,XP 的話選 VMR-9(無轉換) ;Vista/Win7 選 EVR 自訂呈現就大功告成啦!
不過如果說到最近開始流行的 Hi10P 壓縮格式,那又是另一個故事了...(遠目)
最近因為媽媽的關係,所以(以下省略500字)我就得到一台新電腦了。
如何入手不是這邊的重點,問題是換了新主機後卻遭遇到各種大大小小的麻煩,用電腦這麼久還真沒遇過這麼多詭異的事。電腦半夜會自動開機又關機,拿去修了一個多禮拜連店家到現在還是搞不清是哪裡的問題,只是"看起來"似乎沒問題了就先讓我帶回來。不過就在打這篇文章之時,他又自動重開機了三次...簡直就是逆境!但是男子漢遇到逆境時就要想到以下這部片子!(其實我沒看過這部電影..)
其他連系統重灌上也遇到不少麻煩,但這邊只挑一件軟體使用上的問題作紀錄,因為設定步驟實在太繁雜了,這種事不記下來下次重灌時保證會忘光光。
因為不玩電腦遊戲,所以選擇了華碩合板的 M4A785D-M PRO,內建的 785G 晶片組含 ATI Radeon HD4200 影像晶片,可以負擔輕度3D需求,但最主要是看上他可以硬解 H.264/AVC 及 VC-1 影片。
對於電腦裡有很多不知哪邊來的高畫質 HD 影片,最方便的方法還是組一台夠有力的電腦,用隨便一個播放軟體配上 CoreAVC 軟解(現在新版的 CoreAVC 有支援 nVidia 的 CUDA 硬體加速)是最簡單且支援度最高的解決方案,但對預算有限的我來說,還是找可以硬解的方案較為經濟。
之前的主機板是780G晶片組,當時的作法是參考 moblile 01 裡 G.F 網友這篇 「把PowerDVD的影片解碼器挖出來,做成H.264萬用播放軟體(含硬體加速)」,只是我使用的播放軟體是 Media Player Classic HomeCinema(以下簡稱 MPC-HC),當時挖的 Codec 是 PowerDVD 8 裡面的。但這次換成 785G 的新環境後,發現用 PowerDVD 8 的解碼器無法開啟硬體加速了,想說可能是舊版的或許還沒對應到 Radeon HD 4200,於是把解碼器換用 PowerDVD 9 裡面的,但這次可能是 Cyberlink 鎖住了,無法把新版的 Codec 加入給其他的播放軟體用。
這張圖片太小了看不清,這是播放 Evangelion 新劇場版:序 的圖片,影片資訊為 Video: MPEG4 Video (H264) 1920x1080 23.98fps,Audio: DTS 48000Hz 6ch
左邊的 Filter 部份顯示了使用 Cyberlink h.264/AVC Decoder(PowerDVD 8),但是 CPU 使用率還是居高不下。
在網路翻了無數的網頁,到後來走投無路之下,最後決定用 MPC-HC 裡內建的 DXVA 功能。
個人電腦環境如下:
- 作業系統:Microsoft Windows XP SP3
- 綜合解碼包:CCCP 2009-09-09
- 播放軟體:MPC-HC 1.3.1249.0
- DirectX Version: DirectX 9.0c (4.09.0000.0904)
- Video Driver:ATI CatalystTM 9.12
- 硬體部份:AMD Athlon II X2 240、M4A785D-M PRO (顯示晶片 ATI Radeon HD4200)、2GB DDR2 Ram
之前使用 PowerDVD 的解碼器有很方便的地方,只要在 External Filters 裡設定好 PowerDVD 的 Decoder,其他選項都可以不用管他,有外掛字幕時 MPC-HC 也會自動呼叫 Vobsub 將字幕掛載上去。但是 MPC-HC 裡面的 DXVA 功能根據公式網站裡的說明 http://mpc-hc.sourceforge.net/DXVASupport.html,有相當多的使用限制,最麻煩的是
The MPC-HC Video decoder must be connected directly to the renderer. That means no intermediate filters such as DirectVobSub or ffdshow can be inserted between the decoder and the video renderer.
這裡顯示了 MPC-HC 的影像解碼器必須直接連接到 render,這表示了 DirctVobSub 或是 ffdshow 這類中間的濾鏡就無法發揮作用了。
接下來一步一步的來設定 MPC-HC 裡的選項
1. 打開主選單的 View —> Options
2. 到 Playback 選項,勾選 Auto-load subtitles
3. 到 Output 選項,XP 用戶勾選 VMR 9 (Renderless),Vista/Win7 用戶勾選 EVR Custom Pres.
4. 到 Internal Filters 選項,Matroska 和 Ogg 不要勾選,勾選 H264/AVC (DXVA) 和 H264/AVC (FFmpeg)
5. 到 External Filters 選項,按下 Add Filter...
找到 ffdshow Video Decoder 然後按下 OK
勾選右邊的 Block 選項,讓 MPC-HC 不要載入 ffdshow Video Decoder
6. 到 Subtitles 選項,這部份是設定字幕的解析度等等,不是很重要,詳細設定請看下圖
有時會遇到字幕是簡體中文編碼的狀況,這時到 Default Style 選項下把字型改為 GB2312 即可。
經過這一大堆煩死人的設定就可以順利啟動 DXVA 功能,如果有外掛字幕也會自動去開啟,另外寫這東西真是意外的累人。這篇文張大多是參考以下連結:
Watching h.264 videos using DirectX Video Acceleration (DXVA).
想知道更詳細的說明請看以上那篇,這是這幾天在網路上所看到最完整的說明,不過從標題可以知道那是英文網頁..
12/26 update:
● 要嘗試硬體加速之前請到這邊先下載 DXVA Checker 看看自己的顯卡/整合晶片組有無支援 DXVA。
● 按此連結下載 MediaInfo,解壓縮之後將裡面的 MediaInfo.dll 放到 MPC-HC 主程式所在的目錄。之後播放影片時按右鍵選擇 Properties,裡面會多一個 MediaInfo 的選項,裡面顯示的影片資訊對於碰到問題時的判斷很有幫助。
● 目前嘗試的結果不是所有影片都可以硬解,藍光片的 AVC 編碼規範是 profile L4.1 with 4 reference frames。網路上有一派說法是當壓製的影片 profile > L4.1 或 reframes >4 的話 ATI 的顯示卡硬解會出問題。但個人以手邊的影片 Evangelion 新劇場版:序 測試,影片的編碼資訊為
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L5.1
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
其 AVC profile 為 L5.1 & reframes = 4,在個人的電腦環境下可以正確啟動 DXVA。但播放這段 Planet Earth 的短片時,其 profile 為 L5.1 但 reframes = 16!所以 DXVA 功能無法啟動。
● 最後的感想還是,要搞硬解真的很很很麻煩,還是多花錢組台高效能的電腦用 CoreAVC 軟解比較實在。不用管一堆影片的壓制規格跟軟體設定。
● 如果真的要採用硬解這方案,根據目前收集到的資訊 nVidia > Intel G45 晶片 >>>>> ATI .....(默)
12/26 update again:
本文擷取自 Watching h.264 videos using DirectX Video Acceleration (DXVA). 裡面一位網友的留言。對於 DXVA 功能為什麼有這麼多限制與問題做出很詳細的解釋,目前沒打算翻譯,光看就很累人了。其實影片壓制只要照著藍光的標準規範來作的話就不會有這麼多問題了..
Paulus says:
14th December 2009 (Monday) at 1:20 am
The How, What and When of H.264, DXVA and ATI video cards.
Dear friends. There has been a lot of speculation about the H.264 DXVA capabilities of ATI video cards. Some say ATI can handle H.264 L5.1 profiles with DXVA, some say it can’t. Some say ATI will do 5 or more reference frames with DXVA, some say it won’t.
All of this is partially correct, and the following is an explanation of how it works. This will allow you to take any H.264 video, look at its properties (for example with MediaInfo) and then calculate if ATI can play this video using DXVA. Or vice versa; if you want to encode an H.264 video and use DXVA playback with your ATI card, the following will allow you to compute the proper H.264 attributes (reference frames) to do this.
A particular H.264 file’s ability for DXVA hardware acceleration by ATI cards is determined by a combination of the video’s display width, display height, and reference frames. The values of these attributes can be viewed with tools like MediaInfo.
For hardware acceleration to be possible, the video card must be able to fit inside its hardware buffers all MacroBlocks of the reference frames. If the H.264 video is encoded using 5 reference frames, then the video card must have enough space to hold a total of 5 frames for hardware acceleration to be possible.
So how many MacroBlocks can the video card hold, and how many does the H.264 video need? ATI cards seem to support the Blu-Ray definition, the L4.1 profile. This profile specifies a total number of 32768 MacroBlocks. To compute how many reference frames this video card can hold, we have to consider the H.264 video’s width and height. A 1920 x 1080 sized video has (1920/16 = 120.0 =) 120 by (1080/16 = 67.5 =) 68 is (120 x 68 =) 8160 MacroBlocks. How many reference frames will fit? 32768 / 8160 = 4.016 is (truncate) 4 reference frames. This is actually the Blu-Ray definition: L4.1 with 4 reference frames.
Now Blu-Ray videos are always 1920×1080, which includes the black bars at top and bottom with many movies. But when one crops-out the video only, one may end-up with a smaller sized video, 1920×800 in many cases. So when encoding smaller H.264 files, how many reference frames can be used to still allow DXVA hardware acceleration during playback?
With 1920×800 on ATI cards the answer is as follows: 32768 / [1920/16=120.0=] 120 / [800/16=50.0=] 50 = 5.461 = 5 reference frames, max. With 1920×720 this number is 32768 / [1920/16=120.0=] 120 / [720/16=45.0=] 45 = 6.068 = 6 reference frames, max. If we were to add only 8 lines to the former size, and create an H.264 video of size 1920×728 using 6 reference frames, hardware acceleration would not be supported. The calculation is as follows: 32768 / [1920/16=120.0=] 120 / [728/16=45.5=] 46 = 5.936 = 5 reference frames, max; 6 reference frames won’t fit.
So, to summarize, if your H.264 video is 1920×1080 and uses 4 reference frames, DXVA playback can be used. More than 4 reference frames, it cannot. If your H.264 video is 1920×816 and uses 5 reference frames, DXVA yes, more than 5 reference frames, DXVA no.
-Paulus
12/27 update:
根據以下這兩篇文章的說法,ATI 使用者還是有辦法硬體加速超過藍光規格的 H.264/AVC 影片,只是個人目前還沒有這類需求,也暫時不想把系統搞得太亂...純粹供有需要的人參考。
ATI HD Hardware Accelerated DXVA for H.264 AVC L5.0 / L5.1
Watching HD Video in MPC-HC DXVA for ATI HD 4000 Series Card Owners
這些種種軟體、decoder 的搭配法看到最後實在覺得有民間偏方的感覺...在個人電腦這種開放式環境下,影像的編碼本來就不可能達到規格化,這點回顧一下過去的歷史就可以知道。所以硬要用硬體去對應這些千奇百怪的軟體規格才會有這麼多麻煩問題吧。不過等個一、二年後,連文書電腦要軟解都游刃有餘時這問題就不復存在了吧..