Friday, June 20, 2008

音訊編碼簡介: Musepack

零. 前言

破壞性音訊格式的市場經過多年來各家的爭奪,版圖大致已定,MP3早是最大贏家,成為消費性電子產品與個人電腦上的主流,其繼承者AAC也隨著iPod的流行發熱,成為各類媒體播放器與手機通訊設備的重要應用,WMA在微軟大力發展推行之下逐漸追趕,ATRAC隨著MD淡出市場早就被大家遺忘,Vorbis繼續在自由軟體界裡頭消遙著。在此要介紹的,則是同為出身自自由軟體社群,但相對冷門的編碼:Musepack

一. 什麼是Musepack

Musepack出現於1997年左右,是針對音樂壓縮而開發的破壞性編碼,以MPEG-1 Audio Layer 2(MP2)為基礎,但擴增了更多的壓縮演算法,與MP3系出同門,當初更以MP3為競爭對象。由於MP2與MP3一樣,實為受專利權控制的編碼,故Musepack一度受到有侵權可能的質疑,因此Musepack在開發過程中完全剔除了與MP2有關的程式碼,一切從零開始。

Musepack的壓縮模型所針對的,是中高資料流率的表現。在平均值為170kpbs左右的預設Standard模式之下,可以達到在人類聽覺感知上,近乎與原始未壓縮音樂沒有差異的表現,也就是所謂的「Transparent」。資料流率依序增高的ExtremeInsaneBraindead模式更能大幅減少壓縮噪聲,除非你有超人般的聽力與高傳真的音響設備,從Insane模式開始,大概就很難挑出雜訊了。

礙於本身針對中高流率的設計目標,Musepack並沒有對低流率的使用做最佳化,因此在低到32/64kpbs這種流率時,就不是Vorbis與AAC,甚至WMA的對手了。這類編碼為了網路串流(Streaming)的應用,有針對低流率的情況做特別調校,但這就不是Musepack的強項。 

身為改良的MP2,Musepack是純粹的變換性流率編碼(Variable Bit-Rate),也就是說,所謂的128kpbs、160kpbs等音質分類法,對Musepack來說是沒有意義的,Musepack編碼器會依照指定的壓縮品質,針對音樂各部所需,給予不同的資料量,以維持檔案大小和音質的平衡,這種壓縮方針與AAC、Vobis等一類較先進的破壞性編碼無異。此外,Musepack最初名為MPEGplus,有時更簡稱為MPEG+與MP+,但為了強調其發展於自由軟體界,與受專利控制的MPEG格式不同,而後才改名為Musepack,並以MPC為檔案的副檔名,不過這和具有相同簡稱的Media Player Classic可是一點關係都沒有喔。

二. 使用注意事項

2.1 如何解碼播放?

於Windows上,最方便且直接的播放方式,是使用foobar2000,它原生支援Musepack,不需要安裝任何外掛軟體。若想用Windows Media Player或Media Player Classic一類的DirectShow播放器,也可以從Musepack的官方下載頁安裝RadLight MPC DirectShow Filter,該頁面上同時也有Winamp用的外掛解碼器。

2.2 如何編碼壓縮?

死硬派的指令列使用者可能會喜歡Musepack官方提供的mppenc編碼器,懶一點的人可以搭配郵第三方編寫,非官方的MPC Batch Encoder圖形介面,跟mppenc一起使用,這些東西同樣可在官方下載頁找到。但實際上這兩種方法都不太方便,MPC Batch Encoder好一陣子沒跟新了,對於包含中文的檔案路徑支援度非常差。較好的方式,是直接將mppenc扔到foobar2000的程式根目錄中,就可以直接使用它的Converter做Musepack轉碼。

  • foobar2000內部早就提供了Musepack的壓縮設定,你只要把mppenc編碼器裝好就行了。其實foobar2000提供了更多其他的編碼壓縮,就等著你用。

  • 這是壓縮時的音質設定,foobar2000提供了Q3到Q10的音質,平均資料率為90kbps至350kbps不等,但依照Musepack的變動資料率天性,此數值僅供參考。從最差的Q3往上數,分別是ThumbRadioStandardExtremeInsane,而Q8至Q10則為Braindead,基本上Thumb與Radio設定你不會想理它。
