Thursday, April 17, 2008

影音封裝格式: (下)常見格式簡介

基本上針對各個封裝格式都可以長篇大論一番,在此僅對電腦平台上常見的格式做簡單說明:

1. AVI(Audio Video Interleave):

拜微軟之賜,這絕對是目前流通率最高的格式。為了對抗蘋果電腦的Quicktime影音架構,微軟於1992年提出了Videos for Windows架構(VfW),以外掛的方式替自家的Windows 3.1增加影音功能,並於Windows 95後完全整合成作業系統的一部分,AVI便是VfW中制定的封裝格式。

基本上AVI格式沒有強制限定包在其中的編碼為何,所以AVI可以包含早期的CinepakIntel Indeo等影片,乃至於微軟自家的Windows Media Video與正紅的DivX、Xvid影像編碼,音訊方面從未壓縮的PCM到MP3、Dolby Digial 5.1音軌(AC3)與Windows Media Audio皆可。但這不代表AVI什麼都能吃,在壓縮上會用到b-frameH.264/AVC視訊編碼就受限於AVI先天不支援b-frame而無法完整發揮能力,雖然你依舊可以藉由小小的hack將b-frame塞到AVI裡頭,但就是比不上放在原生支援b-frame的MP4中來得漂亮。而AVI對於由Xiph.org基金會力抗MP3而發展的Vorbis音訊的支援度,更是問題多多。

雖然AVI很老了,但正因歷史悠久,所以在各平台上都有良好的支援,幾乎沒有哪台電腦是不能播放、剪輯AVI。而在2000年左右崛起的DivX、Xvid等符合MPEG-4 Part 2的影像編碼,更讓AVI再度活絡起來,許多家電公司為了提高DVD播放器的銷售量,也發展了可以支援DivX格式之AVI檔案的DVD播放器,省去了得將影片轉碼成標準DVD用MPEG-2編碼的麻煩。相信AVI的壽命還是很長的。

2. MP4

MP4是MPEG-4 Part 14標準制定的封裝格式,主要用來包裝各種遵循MPEG-4標準的影音編碼,包括DivX、Xvid、3ivx與H.264/AVC等視訊,音訊則以MPEG-4 Part 3規範的AAC(Advanced Audio Coding)為主。話雖如此,MP4依舊可以封裝MPEG-1、MPEG-2等較早的格式,不論視訊或音訊皆然,因此理論上你可以把MP3音樂包到MP4容器裡頭。

所以在這產生一個很多人常常搞混的重點:MP4不是MP3的後繼者,AAC才是。MP3檔案僅是單純的音樂資訊,本身沒有封裝的功能,MP4則單純是封裝格式,它可以包著AAC音訊,更可以包著MP3,雖然這麼做很無聊,不過我們還是展示一下這件無聊事:

  • Media Player Classic正在播放一個用MP4包起來的MP3音樂。畫面下方可看到正在解析MP4格式的Haali Media Splitter,平時播放單純的MP3時這玩意絕對不會跑出來;在它左方的則是解碼MP4中音訊的ffdshow audio decoder。由ffdshow提供的資訊頁可看出它處理的是MP3音樂。這可不是單純將MP3檔名改成MP4就好,而是把MP3音樂扔到YAMB程式中包裝而成的。
還是不相信嗎?就下載回去看看吧。

說到MP4就不得不提一下蘋果電腦的Quicktime架構。Quicktime制定了MOV封裝格式,在Quicktime 6以前,蘋果電腦一直走著自己的路線,但MPEG-4標準在1998年左右制定時,蘋果電腦漸漸朝MPEG-4靠攏,並將MOV格式文件公開,使MOV成為MPEG-4認可的封裝格式,並演化成MP4,成為業界中通用的標準。所以現在相當多的手機與可攜式多媒體播放器,都可以認得並播放MP4檔案,這也是為何蘋果電腦的iTunes播放軟體與iPod隨身聽大力支援MP4。

3. Ogg(好暴力):

MP3音樂雖然用途廣泛,但實際上任何一家生產與MP3相關軟硬體的公司,都需要支付MP3權利金,特別是付費給MP3的主要發展者:德國的Fraunhofer Gesellschaft機構。為了力抗MP3近乎壟斷數位音樂市場的局面,完全走開放原始碼的Xiph.org基金會於1998年開始發展Vorbis壓縮格式,並同時設計了Ogg格式以封裝Vorbis。此外,Vorbis亦可封裝Xiph.org自行發展的Theora視訊,以及針對壓縮人聲做最佳化的Speex編碼,而在2003年被Xiph.org納入體系的無損音訊壓縮FLAC,也可以包裝在Ogg裡頭。但在網路上最常見的,仍屬包裝Vorbis音訊的Ogg,所以Ogg跟Vorbis時常被互換著稱呼,但這實際上是不正確的,至少也該稱它為Ogg Vorbis,這是Xiph.org的官方稱法。

由於Ogg Vorbis格式具有完全的開放性,使用上不需支付任何權利金,所以被很多電腦遊戲採用,也有少數的數位隨身聽產品支援。些許Linux作業系統在預設上更是「不支援」MP3播放、壓製,反而對Ogg Vorbis的支援極好。而由於Ogg格式可在網路上採用串流方式播放,使用foobar2000+oddcast+Icecast組合的網路電台是不計其數。

Ogg在Windows平台上也有很好的支援,第一個預設直接支援Ogg格式的播放器就是Winamp,由Winamp前核心成員Peter Pawlowski編寫的foobar2000也對Ogg支援良好。雖然網路上也可以找到走DirectShow路線的Ogg filter,讓Windows Media Player播放Ogg,但在此還是建議使用專門播放音樂的foobar2000。

4. OGM(Ogg Media):

目前OGM的發展停頓了,但它依舊在外國的影音社群中少量的流通著。OGM基本上是Tobias Waldvogel這位老兄將Ogg做了些許破解後的產物,所以OGM除了能夠包含Xiph.org發展的所有編碼以外,更可同時包含多軌的視訊(DivX、Xvid等)、多軌音訊(MP3、AC3、AAC等),多軌字幕檔(srtssa等),並且支援章節段落選擇,使得OGM一時之間成為使用上極具彈性的封裝格式。

  • 上圖展示正在播放的OGM卡通檔案。由右下方工具列的圖示,依序是:解碼Xvid視訊的ffdshow video decoder,解碼Vorbis音訊的ffdshow audio decoder,顯示srt英文字幕檔的VobSub(現已改名為VSFilter),以及解析OGM檔案的Haali Media Splitter。由Splitter的功能清單可看出,本OGM檔案實際上包裝著兩個Vorbis音軌,分別是日語發音以及英語發音,隨時可以切換(誰會想看英語發音的美少X戰士啦),字幕檔也可依需求關掉或打開,所以理論上要再包進一個日文字幕檔也不是難事。此外,Chapter選項顯示本卡通有15個段落,直接選取就可快速跳躍,不需要自行拉影片時間軸。基本上這已經類似於DVD的結構了,單獨一個OGM檔案,直接到位。
但OGM雖以開放式的Ogg為基底,卻沒有開放自身原始碼,也不是自由軟體,更走出了Ogg的規格之外。關於這一點,Xiph.org的人可是很火:http://xiph.org/container/ogm.html。「OGM不是Ogg,但很多人以為它是Ogg,並寫信來要我們提供支援」上面的網頁如是說。雖然Tobias稍後將OGM的程式捐贈給Xiph.org,並成為了Xiph.org的一份子,但當更強大的Matroska格式崛起後,OGM便逐漸被淡忘了,連Xiph.org都不太想理它。OGM R.I.P。

5. MKV/MKV(Matroska):

Matroska於2002年開始發展,屬於開放軟體,所有的程式碼都是公開的,並有完善的文件說明。簡單來說,MKV運作起來與OGM極為相似,可謂有過之而無不及,並能封裝比OGM更多的編碼種類,多到在這裡的篇幅塞都塞不下,有興趣請參考Matroska的官方說明。不過目前最常見的,仍屬MPEG-4影像與Vorbis、AAC與AC3音訊為主,此外MKV亦可封裝非影音編碼類的檔案,常見的應用之一,就是把SSA、ASS字幕檔所用到的字體檔案一併打包進去。沒錯,就是華康XX體那一類的東西,如此一來就算使用者的電腦裡沒有安裝該字型,影片播放時字幕也可以漂漂亮亮的。

  • Matroska檔案依舊可用Haali Media Splitter解析,這是Matroska官方推薦的分離器。上圖的影片是從DVD中rip出來的,雖是以標準NTSC解析度720*480壓製的H.264影片,與DVD中的原始解析度一樣,但播放起來卻是16:9的853*480。這是因為MKV檔案在打包時可以任意指定播放比例,這與採用DVD播放器接電視放片子有異曲同工之妙。搭配由VobSub從DVD裡頭抓出來的字幕檔,讓使用者自行備份的影片與DVD上的近乎一模一樣。
某些Matroska檔案中僅包含音樂而沒有影片,通常會被改稱為MKA檔案,實際上它與MKV的結構完全相同,使用上無異。以MKA檔案打包無損壓縮的True Audio音樂,搭配章節分段的CUE檔,在日本是非常風行的。

MKA_Demo
  • 利用單一個Matroska備份一整張CD唱片。上圖顯示CoreWavPack decoder正在解碼由無損格式WavPack壓縮的音樂,由於紀錄音樂曲目章節資訊的CUE檔也被包裝進來了,亦可在Haali Media Splitter的選單上看到可以直接選取的曲目。在此播放的是日裔指揮家小澤征爾指揮Boston交響樂團,演奏法國近代印象派音樂家Maurice Ravel的作品。
Matroska在使用上極具彈性與便利性,在國外的字幕組社群中相當受歡迎,但由於它是網路上Open Source社群開發的產物,商業軟體對它的支援奇差無比,再加上可以包裝非影音檔案的天性,幾乎沒有剪接軟體可以直接對Matroska做剪輯。Matroska比較像是:作為最終端,專門在電腦上播放的「成品」。

6. RM/RMVB(RealMedia)

RealMedia是RealNetworks公司為自家RealVideoRealAudio制定的封裝格式。RealNetworks公司於1990年代中期崛起,當時寬頻網路尚未普及,故RealNetworks致力於串流媒體的發展:讓一份檔案可以邊傳遞邊播放,不需要完全下載後才能開啟,因此促成了RealMedia的誕生。雖然要把RealMedia檔案完整下載也不成問題。早期的RealMedia僅能為固定流率,故副檔名為RM。RMVB則是後來加入了變動流率(variable bitrate)技術後的名字。

由於RealMedia是商業公司的封閉格式,以往僅有ReakNetworks公司自家的RealPlayer可以播放。但RealPlayer曾有設計不周詳,造成使用者的電腦在網路上被開漏洞的不良紀錄,以及軟體本身撰寫不佳,效能低落,甚至搞爛作業系統的慘劇,使得RealPlayer聲名狼藉好一陣子。因此某K-Lite編碼包的作者群開發了Real Alternative解碼器,讓使用者不需要安裝RealPlayer,就可用Windows Media Player或Media Player Classic播放大部分的RealMedia檔案。雖然RealNetworks公司對此提出了多次警告,但大家還是用得不亦樂乎。

Real_Demo
  • 正在搭配Real Alternative運作的Media Player Classic,雖然表面上不太容易看出來。
在國外的影音社群中,RealMedia的可見度非常低,因為它搭配的RealVideo與ReakAudio實在是無法跟其他編碼相提並論,反倒是在對岸的社群中相當受歡迎,有著為數極多的日劇、卡通流通著,少數大陸製的可攜式多媒體播放器更可直接播放RealMedia。

本文僅簡介了電腦上較常見的六種封裝格式,欲了解更多相關資訊請參照本Wiki文件

2 comments:

jscorpio said...

雖然我認為前面幾篇轉檔教學真的是害人不淺,但我不得不認同這篇基本知識整理的用心.

--
rm最好讓它消失吧,更別提把她轉成avi,甚至是包進mkv裡去唬人.

Kevin said...

網路上很少有人對mp4有正解,更少有人搞清楚mp3跟mp3播放器有何差異,這篇文章可謂是清流。