2009年9月15日 星期二

利用VirtualDub自動批次2 Pass壓縮的小工具

我的數位相機錄影的格式是Motion Jpeg (mov),錄出來的檔案有點肥,而且想要傳給朋友,或上傳到Youtube,都不是很方便,必須再經過一次轉檔的動作。

再者這種格式的檔案真的是很佔空間,所以硬碟少少的我,就不得不將檔案壓縮一下,而個性有點龜的筆者,當然是選用檔案更小,畫質卻更好的2 Pass壓縮方式。

但由於一般市面上的壓縮工具大多不能進行2 Pass壓縮,少數有支援的,操作起來又不太方便,對於有大量檔案需要進行高品質壓縮的使用者來說,重覆進行「設定2 Pass ==>等待壓縮」,是一項辛苦的工作。

因此我寫了這個小工具,利用VirtualDub搭配AviSynth,可以很方便的將整個目錄的影片都用2 Pass的方式,壓成H264或XviD等等格式。

VirtualDub Batch Runner 0.1.0, 下載

需要軟體
AviSynth 2.5.7或更新,請至http://avisynth.org/mediawiki/Main_Page 下載
VirtualDub 1.9.5或更新,請至http://www.virtualdub.org/下載
QTSource,下載
FFMpegSource,下載

安裝步驟:
1. 安裝Avisynth
2. 安裝VirtualDub
3. 將FFMpegSource解開後的ffms2.dll及ffms2.avsi放到AviSynth安裝目錄下的plugins
4. 將QTSource解開後的QTSource.dll放到AviSynth安裝目錄下的plugins

註:如果只使用DirectShowSource的話,步驟3及4不一定要做,這兩個步驟是為了可以讀取QuickTime及其它mpeg4等格式
另外,我程式中所附的壓縮script都是使用x264,可以到這下載


執行方法
1. 將VDubBatchRunner解開後,執行VDubBatchRunner.exe
2. 設定好VirtualDub的安裝目錄,要批次處理的目錄
3. 選取Source Filter,如果有裝FFMpegSource的話,用FFMpegSource支援的檔案格式比較多,不然的話使用DirectShowSource 就可以了,注意若來源檔案是Mov(QuickTime)的話,請記得要選「Source_QuickTime(mov)」才能正常執行喔!
4. 選擇一個想要的格式及流量,以H264來講,通常VGA影片用1600kbps就夠了,而HD的話則需要4M~8M,Full HD則需要8M~16M

5. 按下Run後,程式會呼叫出VirtualDub,並開始批次轉檔,在轉檔完成前,請不要再多按一次Run喔!

後記:
製作這個工具的目的是希望結合VirtualDub和AviSynth不要這麼的累,如果你已經會用avs檔對影片進行拉絲、去雜訊等處理的話,可以在解開的檔案中編輯那些附檔名為avst的檔案,那是我用來產生avs檔用的樣版。
自定avs可以進行很多進階的處理,有空再來寫編文章講講了。

2009年9月14日 星期一

如何製作2 Pass壓縮的影片

2 Pass壓縮是要壓縮程式在進行壓縮前,先將整個影片試驗性的掃過一次,記住各個橋段的特徵後,在壓縮時參考這些特徵,動態決定最適合的流量,所以同樣大小的影片,採用2 Pass壓縮的,可以畫質更好、更清析。

最近常常需要將自己拍攝的影片壓成mpeg4的格式,但用一般市面上的工具,雖然是方便,但總是缺少2 Pass壓縮的選項,不免有些缺憾。

本篇使用VirtualDub來進行2 Pass壓縮,以下是操作流程,雖然有些複雜,但下回我會介紹自動化的方式,這次先手動就好。

1. 開啟VirtualDub,載入影片。


2. 先將Audio設成無聲


3. 選取Fast recompress,並點選Compression


4. XviD, DivX, x264等都有提供2 Pass Compression,這回我們選用XviD做範例。


5. 設定好所要的畫質後,選擇「Twopass-1st pass」。


6. 1st Pass的目的在產生分析資料,所以先執行File->Run video analysis pass



7. 跑完之後,再點回剛剛的壓縮程式設定畫面,這次選「Twopass - 2nd pass」。


8. 2nd Pass要記得把聲音資料加進去,通常是選用來源影片裡所附的音軌就行,另外若想把聲音壓縮的話,可以選「Full Processing Mode」後,再選「Compression」,設定聲音壓縮格式。


9. 然後就可以存檔了



過程中比較麻煩的就是要先執行一次Analysis Pass,要「等」電腦跑完之後才能進行之後的程序,但為了品質,短短的等待是值得的,而且,下回我就會來介紹批次處理的方法喔!