2.3 Musepack的優點?

冷門歸冷門,Musepack還是有長處:
  1. 開放原始碼,沒有專利問題。
  2. 編碼與解碼速度很快,與MP3、AAC與Vorbis比起來,省時省力。
  3. 壓縮架構良好,在低流率時Musepack的音樂雖然難逃頻寬衰減的現象,但很少出現MP3與Vorbis中「嘶嘶聲」一類的壓縮失真,在古典音樂中特別明顯,這對走中高流率路線的Musepack來說基本上不構成問題。
2.4 Musepack的缺點?

其實我能發現的缺點比優點還多:
  1. 取樣率最高只能到達48KHz。雖然CD唱片的取樣率是44.1KHz,Musepack的規格已經足以合乎備份音樂的需求,但跟別的編碼比起來,Musepack在這方面的規格硬是矮一截。
  2. 檔案本身不支援隨選解碼,也就是Fast seeking。當你在foobar2000中調動音樂的進度軸時,foobar2000無法直接跳到該定點播放,而必須將原播放處與指定播放處之間所有的資料全數解碼後,才能繼續播放,這是非常暴力的解決方式,與Musepack的解碼速度快慢無關。雖然現在的CPU能力很好,這當中的延遲可說短到微乎其微,但這實際上是Musepack檔案結構的重大缺失。
  3. 目前的Musepack無法用於網路傳流,這點敗給了MP3、Vorbis等對手。
  4. 最高僅支援雙聲道。雖說常見的音樂仍是以雙聲道方式編製,但站在最高聲道數可達48的AAC面前,Musepack似乎是黯然失色。過多的聲道數確實是不實用,但這方面的規格,Musepack理當也做得到才對。
  5. 官方發展極度緩慢。Musepack的音質好得沒話說,但以上的缺失從Musepack誕生以來就讓人詬病已久,發展團隊雖承諾這些問題在之後的版本中會一倂改善,但目前的進度依舊是以龜速前進。這與更新速度快的LAME MP3 Encoder,和擁有數個做最佳化調校第三方開發者的Vorbis比起來,真是差得可以。
三. 其他雜談

撇開前述的缺點不談,Musepack優異的音質表現,依舊值得一試,而且我們鼓勵你這麼做,十全十美的編碼當然不存在,但至少你多了一個選擇。不過喜歡帶著隨身聽或音樂手機到處跑的人可要失望了,除了在電腦上播放以外,Musepack在其他硬體上的支援度少得可憐,也不如MP3和Vorbis那般跨足較多的平台。

由於Musepack極低的佔有率,許多論壇上早已出現「Is Musepack dead or not?」這類的爭論,想當然這問題是戰得無解,畢竟Musepack依舊有死忠派支持,還是有很多人對它抱持期待。其他的破壞性編碼這幾年來發展快速,早就有急起直追之勢,希望Musepack團隊可以再加把勁,別讓這麼優秀的編碼被埋沒了。

四. 音樂樣本

最後提供三首Musepack樣本音樂以供參考,皆由Exact Audio Copy抓音軌後,再由foobar2000的Q7 Insane設定壓製,分別是:
  1. Polynasia,日本DJ石野卓球的作品,出自1998年的BERLIN TRAX專輯。
  2. Little Light of Love,Eric Serra替電影第五元素自編自唱的主題曲。
  3. 貝多芬第五號命運交響曲第一樂章,由已故指揮家卡拉揚指揮柏林愛樂演奏,1984年錄音。
請由此處下載服用。

2009.3.19更新:

今天突然發現Musepack已經在今年的二月底有重大的官方更新了,詳情請參考官方連結:
http://forum.musepack.net/showthread.php?t=578

