Monday, May 19, 2008

H.264/AVC硬體解碼: Media Player Classic搭配PowerDVD

零. 前言

H.264視訊編碼已經誕生好一陣子了,其挾著高度的壓縮能力與畫質,與微軟提出的VC-1編碼,一同成為了次世代藍光光碟使用的編碼之一(HD DVD R.I.P)。但由於H.264的運算方式極為複雜,現階段若要以個人電腦中上等級的CPU,採用軟體解碼方式播放高流量、高解析度的H.264影片,是相對吃力的,更別說運算能力較低的CPU,發生影片播放不順暢、影音不同步的情況,是常有的。因此主流的顯示卡廠商:AMD/ATinVIDIA,提出了以顯示卡晶片硬體解碼的解決方案,將解碼工作轉交顯示卡GPU處理,大幅減輕CPU的負擔,以利電腦多工作業。這種做法類似以往借助MPEG-2加速卡播放DVD一樣。

AMD/ATi與nVIDIA的硬體解碼目標,主要針對市面上正版的藍光光碟。本文則展示如何利用Media Player Classic,搭配這兩家的顯示卡,以及CyberLink PowerDVD的H.264解碼器,直接在Media Player Classic中開啟顯示卡的硬體解碼功能,讓使用者可以順暢播放在網路上找到的H.264影片,並說明當中可能碰到的問題和限制。

一. 準備工作

本教學文使用了下列軟硬體:

1.1 ATi Radeon HD 3450

目前具備H.264硬體解碼功能的顯示卡,在AMD/ATi方面主要為Radeon HD 2400/2600系列,以及3000全系列,在此使用的是3000系列的小老弟3450。至於高階的2900系列則沒有此功能,請注意。nVIDIA的產品GeForce 8400 GS以上全部都有硬體解碼功能。

  • 雖然被顯示成3400 Series,可是它確實是Radeon HD 3450喔,在此搭配ATi官方驅動程式,Catalyst 8.4版
在整合性顯示晶片中,自然首推AMD的780G。上一代的690G也可以,但效能較差。nVIDIA到目前為止還沒有看到足以抗衡的產品。

1.2 CyberLink PowerDVD 7 Deluxe

硬體解碼並非顯示卡插上後就會自動開啟,還需要適當的播放軟體配合,這方面的首選,自然是CyberLink PowerDVD。PowerDVD從版本7開始,任一版的豪華版(Deluxe)皆具有H.264解碼器,可以直接啟動硬體解碼功能,在此便是要把該H.264解碼器借過來,交給Media Player Classic使用。相關的版本比較請參照PowerDVD官方產品說明頁

若你仔細看了以上的產品說明頁,鐵定會發現:所有版本的PowerDVD中,只有8 Ultra才能播放藍光光碟,其他版本的,就算有H.264解碼器,卻不支援藍光光碟。依我的推測,應該是卡在HDCP的解密功能,這表示8 Ultra以外的版本只能播放零星的EVOTS/M2T這類從藍光光碟rip出來的檔案,或是有人自行土炮壓製的MP4,雖然這類影片是X版的機會很大,且PowerDVD更無法播放自由軟體社群推廣的MKV檔案。

不管怎麼說,就算咱們要放X版影片,PowerDVD依舊是商業軟體,需要花錢買的。若你在網路上看到有人散佈PowerDVD的H.264解碼器,請小心點用。

  • 我很乖,因為我買了PowerDVD。身為一個愛看電影的人,會買一份專用的播放軟體也是很合理的。請多支持優良國產軟體。
1.3 Media Player Classic

如之前所言,因為PowerDVD沒辦法通吃網路上可以找到的檔案,所以我們祭出了Media Player Classic,相信大家對這玩意很熟悉了。通常你不會直接安裝這軟體,而是隨著編碼包一起安裝的。此外,為了播放MKV、MP4、EVO、TS這類非Windows原生的檔案,你需要Haali Media Splitter搭配使用。如果你還不太清楚這是怎麼一回事,請參考本站之前的教學文:編碼包導覽 以CCCP與Real Alternative Lite為例(上篇)(下篇)

二. 操作步驟

將以上軟硬體安裝好後,首先啟動Media Player Classic,由工作選單選取View->Options,進入左方Playback->Output欄目,Windows XP使用者請將DirectShow Video的render調整成VMR9(windowed)Vista使用者則選用EVR

  • 我還在用Windows XP,所以EVR(Enhanced Video Renderer)選項看不到。但遽聞目前在Vista下,EVR跟nVIDIA GeForce 8500/8600的配合度有點問題,若你碰到不正常的狀況,請改用VMR9(windowed)。
接著從左方切到External Filters欄目,一般來說會看到空盪盪的內容,先按右側的Add Filter:

