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

2 comments:

懷陞 said...

ACE Mega CodecS Pack有49MB根本沒什麼啊

終極解碼 FinalCodecs 2008新春版有71.4MB大啊 XD

cation234@ptt.cc said...

唉 我真不知道編碼包搞這麼大是做什麼

完全失去了編碼包的初衷