Saturday, June 7, 2008

CD唱片備份: WavPack編碼搭配EAC與foobar2000

零. 前言

你有很多的唱片收藏嗎?擔心唱片在播放、拿取的過程中,會刮磨、染塵?或著,當你將音樂備份到電腦中後,卻受夠了MP3或WMA這類破壞音質的
格式?本教學展示如何使用Exact Audio Copy(EAC)與foobar2000,搭配無損編碼WavPack,將CD唱片備份為:儲存整張唱片音訊資料的單一WavPack檔案,以及儲存唱片標題、曲目、音軌分段等資料的Cue Sheet,以利往後原音重現。

在正式開始之前,先釐清以下幾個問題:

0.1 為何要用EAC?CDex或foobar2000不就能抓音軌了嗎?

是的,有太多軟體可以抓音軌了,但是CD唱片普遍存在一個問題:讀取錯誤。雖然CD上的資訊不是0就是1,但依照CD光碟的標準規格,一般的資料(Data)光碟採用了具備錯誤修正碼(Error-Correcting Code,ECC)的Mode 1儲存資料,因為資料是不容許產生任何錯誤的,就算在讀取過程中發生了錯誤,也可以藉由錯誤修正碼,將正確資訊還原;而CD唱片與Video CD這一類媒體,則是採用沒有錯誤修正碼的Mode 2。因此,從壓片工廠出生的唱片,雖然可以確保其內容與原始的母片一模一樣,但在光碟機的讀取過程中,不能保證沒有任何錯誤產生,且不同的光碟機產生的錯誤,也不盡相同。這也是為何獨立的CD座機售價可以從數千元到數十萬元不等,錯誤率越低的機子,越能原音重現。

因此,EAC之所以被發展的重要目的,就是以最謹慎、最保險的方式抓取音軌資料。在讀取過程中,EAC會將任一區段的音訊重複讀取,確保每次所得的資訊皆為相同後,再繼續讀取下一個區段,且針對不同光碟機所具備的讀取偏移(reading offset),EAC亦能做出對應的修正。由讀取錯誤而產生的爆音、扭曲,基本上在EAC中是看不到的。

0.2 好吧,那為何又要動用foobar2000?

理論上只要經過適當的設定,EAC可以一次完成抓取音軌、轉檔的作業,但在此將WavPack轉檔的工作交給foobar2000,有以下理由:

  1. 我懶得設定EAC了。
  2. 搭配foobar2000可以讓我同時教更多的東西。(這不是兩者牴觸嗎XD)
  3. foobar2000的轉檔作業可以舉一反三,學了一個WavPack等於學了其他的。
0.3 那WavPack又是什麼?為何不用Cation234Pack或是YufaPack? (咦)

WavPack與FLACMonkey's Audio(APE)、True Audio(TTA)一樣,皆為無損(lossless)音樂壓縮格式,相對於破壞性(lossy)的MP3或WMA,在壓縮時不會丟掉任何原有的音頻資訊,如同zip檔案在解壓縮後可以得到與原始檔案完全相同的內容,故不會產生在破壞性格式中出現的扭曲、爆音,或音域縮減等怪異現象。唯一的缺點是,所得的成品檔案會比破壞性編碼來得大。若輸入未壓縮的Wave檔案,所得到的WavPack檔案大小約為原始的40%~70%左右,但換取來的,是更好的音質,與具備百分百還原成原始Wave檔案的能力。

至於為何選擇WavPack?這是由於:
  1. WavPack在各方面的表現相當平均,壓縮率雖然比APE略小,但編碼、解碼速度與FLAC不相上下,更比APE快上許多。
  2. APE並非免費、開放式的編碼,依舊受到專利權的牽制,WavPack與FLAC沒有這方面的限制。
  3. foobar2000需要安裝額外的解碼器才能播放APE與TTA,對於WavPack與FLAC則是原生支援。
  4. FLAC已經有很多人在用了,既然你來到本站,就學個新東西吧。