從蹦出來的Select Filter視窗,找到CyberLink H.264/AVC Decoder,按OK加入:

回到External Filters視窗,將CyberLink H.264/AVC Decoder的優先度調整至Prefer

為了確認CyberLink H.264/AVC Decoder會將資料丟給顯示卡處理,這時在其上雙擊滑鼠左鍵,在跳出來的設定視窗中,確定DxVA選項有被勾選起來。它的全名是DirectX Video Acceleration,功能夠明顯了吧。
由於我自己還裝了H.264軟體解碼用的CoreAVC,為求慎重起見,我用同樣的方式將它加入,並將它Block。FFDShow使用者也請至FFDShow Video Decoder Configuration將其對H.264的支援關掉,以免發生解碼器搶優先權的強況:

以上幾個步驟就設定完成了,按下確定鈕離開,接著播放影片實際測試。

三. 影片測試

在此的測試環境是Windows XP Pro SP3,CPU為雙核心的AMD Opteron 165,搭配2G的RAM,並於放影片時關掉不必要的常駐程式。首先牛刀小試一番,放個流量小,解析度不高,有點幼年向的MP4檔案(XD):

  • CPU的使用率在10%左右附近跳動,偶爾跳到20%左右,但平均使用率依然很低,由系統內容可以看到,CPU更發慌到運作時脈由原本的1.8GHz降至1GHz左右節省電量,所以硬體解碼應該是成功了。
接著播放由Apple下載的Iron Man電影預告片,採用Apple Quicktime的MOV格式封裝,解析度達1280*544:

  • 本片的解析度與流量比前一個卡通片高上了許多,雖然CPU的時脈恢復到了額定的1.8GHz左右,但使用量還是非常低,圖為Iron Man發射飛彈的英姿。(還要你說喔,吼)
為了繼續壓榨Radeon HD 3450,我們播放解析度更高的片子,同為自Apple下載,近期就要上演的The Chronicles of Narnia: Prince Caspian,解析度達1920*816,已經近乎逼近Full HD的規格了:

  • 就算播放如此規格的影片,顯示卡的硬體解碼依然讓你的CPU遊刃有餘,使用率低得可以。
如果你想加確定硬體解碼的功能是否開啟,可以在播放影片時,選擇Media Player Classic工作選單的Play->Filters->Video Mixing Render 9 (Windowed),切換到Pin Info項目,檢查視訊資料被處理時的路徑資訊:

  • 在這可以看到VMR9接收了由CyberLink H.264/AVC Decoder解碼後送來的資料,且顯示方式為DXVA,表示硬體解碼成功。
四. 失敗案例

並非所有的H.264影片都可以被硬體解碼的,在這展示兩個失敗的例子。我們繼續播放The Chronicles of Narnia: Prince Caspian預告片,但自行編寫一個外部的SSA字幕檔,讓VSFilter掛上:

  • 掛上外部字幕檔以後,CPU的使用量很明顯暴增了許多,從Video Mixing Render 9 (Windowed)的Pin Info可以看到,這時VMR9並非接收CyberLink H.264/AVC Decoder的資料了,而是DirectVobSub,也就是VSFilter。這是由於在影片的出輸路徑中,倒數第二關是DirectVobSub接收H.264 Decoder的資料,替影片上字幕,最後再由VMR9顯像。由於DirectVobSub夾在H.264 Decoder與VMR9之間,導致顯示卡的硬體解碼功能無法開啟,因此硬體解碼失敗。由VMR9輸出的影片格式亦可知道,這時不再是DXVA格式了,而是YUY2 color space
還有一個雖然沒有字幕,但卻無法正常硬體解碼的例子,這是網路上找到的Matroska檔案,由動畫社群土炮壓製的Gundam 00開頭動畫,解析度為1920*1080,已經符合Full HD的標準:

  • 本片由板友xelnaga提供。
在這個例子中,CPU使用率雖然有效下降,確實是用硬體解碼,但卻發生畫面破碎的情況。可能原因有兩個,第一:我用的Radeon HD 3450有問題。這不是不可能,前陣子的Radeon HD 2400系列就發生了不少瑕疵,導致硬體解碼不正常。另一個原因,也是我認為比較可能的,就是本片沒有依照H.264的profile參數壓製。簡單來說,H.264編碼制定時,有不同的「profile」,各profile又有不同的「level」,在此姑且稱之為「規範」與「層級」。不同層級與規範,各自適用於不同的用途。有的適合在手機、PSP等,以較低流率與解析度播放,有的適合藍光光碟的高解析度影片,有的適合數位電視傳送,各有不同的壓縮參數設定。若影片在壓製時,某些參數的的設定值超出了規範的合理範圍,就可能無法用硬體解碼。這樣的情況依舊可以用DVD的MPEG-2影片類比:並非每一個MPEG-2影片扔到DVD中就可以用獨立的DVD player播放,就算你可以在電腦上正常放映它,因為DVD影片有應有的規範,不合乎規範的MPEG-2檔案,就過不了DVD player的解碼晶片這一關。關於H.264的規範與層級,可以參考本Wiki說明頁

