Hung-Ming Chen's Blog

星期四, 6月 15, 2006

AVI to DVD 轉檔

在 Linux 下把 avi 轉成 dvd 一直是件麻煩事, 也是過去我非得依賴 Windows 環境才能完成的工作之一. 若只是單純弄出個 mpeg2 video 倒還不是多困難, ffmpeg, transcode, mencoder 都可以輕鬆應付. 但是看電影怎麼可以沒字幕咧? 就算是在 Win32 環境下也要有點真功夫才能兜出字幕來. 我還記得以前那段 VirtualDub + VobSub + frameserver + TMPGEnc 的日子, 現在的 AviSynth + MainConcept Encoder 似乎也沒好到哪去.

不過我在摩托學園來來回回的爬文後, 讓我找到了一絲曙光, 經過幾番嘗試後, 總算可以把 avi 轉出出有中文字幕的 dvd 了. 為了方便以後轉檔作業, 我寫了個 script. 在服用前請先準備好以下工具:
  • ffmpeg
  • mencoder
  • mjpegtools (提供 mplex)
  • avidemux
  • dvdauthor
轉出來的品質呢? 還可以接受啦, 速度也還蠻快的, 在我的 P4 3G 環境下參數用預設值 + vhq, 轉換速度約 45fps, 如果開啟網路上找來的進階參數, 轉檔速度會掉到剩 12fps 左右, 但是我還沒仔細比對過兩者之間的畫質差異啦, 況且上回轉的片子用到 6000kbps, 恐怕看不出顯著差異吧, 等我有時間再來慢慢研究這些進階參數對畫質有啥影響.

這邊我假設你的影片檔名為 dvd.avi 且音效格式為 AC3, 處理步驟如下
Step 1: 將 AC3 音效自 avi 檔擷取出來. 在 avidemux 中開啟 avi 檔, unpack audio stream, 從功能表 [Audio] -> [Save...] 把 AC3 stream 另存新檔為 dvd.ac3

Step 2: 用 mencoder 將 avi 轉成 mpeg2 video (dvd.m2v)
請參考最後面的 script

Step 3: 將 video / audio 合併
> mplex -V -f 8 -o dvd.mpg dvd.m2v dvd.ac3

Step 4: 以 dvdauthor 將 dvd.mpg 輸出為 dvd 檔案系統
(用法? 自己查一下沽狗大神吧~~ XD)

--- Cut Begin Here ---
#!/bin/bash
# Author: Hung-Ming Chen (hmchen825@gmail.com)
# Edit the following settings
INPUT=dvd.avi
OUTPUT=dvd.m2v
BITRATE=6000
SCALE=720:360
SUBTITLE=dvd.srt
FONT_SCALE=3.5
CBR=true
USE_EXPERT_OPTS=false
TWO_PASS=true

# Don't modify the follows
if [ $CBR == true ]; then
MINRATE=$BITRATE
MAXRATE=$BITRATE
else
MINRATE=2500
MAXRATE=9000
fi

SUBOPTS="-sub $SUBTITLE -font /usr/share/fonts/truetype/arphic/ukai.ttf -subcp cp950 -subfont-text-scale $FONT_SCALE"
EXPERT_OPTS=trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10
LAVCOPTS=vcodec=mpeg2video:vhq:vrc_buf_size=1835:vrc_maxrate=$MAXRATE:vrc_minrate=$MINRATE:vbitrate=$BITRATE:keyint=18:aspect=16/9

if [ $USE_EXPERT_OPTS == true ]; then
LAVCOPTS=$LAVCOPTS:$EXPERT_OPTS
fi