0.4 為何要備份成單一的WavPack檔案,而非按照各音軌切割成立檔案?

在硬碟中存放上千首的MP3當然很壯觀,但在一張唱片中,所有的音軌實際上是以頭尾相接的方式儲存的,由於我們的主要目的,是為了將整張唱片作封存,所以理論上,將所有的音軌一次抓取,是較為合理的,也較為準確。對於電腦硬碟來說,儲存一個大檔案,亦比儲存數個零碎的小檔案要來得健康。這麼做當然也有缺點,因為你無法將曲子獨立出來,且整個檔案必須跟著儲存音軌分段資訊的Cue Sheet檔案走,但對於以封存音樂為目的來說,這應該不成問題。

0.5 那麼,我的音樂在電腦上播放時,會比用座機播放來得好/差嗎?

這是個已經戰得天荒地老的問題了,座機派與電腦訊源派各有各的論述,況且音訊的傳遞不論以何者當音源,皆會產生無法避免的劣化,本文僅針對唱片備份為主,請各位不要再吵架了>///<

一. 準備工作


首先介紹本次教學的主角,是由已故指揮卡拉揚(Herbert von Karajan)指揮維也納愛樂,演奏德弗札克(Antonín Leopold Dvořák)的第九號「新世界」交響曲,副曲為史麥塔納(Bedřich Smetana)的莫爾道河:


1.1 foobar2000與WavPack編碼器

我假設你已經裝好foobar2000了,它的安裝沒什麼特別的,至於WavPack,請到官方下載頁,找尋WavPack Win32下載點,目前最新版本為4.41。WavPack的壓縮檔中,只有wavpack.exe用得著,把它放到foobar2000的程式根目錄下即可。

1.2 Exact Audio Copy

EAC目前最新版為0.99 prebeta 4,別抓到德文版的,那我就很糗啦。EAC的安裝過程稍嫌複雜,需要做些說明。首先是元件選擇:


  • 只要安裝EAC核心與AccurateRip就好,AccurateRip可以將你截取的音軌與網路上的資料做比對,CDRDAO是增強EAC的燒錄機支援度用的,FLAC編碼我們不用,eBay Icon則是EAC的贊助廣告,可有可無。
安裝完成並啟動後,設定精靈會自動跳出來,首先為光碟機選擇:


  • 雖然BenQ DW1670的揪錯能力比1640好得多,不過還是兩台都選了,BenQ BenQ國貨好。後面三台是我的虛擬光碟,不用理它。
EAC會帶著你設定所選的光碟機,並詢問你要求的是準確度還是速度:


  • 當然要求準確度,不然用EAC做什麼。
這時突然發現DW1670的規格資料已經在EAC的資料庫裡頭了,基本上如果你的光碟機是大廠的主流機種,那麼EAC可以直接辯視它的機會非常非常高。不過為求謹慎,我們還是選擇不要採用預設設定,而用手動的方式偵測光碟機的規格:


  • 在此暫時不對光碟機的功能特性做詳細說明,不過簡單來說,有Accurate stream功能的光碟機可以較準確的抓音軌,Audio cache沒有反而比較好,因為EAC會反覆讀取同一區段的音軌,光碟機若有音源快取的功能,那EAC在每次讀取時,還得命令光碟機清空緩衝區,以免每次讀取的資料都是上次的舊資料。
這時請放入一張沒有刮痕與灰塵的唱片到光碟機中,協助EAC偵測光碟機的特性。在偵測的期間內,請不要亂動電腦,讓EAC專心一點。幾分鐘後,結果就出來了:


  • 雖然測試結果與EAC的內部資料庫相同,不過親自確認還是比較安心些。
有兩台以上光碟機者,就依照以上步驟,繼續設定餘下的光碟機。接著會碰到編碼器的選擇,但我們不打算讓EAC做轉檔工作,所以選擇現在不要設定編碼器。