以上顯現了硬體解碼很大的缺點:不穩定、使用彈性低,而這方面就是軟體解碼的優點,只要CPU夠強,任何影片都可以用軟體解碼處理,且軟體更新方便,要照著規範走很容易,甚至可以處理體制外的東西。同一個Gundam 00檔案,改用效率一流的CoreAVC解碼,就能正常播放了:

  • 用Opteron 165還有CoreAVC硬幹,並沒有比硬體解碼差到哪去,雖然CPU使用率增高了不少,在VMR9方面影片解析度還從1920*1080被誤判成2048*1080,可是實際播放上沒有任何問題,非常順暢。
還有一種片子不太可能開啟硬體解碼,就是放在AVI檔案中的H.264。由於AVI先天不支援H.264在壓縮時採用的b frame,AVI必須經過些許破解才能放入H.264,而這完全是標準規範外的事。碰到這種檔案,除了軟體解碼以外,沒有別的法子。

2007/5/22更新:外掛字幕成功

經由AVEncode板板友sdbb的提醒,利用Media Player Classic的內部外掛字幕功能,而不要透過VSFilter,或許可以在搭配外部字幕檔的情況下,順利開始硬體解碼。在測試後,這個方法確實可行。

首先利用前文說明的方式,將Video Render由VMR9(windowed)更改為VMR9(renderless)。測試片依舊是The Chronicles of Narnia: Prince Caspian預告片:

  • 切換到VMR9(renderless)之後,硬體解碼同樣正確開啟,但一播放影片時,卻發生片子的畫面比例被扭曲的問題,雖然在稍稍拉動Media Player Classic視窗後,就恢復正常了,播放依舊順暢。目前不清楚這是什麼問題造成的。
接著就可以啟用Media Player Classic自身內部的外掛字幕功能了,從選單File->Load Subtitle,找尋字幕檔案,就能掛上字幕:

  • 這時就算掛上字幕檔,硬體解碼功能也不會被干擾了,VMR9(renderless)的輸出視訊顯示為DXVA,而CPU的使用率近乎沒有超過20%過,表示硬體解碼成功。請注意在這裡的字幕檔檔名特地改成與影片檔不一樣,否則VSFilter會自己蹦出來當電燈泡。
伍. 结語

本文展示了如何利用Media Player Classic與PowerDVD 7 Deluxe的元件,開啟Radeon HD 3450顯示卡的H.264硬體解碼功能,以及當中所遭遇的問題。硬體解碼雖能有效降低CPU的使用率,但在某些情況,依舊不如軟體解碼來得方便。如果電腦的配備能力許可,請盡量使用軟體解碼,以免產生本人在撰寫本文跑影片測試時,發生的當機問題(XD)。

其實前一陣子在網路上出現了一個計畫,稱為Media Player Classic - Homecinema,內建了網路社群編寫的H.264解碼器,可以直接開啟硬體解碼,不需要PowerDVD的協助,在外掛字幕方面也更方便,雖然目前整體運作尚未穩定,但其日後的發展,應是值得期待的。

Thursday, May 15, 2008

編碼包導覽 以CCCP與Real Alternative Lite為例: (下)安裝與微調

零. 前言

上篇中,咱們介紹了CCCPReal Alternative Lite,本篇則說明這兩套軟體的實際安裝、設定,與依個人使用需要的微調。在正式開始以前,若你的電腦裡已經安裝了其他的編碼包,請將它們移除,以免造成不必要的衝突,然後重新開機。Real Player很明顯會跟Real Alternative Lite衝到,必須移除。舊版的VSFilter(DirectVobSub)可能也會,請多注意。總之你的系統越乾淨越好。此外,建議先看看CCCP官方Wiki說明的Supported Formats,了解一下CCCP的能力是否合乎你的需求。

理論上編碼包這類東西的安裝過程相當簡單,畢竟它就是被設計給大家方便的,不過在此依舊對安裝CCCP時的幾個重要選項作說明。雖然它們不至於對使用上造成太大的影響,不過至少你能了解你的編碼包到底為你做了什麼事。

一. CCCP安裝設定

經過歡迎畫面與安裝路徑選擇後,出現的是元件選擇:

建議Zoom Player不用裝,Media Player Classic已經足以應付播放工作;已經安裝PowerDVD或WinDVD者,也不需要MPV Decoder;CoreWavPack視使用需求而定,通常是不需要的,WavPack的玩意交給foobar2000處理就好;需要播放Flash Video的FLV檔案的話,就將FLV Splitter留下。剩下的其他元件請務必安裝。

接著來到了額外設定,這比較複雜一點點:

預設勾選的Set Perceived Types是針對Media Center版Windows的設定,由於Media Center只會播放有登錄過副檔名的檔案,這個設定會讓Media Center辨認原本不認得的副檔名,例如mkv、Ogg等等。對於一般的Windows而言,本選項可有可無,在此保持勾選就好。至於堅持使用Windwos Media Player播放的人,請務必把Register Extension in Windows Media Player選項勾起來,這動作類似於Set Perceived Types一樣,讓WMP辨識原本不支援的檔案格式,將多媒體檔案的副檔名與WMP連結起來,在此建議不要使用WMP,使用CCCP內含的Media Player Classic穩定度與功能性較好。

另外還有兩個Haali Media Splitter的選項。啟用Enable Shell Extensions可以讓Windows的檔案總管認得MKV、Ogg、OGM、MP4等副檔名,在檔案瀏覽器的狀態列正確顯示檔案格式,以及當你在這些檔案上按滑鼠右鍵->內容時,會多出一個說明該檔案影音格式的分頁。啟用Enable Thumbnails可以在檔案總管中,於檢視縮圖的狀態下顯示影片縮圖。這兩個選項僅是為了方便性,請依需求自行決定。

接連按了幾次Next之後,就…裝好了XD,應該是不會有什麼問題,所以直接按Finish進入CCCP的設定頁面。更明確說,是FFDShow的設定:

預設上CCCP幫你把FFDShow最常用的解碼功能都開啟了。在此假設你沒有安裝任何其他的解碼器,所以Video Decoders跟Audio Decoders的每一個選項通通保持勾選。至於FFDShow Audio Settings那邊的聲道數選項,由於我手頭邊只有雙聲道音響,使用雙聲道以上音響的人,請自行摸索一下。至於2.1聲道,也就是多一個重低音的音響,請保持預設的2/0/0 - stereo,因為2.1音響的分音是音響自己在負責的,跟電腦訊源沒有任何關係。

AC3與DTS Dynamic Range Compression需要說明一下,這類音訊時常被用在電影DVD上,由於電影中的音量常常落差很大,大聲的很大聲,小聲的又太小聲,這不僅考驗播放時的音響系統,更考驗音效卡解析度。為解決此問題,啟用Dynamic Range Compression可以將音量的極高值與極低值的差距縮小,聽起來會順耳些。但這很明顯又造成另一個問題,聲音的動態範圍被壓縮後,就表示播放起來與原始的訊源有差距了。所以呢,對自己的系統有信心的人,不妨「取消」這個選項,讓訊源原音重現。

FFDShow General那邊的Video與Adio Tray Icon可以決定當FFDShow動作時,是否在畫面右下角的狀態列顯現圖示,建議保持勾選,在播放時還可直接在圖示上按滑鼠右鍵,啟動微調功能。Modern的圖示比較漂亮,就不去動它了。按Next進入下一個設定頁:

File Association決定檔案要用什麼軟體開啟,建議全改為Media Player Classic。右方的Haali Media Splitter選項,請「通通保持原狀」,不要動它。因為Haali Media Spliter對AVI的支援不見得比Windows內建的AVI Splitter要來得好,對於MPEG Program Stream的支援更是不完整,所以預設是關起的。

VSFilter的兩個選項沒有必要勾選,因為用Pre-Buffering方式讀取外掛字幕檔,也就是將尚未播放的字幕讀入記憶體做緩衝,雖然可以節省很少量的系統資源,但是諸於Karaoke、淡入淡出等字幕特效就看不到了。除非你的電腦配備真的很差,這方面不用煩惱。至於我們不用Zoom Player放片子,所以強制Zoom Player顯示VSFilter的招牌綠箭頭與否也不受影響。

最後兩個Special Settings,由於才剛剛裝好CCCP,應該用不著。但往後當你想恢復最初的預設設定,或是因為裝了其他解碼器而導致設定值跑掉,這兩個選項應該幫得上忙。按下Apply之後,CCCP便可說完全安裝完成了:

這裡的FFDShow VFW Codec Configuration是搭配VirtualDub一類走Video for Windows規範的影像編輯軟體用的。這不是本文的討論範疇,對於不壓片子的人來說,應該也用不到。

二. Real Alternative Lite安裝設定

這玩意應該就不用教了吧,下載後按沒幾下Next就裝好了,也幾乎不用設定,所以就不囉唆了。(發懶中)

三. 額外微調設定

理論上CCCP搭配Real Alternative Lite已經足夠播放網路上大部分的東西了,但依照不同的使用需求,以及少許特別的檔案,有時自己手動微調是必要的,在此說明常見的問題與解決方法。不過對於一些極特殊的案例,本文勢必有所遺漏,還請見諒。

3.1 我的片子有影無聲/有聲無影,哭哭~

這絕對是PTT的AVEncode討論區上最常問題之一。這時候請別慌,先到CCCP首頁下載Insurgent軟體,這是CCCP團隊特別設計,用來偵測電腦中到底裝了哪些解碼工具的小程式,也可偵測多媒體檔案中的編碼為何。

這裡拿一個用手機拍攝的3gp影片檔案為例,預設安裝中,這東西是無法用CCCP播放的。不過當我們用Insurgent的Tools->Media Information分析該檔案以後,得知了它的編碼內容:

  • Insurgent居然知道我曾經安裝,並移除過Codec Pack All in 1,猴塞雷呀~果然壞事不能幹,凡走過必留下痕跡。
原來它的視訊是H.263家族的s263編碼,音訊則是AMR。這時我們到CCCP的選單,分別開啟FFDShow Video與Audio Decoder Configuration,從左方選單切換到Codecs欄目,再分別將H.263與AMR的支援由原本的disabled調整成libavcodec:

再用Media Player Classic開啟該3gp檔案,就可正常播放了:

碰到任何無法放的檔案,請先比照本方法處理。若碰到FFDShow無法支援的格式,再到AVEncode討論區詢問也不遲。有興趣者可以把本3gp檔案下載回去瞧瞧。

3.2 救命啊~為什麼我的片子背景聲音正常,人聲卻好小!

與上一個問題相比,這應該是第二常在AVEnode板上出現的問題。這種情況有99%的機率是:你碰到DVD中5.1聲道的AC-3或DTS訊源,而且你不小心把FFDShow Audio Configuration中的Mixer關掉了:

  • FFDShow的混音器請保持開啟,不論你用的是2.0、2.1還是5.1的音響。
5.1聲道以上的訊源多半是將人聲放置在中央聲道中,由於5.1聲道對電腦來說其實是近幾年的事,若沒有軟體混音器的協助,電腦不會處理,FFDShow內建的混音器便負責這項工作。更早以前就出現的AC3Filter也有這方面的功能。

3.3 我想自己裝DivX、Xvid與CoreAVC,或其他的解碼器,課以嗎,課以嗎?

這方面完全不衝突,只要到CCCP的Settings控制台將FFDShow對該編碼的支援關掉即可,但在此不建議你這麼做,因為除了CoreAVC以外,FFDShow對於DivX與Xvid的解碼能力與效率,比官方的解碼器還要好,特別是DivX,連官方版本都問題多多,請少碰為妙。至於Xvid則問題不大,我自己就是用Koepi版Xvid壓片、用FFDDShow看片,目前為止沒有任何衝突。

倒是CoreAVC可以提一下,這東西應該是現存最好的H.264/AVC軟體解碼器,不僅效能很高,也比利用顯示卡的硬體解碼來得穩定。唯一的問題是,它是商業軟體。若你在網路上以任何方式找到了本軟體,請低調使用。不過我自己真的花了14.95美金買了一份Professional版CoreAVC,所以我用得很心安XD。

至於其他的解碼器,只要你發現FFDShow沒有支援,或是把它手動關掉了,想用別的解碼器,那大可安心使用。提供Media Player Classic播放Musepack音樂檔案能力的RadLight MPC DirectShow Filter就是個好例子。

3.4 Media Player Classic的抓圖功能不管用,該怎麼辦?

請到Media Player Classic的View->Options中,由左方的Playback->Output欄目,將DirectShow Video由預設的Overlay Mixer調整成System Default,再不行的話就調成另外四個VMR7與VMR9試試,抓完圖後再把它調回來。由於Overlay Mixer是穩定度最高,且顯像速度最快的顯示方式,CCCP預設採用本顯像方式。至於為何要這麼做,這牽扯到電腦上影片與顯示卡之間的互動,請不要問我為什麼:p。

以上就是我所能想到,在使用CCCP搭配Real Alternative Lite時的相關問題,實際上不管你用的是何種編碼包,解決方法幾乎都是一樣的。若你碰到其他更棘手的情況,請到PTT的AVEncode板詢問,不要問我XD。

四. 结語

本文說明了CCCP與Real Alternative Lite的實際安裝與相關設定、微調,以及可能遭遇的問題與解決方法。(好吧,只有CCCP XD)安裝編碼包雖然是方便的解決方案,但親自動手設定、找出檔案無法播放的問題,以及了解你的編碼包,才是正確的使用方式,希望以上對各位有所幫助。最後請聽明日香的怒吼:


Tuesday, May 13, 2008

編碼包導覽 以CCCP與Real Alternative Lite為例: (上)概說

零. 前言

口胡,連編碼包都需要占篇幅寫一篇專文喔?編碼包不是專門給懶人用的嗎?是的,當手頭上有無法播放的影片、音樂檔時,相信絕大多數人會祭出編碼包,也就是所謂的Codec Pack,期望編碼包裡頭的某樣解碼器可以對付該檔案。但是,真那麼容易嗎?你明白你所安裝的編碼包,不論是K-Lite或是XP Codec Pack,到底在你的電腦中安裝了什麼?甚或,你安裝了適合自身使用需求的編碼包?安裝編碼包時真的就是不斷的按Next下去?(來,立宏,哩供跨賣)

所謂編碼包,顧名思義就是將大家常用的解碼器與播放軟體打包起來,讓使用者一次安裝,就能應付大多數的影音檔案,而不用為了到底該裝什麼軟體煩惱。但這是優點也是缺點:一股腦安裝過多的軟體,使用者不見得明白各元件的用途為何,而規劃不良、裝了太多用不著的垃圾、自身發生衝突甚至毀壞作業系統的編碼包,也不是沒有。所以人懶也要有個限度,明白自己到底裝了什麼軟體,以及編碼包的能力所及,才是正確的使用方式。

本教學以短小精幹的CCCP編碼包為主,以Real Alternative Lite為輔,共分上下兩篇:上篇,也就是本篇,說明CCCP與Real Alternative內部各元件之功能,以及所支援的編碼;下篇則說明CCCP的實際安裝與微調,並搭配Real Alternative Lite,讓使用者可以用最少、最適合的軟體,播放絕大多數常見的影音檔案。之所以會選擇這兩套軟體,是因為它們的基本元件在其他各大編碼包也看得到,了解它們便可舉一反三了解更多相關軟體。

一. CCCP元件說明

CCCP全名是Combined Community Codec Pack,各位會發現它的網站非常有前蘇聯的風格,且縮寫CCCP亦與「蘇維埃社會主義共合國聯盟」名字一模一樣,這是由於CCCP除了有少數核心成員編譯、打包以外,更有為數眾多的字幕組參與測試維護與推廣,確保每次版本更新的相容性與品質。CCCP的設計用意,不在於播放任何種類的影音檔案,而是針對網路上字幕組常用的格式為主,也不會硬塞其他用不著或是使用度極低的解碼器,因此CCCP的安裝容量與複雜度硬是比其他編碼包小上許多。此外CCCP更是Matroska容器的官方指定編碼包,可見其維護與穩定度有一定水準。

本文截稿為止,最新2008-01-24版本的CCCP內部計有以下元件:

  • Media Player Classic
  • Zoom Player Standard
  • FFDShow Tryout CCCP
  • VSFilter
  • Haali Media Splitter
  • CoreWavPack
  • Gabest's MPV (MPEG2) Decoder CCCP
  • Gabest's FLV Splitter
是的,簡簡單單就這麼多了,安裝起來乾乾淨淨,一點垃圾也沒有,整個安裝檔僅有5.8MB,絕對不是所謂「裝太多東西」的編碼包。以下簡略說明CCCP的元件:

1.1 Media Player Classic (MPC)

這應該是各大編碼包都會包含的多媒體播放器之一。MPC在操作介面上模仿了微軟的Windows Media Player 6.4(WMP),但是增加了更多的強化功能,包含快轉慢轉播放、原生支援外部字幕檔、VCD與DVD播放、外部解碼器調控等,與更多使用者可自行操控的微調,且MPC本身設計良好,比WMP更節省系統資源,但最重要的一點是:MPC完全遵守微軟的DirectShow規格。DirectShow是微軟替Windows制定的影音架構之一,當一個播放器遵循DirectShow時,就算該播放器不認得你要播放的影音檔案,只要你的系統中安裝了適當的DirectShow規格解碼器,那麼播放器便會自動採用該解碼器處理影音檔案。簡而言之,DirectShow-Based的播放器僅提供檔案與使用者之間的播放介面,至於當中的解碼作業,就交給相關的外部解碼器處理,所以理論上這類型播放器所支援的編碼是可以無上限擴充的。

MPC也支援RealNetworks的rm/rmvb與Apple的mov檔案,只要分別安裝了Real Alternative Lite與Quicktime Alternative Lite即可。不過各位碰到mov的機會絕對比rm/rmvb來得少,在此就不贅述,有需要再自行安裝就好。

  • 這兩個軟體雖然長得很像,可是骨子裡是完全不同的東西。Windows Media Player 6.4在Windows XP內的執行檔是mplayer2.exe,各位有興趣可以玩玩看。

