Thursday, April 10, 2008

AVI檔案減肥壓縮DIY教學

零. 前言

手頭上有檔案大小很大的母片嗎,或單純只想要將AVI檔案瘦身,以方便儲存與散佈?本教學利用Xvid的Two-pass壓縮,搭配VirtualDub與LAME MP3,以土法煉鋼方式將影片壓縮至自行指定的大小。正因為是土法煉鋼,表示自由度很大,可以依照自己的需求對影片大小以及編碼壓縮上,做細部的調整。

一. 採用工具:

1. VirtualDub-MPEG2(VD):

http://home.comcast.net/~fcchandler/stable/index.html

原始的VirtualDub不能處理MPEG2檔案,所以我比較喜歡用這一個。基本上本教學文同樣適用於DVD的VOB檔壓縮備份,只不過DVD影片在轉存上需要額外的處理,這些暫且不在本文內討論。

2. Xvid MPEG4 Codec:

http://www.free-codecs.com/download/Koepi_XviD.htm

視訊壓縮用。

3. LAME ACM MP3 Codec:

http://www.free-codecs.com/download/LAME_ACM_Codec.htm

音訊壓縮用。

4. (選用) AC3 Decompressor:

http://www.free-codecs.com/download/AC-3_ACM_Decompressor.htm

假如你要壓縮的AVI母片在音訊部分是AC3編碼,也就是Dolby Digital,那有必要安裝本解碼器,讓VirtualDub可以認得AC3。

5. Media Player Classic:

http://www.free-codecs.com/download/Media_Player_Classic.htm

沒啥,單純是我最愛用的播放軟體。

二. 前置作業:

在此採用的樣本檔案,叫做Test_File.avi,視訊為Lossless H.264,音訊則是CBR的MP3。這是我自己從卡通DVD中rip下來並做了處理的樣本AVI檔案,大小為762MB。如果你的母片視訊是Divx或Xvid等編碼,本文同樣適用。重點在於:只要是你的電腦可以播放的AVI檔案,便可依照本文重新壓縮。

用VD打開Test_File.avi之後,從選單選擇Video->Fast recompress。音訊方面若「不壓縮」,則選擇Audio->Direct stream copy。若「要壓縮」則選擇Audio->Full processing mode。

三. 壓縮流程

1. 音訊部分:

若不壓縮音訊,則可跳過本步驟。在此不建議對音訊再行壓縮,因為音訊部分對於影片檔案的大小影響遠小於視訊部分。若要壓縮,則選擇Audio->Compression,從codec清單選擇Lame MP3,並選擇資料流量,建議選擇CBR,對於AVI的相容性較高。

2. 視訊部分:

這裡才是本教學文的重點,請一步一步慢慢來。

2.1 1st pass:

首先選擇Video->Compression,從codec清單選擇Xvid MPEG-4 Codec,然後按Configure,把Encoding type調成Twopass - 1st pass,再按OK:

OK後,選擇VD清單File->Save as AVI,指定儲存檔名,例如: 1st_Pass.avi。記得把下圖中紅框部分勾起來,會比較方便:

按儲存後退出。所謂的1st pass,Xvid編碼器不會對影片作真正的壓縮,而是會先將片子分析一遍,紀錄影片各個frame之間的關聯性與資料量,並將統計結果儲存在一個叫做video.pass的檔案中,供給2nd pass壓縮時參考用。

2.2 2nd pass:

再度選擇Video->Compression,依舊從codec清單選擇Xvid MPEG-4 Codec。按Configure後,將Encoding type調成Twopass - 2nd pass,把下頭那個按鈕調成Target size(kbytes),並在方框內輸入想要的檔案大小:

請注意,檔案大小是用Kilo Bytes表示。

例:我要把片子壓成200MB,那麼我該填入: 200*1000 = 200000

(還是200*1024 ?管它的啦 :p)

則Xvid會盡可能的把片子壓成200MB的大小,通常誤差率很低,因為有1st pass的統計檔案video.pass作參考。但請注意,這裡是指定「視訊」的大小,因此「音訊」部分沒有考慮進去。要是你很在意音訊的大小,那可以按那個calc按鈕,自行計算看看視訊和音訊的大小,這部分就不多談了。不過要是知道影片的長度,又知道是用多少kbps的MP3壓縮,計算機打一打就知道音訊的切確大小了。其他Xvid的細部設定就先不多談,基本上預設的設定已經很夠用了。

按OK退出後,再度選擇VD清單File->Save as AVI,指定儲存檔名,例如 : 2nd_Pass.avi(別把1st_Pass.avi給蓋過去了)。同樣的,把「Don't run this job now....」那個方框打勾,按儲存退出。

2.3 開始壓縮:

這時從VD選擇File->Job control,可以看到:

負責1st pass與2nd pass的工作都被放到駐列裡頭,等待開工。按下Start就可開始壓縮作業。想要看壓縮進度,可從VD選擇Options->Show status windows。再次注意這是Two pass的壓縮 Xvid要將影片處理兩次後才算真正完工,所以這時候可以喝茶看報去了。

四. 壓縮結果

經過處理後,我們順利的將原本大小為762MB的Lossless H.264+MP3的AVI原始母片,壓縮成了210MB的Xvid+MP3的AVI檔案了:

雖然不是恰好在200MB,可是考慮Xvid的壓縮誤差,與一開始排除在外的音訊大小,應該是相當符合預期的結果了。這種土砲壓縮方式雖然比WinMEnc或Winavi等包裝好的軟體來得麻煩,可是自由度相當高,要轉壓成DivX、WMV9、或是H.264、都是可以舉一反三的。

五. 參考資料

1. Doom9 Xvid Guide: http://www.doom9.org/index.html?/xvid.htm

關於Xvid Encoder的內部細部設定,可以參考這裡。

3 comments:

frank.c.h.lan said...

圖文並茂,相當實用的解說!
謝謝瞜

Anonymous said...

感謝分享!
很實用的軟體與解說!

Anonymous said...

非常感謝詳細的解說
對我幫助很大
謝謝