再來是freedb.org的設定,此功能可以讓EAC上網抓取光碟的曲目資料,省去手動輸入的麻煩,務必啟動,但必須提供你的eMail位址,才能正常登入freedb.org。

接著的Filename Configuration請自行決定,挑一個自己順眼的檔案命名方式即可。最後我們選擇beginner的設定,讓EAC替我們打點大部分的組態。往後有必要的話,可以自行將expert專家及設定打開。

此外有一個非常重要的設定必須手動開啟,在EAC的主視窗選擇你要設定的光碟機後,再選擇EAC->Drive Options,由Gap Detection頁面,將Detection Accuracy調整至Secure


  • 這麼重要的東西,真不明白為何預設為Inaccurate?
以上就是所有的準備工作,若覺得哪邊的設定不滿意,可以於EAC清單選擇EAC->Configuration Wizard,將整個設定過程再跑一次。

二. 音軌擷取

EAC在多次改版後,擷取音軌的流程已經變得很平易近人了,在放入唱片後,首先選擇Database->Get CD Information From->Remote freedb,以取得唱片資訊:

接著選擇Action->Test & Copy Image & Create CUE Sheet->Uncompressed,讓EAC先行測試,再抓取音軌:

在抓音軌的過程中請耐心等候,你會發現EAC的運作速度比其他同類型的軟體還要慢,且光碟機的讀取速度雖然不快,但運轉音量應該比平時要大得多,不過等待是值得的。擷取完畢後,若你發現EAC回報唱片的Quality非100%,也不用擔心,那表示EAC在抓音軌的過程中,很可能因為唱片上有些指紋、灰塵,或是光碟機自身的問題,讓EAC於某個區段多費力讀取了幾次,並不代表你的唱片本身有問題。若EAC回報你的唱片在AccurateRip中沒有相符的資料,也不必緊張,因為很多唱片不只發行了一個版次,且AccurateRip上的資料僅代表別人回報的結果。只要EAC回報「No errors reported」,那大可放心。

三. WavPack轉檔與成品

轉檔方式很容易,只要將EAC抓取的WAV檔案扔到foobar2000裡頭,在其上按滑鼠右鍵,選Convert->Convert to,再選擇WavPack,就可開始轉檔。
若想提高壓縮率,可按上圖的箭頭處,自行設定:
  • Compression Mode對於檔案大小的影響度比較大,Additional Processing雖然可以讓檔案再小一點點,可是會大幅增加壓縮檔案的時間,請自行斟酌。Hybrid Lossy Mode是WavPack最獨特的地方,不過既然我們要求的是音質,破壞性的壓縮功能就不理它了。
轉檔時間依照個人電腦配備而定,在我的雙核Opteron 165與2G Ram的環境下,平均花費時間可達到音樂長度的1/50左右,也就是50x。


  • 壓縮好的WavPack檔案,容量約為原始WAVE檔案的40%左右,對於無損格式來說,已經是很高的壓縮率了。
最後一個步驟,請用NotePad,或任何一個文字編輯器,打開由EAC產生的CUE Sheet,將「檔案名稱」的副檔名,由wav改成wv


  • 要改的是wav,不是後頭那個WAVE,別改錯了。
最後就可以把EAC擷取的WAV檔案刪掉了,留下的CUE Sheet與WavPack檔案是最後成品,這兩者務必放在同一個檔案夾/目錄下,才能播放。播放時只要將CUE Sheet扔到foobar2000中就行了。


  • 成品CUE+WavPack於foobar2000中播放,你可以發現WavPack檔案本身還提供了檔案指紋MD5碼,以利檔案整合度的檢查與偵錯。
四. 參考資料

沒有任何一種編碼格式是完美的,各類無損格式的比較,請參考Hydrogenaudio論壇的整理文件。關於EAC的說明,Hydrogenaudio當然也提供了詳細解說,想要更漂亮的使用EAC搭配WavPack編碼器一步完成抓音軌、轉檔者,亦可參考本文件

Play by FoxSaver®

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那類玩意,以免造成不必要的衝突。