1.2 Zoom Player Standard

Zoom Player也是DirectShow-Based的播放器,CCCP同時附上它僅是為了讓使用者有第二個選擇而已,而實際上我真的沒有用過Zoom Player,因為MPC已經很夠用了,所以在此就跳過它不介紹了。﹝好吧其實是我太懶了﹞

1.3 FFDShow Tryout CCCP

FFDShow是CCCP真正的解碼核心,支援多種視訊與音訊解碼。FFDShow其實是一大票免費Open Source解碼器的集合,支援了不下數十種的影音格式,在視訊上以MPEG-4相關編碼為重,包括最常見的DivX、Xvid、H.264/AVC,以及流通率較低的3ivx與微軟自家的MPEG-4,音訊上則包含了MP3、AAC、AC-3/DTS、Vorbis等字幕組最常用的格式。此外FFDShow還提供了相當多的視訊/音訊濾鏡,可以微調、改善播放時的品質。

FFDShow的官方發展在2006年就停頓了,因此有熱心人士接手,繼續發展FFDShow Tryout,並修正先前FFDShow的眾多問題。由於FFDShow Tryout也是Open Source,故CCCP團隊在取得程式碼後自行編譯了自家的版本,故稱FFDShow Tryout CCCP。請別用任何其他版本的FFDShow來取代CCCP內部的,因為CCCP為了整合與最佳化,有做些許調整。

預設安裝上,CCCP並沒有將FFDShow的解碼功能全部開啟,因為絕大多數的編碼在字幕組方面實在是不常用到,例如手機拍攝影片3gp檔案內部的H.263視訊與AMR音訊,用來錄製電腦遊戲畫面的FRAPS編碼,還有早年數位像機拍攝的Motion JPEG影片等等,甚至還有用AVI裝起來的MPEG-1/2影片支援,不過這些功能都可在安裝後手動開啟支援。更神奇的是,FFDSHow採用了部分FFmpeg的程式碼,提供了些許編碼功能,可以在VirtualDub一類走Video for Windows(VfW)規範的軟體中做影片轉碼,不過這類工作還是交給Xvid或x264這類專門的編碼器比較實在些。

FFDShow功能雖是decoder,但在DirectShow的文件中,這類具備對資料處理以及解碼功能的東西被稱做「filter」。所以當你往後看到DirectShow Filter這類字眼時,它指的就是遵循DirectShow架構的解碼器。

  • 拜Open Source軟體之賜,FFDShow支援的影音編碼多到不行,就怕你不知道要開啟而已。此外還提供了不少濾鏡,可以在解碼時對輸出做微調。
1.4 VSFilter

VSFilter前名為DirectVobSub﹝勿和VobSub搞混﹞,就是大家最熟悉,用來掛載外部字幕檔的軟體,也就是有名的綠箭頭。常見的字幕檔,包括SRT﹝SubRipText﹞、SSA﹝SubStation Alpha﹞、ASS﹝Advanced SubStation Alpha﹞,還有用VobSub軟體從DVD中抓出的IDX+SUB圖形式字幕檔,VSFilter都可輕鬆應付。

VSFilter其實也是一種DirectShow Filter,這不難理解,因為字幕檔也是要經過「解碼」後,才能正確顯現,這也是為何它之前稱為DirectVobSub。

1.5 Haali Media Splitter

這是CCCP另一重要的元件,功能為影音分離器,用來處理常見的封裝格式,包括Ogg/OGM、MP4、MKV/MKA等。至於AVI,由於是Windows既定的格式,已經支援良好,所以預設安裝時,CCCP將Haali Media Splitter對AVI的支援關掉了,而實際上也不建議你開啟它,因為它處理AVI檔案的效能並沒有比較好。Haali Media Splitter只做一件事:將封裝格式裡頭的視訊、音訊與字幕檔案解析出來,交給FFDShow與VSFilter處理。這看似簡單,卻很重要,因為Windows本身並不認得Ogg、MKV這類後來才出現的檔案,故身為DirectShow Filter一份子的Haali Media Splitter扮演重要的中介角色,讓相關檔案得以正常播放。

關於所謂的封裝格式,請參考本站先前的文章:影音封裝格式: (上)概說(下)常見格式簡介

  • 在此展示DirectShow架構的功能性,畫面中我們用近乎十年前的Windows Media Player 6.4,播放一個包含Xvid視訊、Vorbis音訊與SubStation Alpha字幕檔的Matroska檔案。這些東西在十年前通通不存在,Windows Media Player 6.4不可能認得它們,但在DirectShow積木般的結構之下,這個檔案依舊可以藉由外部軟體協助播放。畫面右下角可以看到運作中的FFDShow紅藍圖示、VSFilter有名的綠箭頭,以及解析Matroska檔案的Haali Media Splitter。
