AVI to DVD 轉檔
在 Linux 下把 avi 轉成 dvd 一直是件麻煩事, 也是過去我非得依賴 Windows 環境才能完成的工作之一. 若只是單純弄出個 mpeg2 video 倒還不是多困難, ffmpeg, transcode, mencoder 都可以輕鬆應付. 但是看電影怎麼可以沒字幕咧? 就算是在 Win32 環境下也要有點真功夫才能兜出字幕來. 我還記得以前那段 VirtualDub + VobSub + frameserver + TMPGEnc 的日子, 現在的 AviSynth + MainConcept Encoder 似乎也沒好到哪去.
不過我在摩托學園來來回回的爬文後, 讓我找到了一絲曙光, 經過幾番嘗試後, 總算可以把 avi 轉出出有中文字幕的 dvd 了. 為了方便以後轉檔作業, 我寫了個 script. 在服用前請先準備好以下工具:
這邊我假設你的影片檔名為 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 ---
不過我在摩托學園來來回回的爬文後, 讓我找到了一絲曙光, 經過幾番嘗試後, 總算可以把 avi 轉出出有中文字幕的 dvd 了. 為了方便以後轉檔作業, 我寫了個 script. 在服用前請先準備好以下工具:
- ffmpeg
- mencoder
- mjpegtools (提供 mplex)
- avidemux
- dvdauthor
這邊我假設你的影片檔名為 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 ---
標籤: Linux Rules
0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