2007年10月25日 星期四

好用的mencoder

最近因為老媽出國去玩, 負責留守的我必須幫老媽錄"加油屁眼...", 呃...不是...是"加油菊花!"這部韓劇...雖然我不怎麼喜歡看韓劇, 但女主角真的很漂亮, 所以就勉強答應了...

想想老媽出國的這幾天, 每天錄一集的長度是1小時30分, 由於錄完以後, 如果還要去廣告, 實在是太麻煩, 乾脆偷懶不做...所以以硬碟錄影機的一般畫質來計算, 就需要3GB左右的空間(流量約4Mbps), 還好母親大人只要能看就好, 對於畫質要求不高, 所以可使用較低畫質來錄影, 不過這樣1小時30分錄下來也還是要1.4GB的空間...等到老媽回來後, 再把遊玩期間所播出的部份, 全部輸出到單面的DVD+R上, 但一片DVD也只能放3集, 整個輸出下來可能要用到2~3片DVD...

這怎麼行呢!!對於地球環保應該盡一份心力才是(噁~~), 所以就在想, 是不是有什麼方法, 能透過大量減少影音的流量, 又不會模糊到看不清楚??然後觀賞時也很方便呢??剛好客廳裏的DVD放映機具有DivX的播放機能, 因此就很快的決定將所有的影片壓成480x480, V768Kbps/A64Kbps的DivX AVI檔案...

那要用什麼軟體來進行呢??之前有在研究一些開放原始碼的影音編碼軟體, 其中我覺得相當好用的, 就是手煞車HandBrake了, 橫跨了Mac OSX, Linux, 以及Windows, 此外還移植到其他作業系統上...它可以很方便的(應該只有Mac OSX版很方便吧?!畢竟這原先是Mac的軟體)將DVD轉換成MP4/OGM/DivX/Xvid, 最新版還多支援了MKV輸出...本來是要沿用HandBrake來進行編碼的, 不過HandBrake最麻煩的一點就是, 它的來源只支援DVD, DVD Image或者VIDEO_TS, 沒辦法直接拿影片檔編碼...因此要利用HandBrake轉換, 就必須先把影片檔轉成DVD之後, 再丟給HandBrake來轉...從以前到現在我都是採用這個方式轉MP4檔案, 既不省時也不省力, 常常得要弄到很晚...我必須要找更簡單的方法!!

官方的DivX套件就不考慮了, 不是說這套件19.99太貴, 依照目前的需求來看, 我總共需要花費19.99+9.99(MPEG2 plug-in)=29.98才能正常轉換, 雖然曾經有一度想購買, 但是直至目前為止, 我應用幾乎都在PS3, PSP及XBOX 360可以播放的MP4格式上, 而這些機器根本不吃DivX, 實在沒有必要為了這幾天的應用來浪費這些錢, 也不想為了使用DivX的Codec而再裝一套影音處理軟體...

之前就在網路上看到有人推薦mplayer這套包山包海的自由軟體, 支援多種網路上通行的codec, 不僅有影音播放軟體, 更絕的是, mplayer還附贈了影音編碼軟體mencoder, 不僅支援DVD也支援一般的AVI, MP4等等之類的檔案, 讓你可以在各種不同的影音編碼中, 相互的轉換...

有這麼大的好處, 那有沒有缺點呢??當然有啦!!無法忽視的缺點就是必須跟指令奮戰, 如果沒有別人所寫的frond-end, 那麼就必須查閱多如牛毛的指令說明, 瞭解每個指令的用法才能順利的開始轉換(啊~~這叫更簡單的方法嗎?!), 不過, 當你瞭解指令之後, 其實是相當的簡單, 剛剛試驗把MP4檔案轉成DivX格式, 簡單到不行...當然啦~~~還是離不開指令的...如果你對指令過敏, 現在是時候離開了... XD

經過無數的試驗, 指令的奮戰, 終於找到了一些指令可以順利的展開DivX的編碼, 由於DivX並非開放原始碼, 所以開放原始碼團體的DivX編碼, 其實是使用原先叫做OpenDivX的Xvid, 神奇的是, 吃DivX的播放機也能處理Xvid, 畢竟這二個系出同源!!那當然是優先使用自由的Xvid囉...以下就是簡單開始轉換的參數:

mencoder -oac lavc -lavcopts acodec=mp3:abitrate=64:vcodec=mpeg4:aspect=4/3:vbitrate=768:vratetol=1500:vhq:v4mv -of avi -ovc lavc -vf harddup,fspp,scale,pp=fd -ofps 30000/1001 -ffourcc XVID source.ext -o target.avi

看到一堆指令就昏了嗎??我也是!!不過如果對照指令說明來看, 就會比較簡單, 有興趣的話, 只要把粗斜體字中的檔名改成自己想要的, 然後把它貼在DOS視窗中, 就會開始轉換...當然DOS指令還是得要知道一些, 才能順利成行...

依照這個設定, 編碼Xvid AVI算下來, 菊花一集的容量約550MB左右, 畫質的減損則在可接受的範圍, 這樣就可以把這期間所播出內容塞在一片DVD裡面, 讓母親大人慢慢看~~

另外貼上其他的轉換參數...

PSP用的MPEG4參數(AVC試不出來...T_T)

mencoder -ofps 30000/1001 -vf harddup,fspp,scale=320:240,pp
=fd -af lavcresample=24000,volume=20.1:0 -of lavf -oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac:vbitrate=768:abitrate=64 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames:format=psp source.ext -o target.mp4

適當的修正音量, 影片流量, 相關的參數即可輕鬆的轉換...以上參數經實驗影片流量在302Kbps時, 也能得到清晰度相當不錯的影片...

PSP較高畫質的設定參數, 也可應用在PS3跟360上, 只要將scale參數改成720:480即可:

mencoder -ofps 30000/1001 -vf harddup,fspp,scale=320:240,pp=fd -af lavcresample=24000,volume=20.1:0 -of lavf -oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac:vbitrate=768:abitrate=64:vhq:v4mv:trell:mv0 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames:format=psp source.ext -o target.mp4

將MP4轉換成Xvid AVI的方法:

mencoder -vf spp,scale -af lavcresample=24000 -of avi -ffourcc XVID -oac lavc -ovc copy -lavcopts acodec=mp3:abitrate=64 source.ext -o target.avi

沒有留言:

張貼留言