1.6 CoreWavPack

FFDShow本身已經支援不少無損音訊壓縮編碼了,常見的APE、FLAC與True Audio皆支援,唯獨缺少了WavPack,因此CCCP團隊選擇多加入這個解碼器。WavPack有一個特別之處:它可以採用無損方式壓縮音源,也可以用有損方式壓縮,犧牲些許音質讓檔案更小。更特別的是,採用有損壓縮時,你可以選擇是否要額外產生一個修正檔案﹝correction file﹞,當有損壓縮的檔案搭配修正檔案播放時,便可恢復到無損壓縮的音質。這是WavPack所謂的Hybrid模式,雖然看起來似乎不太實用,不過它確實是個很有趣的技術。

由CoreCodec團隊開發的CoreWavPack是目前唯一可以支援Hybrid模式的WavPack Directshow Filter,因此被CCCP採用,不過我相信會玩無損壓縮音樂的人用foobar2000播放的機會比較大,也幾乎沒有字幕組會用WavPack當音源,所以CoreWavPack應該只是個選擇性的元件。

1.7 Gabest's MPV (MPEG2) Decoder CCCP

MPC其實已經內建MPEG-2解碼器,可以直接播放DVD影片,不過官方版的MPC好一陣子沒更新了,故CCCP將此解碼器重新編譯並做了些修正。MPV Decoder的解碼效能不差,不過依舊比不上PowerDVD或WinDVD這類軟體,且無法支援顯示卡的硬體加速,所以是很應急的東西。基本上現在買DVD-ROM或是DVD燒錄機,都可以同時獲得OEM版的PowerDVD了,所以這MPV Decoder的使用機會大概也不多。MPC跟VSFilter同時也是Gabest老兄的傑作,Gabest萬歲。

1.8 Gabest's FLV Splitter

由於YouTube一類網站日漸發達,現在碰到Flash Video的機會是越來越高,雖然沒有一個字幕組會無聊到使用Flash Video,不過CCCP還是很好心的附上了Flash Video用的分離器,讓MPC支援FLV播放,不過解碼工作依舊是FFDShow在處理。

  • 這是本人上了字幕,上傳YouTube後,再回鍋抓回來的FLV影片,所以畫質很差是理所當然的XD。感謝Grace大人協助了日文翻譯的工作。
二. Real Alternative Lite

各位應該已經發現CCCP編碼包中沒有用來播放RealMedia檔案的軟體了,原因很簡單:國外的字幕組根本不使用RealVideo與RealAudio編碼。雖說RealMedia可以把檔案壓得很小,但是效能低落,畫質很差,再加上格式本身的封閉性,這東西在國外的影音社群中根本是毒藥,偏偏對岸的字幕組們很愛用這玩意,所以在此補充Real Alternative Lite解碼器。

照理說RealMedia應該用RealNetworks公司的RealPlayer播放,可是RealPlayer更是出名的爛,所以某K-Lite編碼包團隊編寫了Real Alternative,讓DirectShow-Based的播放器可以播放RealMedia檔案。實際上,Real Alternative僅是將RealNetworks公司的軟體重新包裝後,再搭配Gabest編寫的Real Media Splitter與Media Player Classic發佈。這個動作當然搞得RealNetworks公司非常不爽,不過目前為止RealNetworks公司並沒有採取任何法律上的行動。

由於CCCP已經包含Media Player Classic了,故在此推薦安裝不包含MPC的Real Alternative Lite就好。

三. 結語

本文介紹了CCCP編碼包與Real Alternative Lite,讓大家得以安裝最少、最乾淨的軟體,就能播放網路上字幕組常用的影音格式,並且說明CCCP各元件的用途,以及DirectShow架構的優點,讓各位了解編碼包的運作方式。

若想對CCCP有更進一步的認識,請參照CCCP的官方Wiki,建議先從常見FAQ看起,特別是其中的Supported Formats。CCCP是少數同時具有官方討論區與自家Wiki的編碼包,絕對可以提供不少協助。

最後帶大家做個消遣:CCCP團隊最喜歡揶揄的ACE Mega CodecS Pack,整個安裝檔案竟然有49MB之大,包含了許多Windows內部既有的編碼,一大票未經合法授權的商業編碼,更有一堆平常根本用不到,以及重複性極高的玩意。

在本文的下篇中,將說明CCCP與Real Alternative Lite的安裝過程,與相關微調。不過實際上你已經可以先把它們下載回去玩玩了,這兩個玩意搭配得很好,也不會發生搞掛作業系統的慘劇。不過在安裝前請務必移除電腦中已安裝的編碼包,還有Real Player那類玩意,以免造成不必要的衝突。