# start encoding
if [ $TWO_PASS == false ]; then
# Single-pass encoding
mencoder -ovc lavc -nosound -of rawvideo -mpegopts format=dvd -ofps 30000/1001 -sws 9 -vf scale=$SCALE,expand=720:480,harddup -lavcopts $LAVCOPTS $SUBOPTS $INPUT -o $OUTPUT
else
# Two-pass encoding
# pass 1
mencoder -ovc lavc -nosound -of rawvideo -mpegopts format=dvd -ofps 30000/1001 -sws 9 -vf scale=$SCALE,expand=720:480,harddup -lavcopts vpass=1:$LAVCOPTS:turbo $SUBOPTS $INPUT -o $OUTPUT

#pass 2
mencoder -ovc lavc -nosound -of rawvideo -mpegopts format=dvd -ofps 30000/1001 -sws 9 -vf scale=$SCALE,expand=720:480,harddup -lavcopts vpass=2:$LAVCOPTS $SUBOPTS $INPUT -o $OUTPUT
fi
--- Cut End Here ---

標籤:

星期日, 6月 04, 2006

octave + octplot

Octave 是 *nix 下一套非常好用的數學計算軟體,簡單來說就是 open source 版的 Matlab。它使用的語法與 Matlab 相同,也內建許多與 Matlab 相容的函式庫,因此可以很快的將 Matlab 的程式轉移到 octave 中執行。不過長久以來我還是擺脫不了 Matlab,因為我需要他那高品質的圖檔輸出功能。Octave 預設使用的 GnuPlot 實在是 suck,輸出圖檔的品質根本不能放到論文中見人,因此我甚至還想安裝真正 unix 版的 Matlab。

所幸,我發現了 octplot 這個套件,可以完全取代 GnuPlot,能直接圖表輸出為 ps, eps, pdf, jpg, png 格式。昨天小試了一下,octplot 輸出 ps/pdf 向量圖檔的能力甚至比 Matlab 還強。Matlab 輸出 pdf 時會在圖片四周補上空白,變成一張 A4 大小的底圖,結果我還要用 Acrobat 去裁切,改用 octplot 輸出圖片則大小完全正確。

現在,我對 XP 的依賴現在又少了一些。

標籤:

Ubuntu Dapper 推廣~

前陣子在 IRC #dot 上跟一些網友聊到 ubuntu 的使用,其中一位網友向我推薦 dapper (6.06)。一時興起便把還是 beta 版的 dapper 裝來玩看看,想不到還是好用啊,比起他的老哥 debian 用起來更方便,無論是硬體的支援度或是軟體的豐富性都有過之而無不及。由於 debian 內部政策的緣故,官方的 apt source 中並沒有提供一些非自由軟體與驅動程式套件,比如MPlyaer、Intel 2200B/G WLAN driver、ATI/Nvidia graphic adapter driver等等,想要用的話便要自己手動編譯/安裝,或是找到非官方的 apt source,偏偏這些卻又是直接影響系統可用度的關鍵性套件,也不是很難裝啦,只是讓我覺得很麻煩。

或許因 為ubuntu 是由商業公司發行的緣故,上述的小缺點都獲得相當程度的改善。我安裝 dapper 時,甚至是直接透過 2200B/G 從網路下載語系套件,而且連 ATI 最新版的 fglrx driver 都是透過 apt 安裝。之前提過的 Xgl 也有網友提供 apt source,現在裝 Xgl 簡直比吃飯還容易,這種感覺只能用"爽"來形容。

Dapper 在 6/1 終於正式 release 了,安裝方式與 beta 版相較也有了改變,安裝光碟本身就是一片 LiveCD,對新手來說安裝變得更容易,安裝時間也縮短許多(應該是直接將 LiveCD 的內容直接複製到硬碟的緣故)。當然老牌的 text-mode 安裝方式仍然有被保留,但是必須用alternative 模式的安裝光碟,萬一你的機器用 LiveCD 開不起來,alternative 的安裝模式是你唯一的救贖,例如我那用 ATI X700 的 NB。

作為一個 Desktop 用的 Linux distribution,我認為 dapper 相當的成功,99%的日常工作已經可以用它來取代 M$ Win32 的系統。如果對 Linux 有興趣的朋友們,不妨把 dapper 當成入門的起點。

標籤: