How-To : Rip DVD on Linux
Last Update : 05 / 31 / 2007 By DarkRanger .
環境:
Fedora Core 6
Kernel = 2.6.18-1.2798.fc6
前言軟硬體需求DVD 擷取與轉檔字幕擷取在影片中嵌入字幕參考網站
前言
這件 How-To 談的是:如何在 Linux 系統上將 DVD 影片擷取成媒體檔,呃,別誤會,DR 平常不搞這個……只是剛好有朋友需要而已。原本是打算在 Windows 系統上作業的,然而摸索中赫然想起 Linux 上有 MEncoder / FFmpeg 這類強大的多媒體編碼軟體 ( 雖然這兩個軟體也有 Windows 的版本 ),於是決定就用 Linux 玩玩看。不過由於一點特殊狀況 ( 字幕擷取與嵌入的問題 ),DR 使用了多種軟體來完成作業。特別注意的是,這篇 How-To 並不涉及對防拷 DVD 的破解,如果是防拷的 DVD 就必須另外想辦法處理了。軟硬體需求許多主機配備拿來跑跑辦公軟體、玩點小遊戲或者是架設小型伺服器都還可以,但是如果涉及多媒體的處理,尤其是影片的擷取、剪輯、轉檔等,首先最好要有幾十 GB 的硬碟空間,像 DVD 的擷取都是幾 GB 在跑的。並且處理器與記憶體都是很要求的,以 DR 二號機的 Sempron 3000+ 配上 1GB 記憶體為例,轉個 DVD 影片常常是好幾個小時在跑的。
軟體的部份有使用到以下軟體:
(1) dvd::rip - DVD 擷取與轉檔軟體。
(2) MPlayer - 跑 dvd::rip 需要 ( How-To )。
(3) xine - 跑 dvd::rip 需要 ( How-To ) 。
(4) MEncoder - 擷取 DVD 字幕用。
(5) Avidemux - 合併字幕與影片用。
上述軟體的安裝都會使用到 yum,關於 yum 的使用與設定請先參閱此 How-To。另外 DR 推薦一款播放軟體:VLC media player,它可以直接播放不完整的媒體檔,可以用來協助測試,並且介面很不錯,要做軟字幕 ( sort subtitles ) 的插入也很方便。
DVD 擷取與轉檔
雖然 MEncoder 就可以進行 DVD 的擷取與轉檔,然而 dvd::rip 的介面更為直覺化也更加方便,請先參閱 yum 的 How-To 來啟動 freshrpms 的 repository,並安裝 dvd::rip:
# yum install dvdrip
然後執行:
# dvdrip
第一次執行會出現如下圖的設定頁面,相當簡單,按照指示去設定即可,如果以後還需要更改設定,只要從選單上的 Edit -> Edit Preferences 去更改即可。有個比較特別的地方是 dvd::rip 還要求必須有 RAR 這個壓縮工具,freshrpms 有提供 rar 3.x 的套件,但是 dvd::rip 的網站上表示只能用 2.x 版,而 2.x 版可以在 dvd::rip 網站下載。下載後使用以下指令解開:
# chmod 755 rarlnx271.sfx.bin
# ./rarlnx271.sfx.bin
解開後將 rar 和 unrar 兩個程式丟至 /usr/local/bin,再從 dvd::rip 指定其路徑即可。
接下來,將 DVD 掛載後,建立一個 New Project,建立完成後在 RIP Title 頁面點選 RIP selected title(s)/chapter(s),就會開始將 DVD 中的檔案擷入至硬碟。完成後就可以開始用圖形化的介面來方面進行轉檔設定。其實 dvd::rip 有個擷取並嵌入字幕的功能,但很可惜在 DR 使用時,它的語言判定有問題,例如擷取的是 zh ( 中文 ) 卻跑出韓文,不然應該是可以只用 dvd::rip 完成所有作業的。
完成設定後,在 Transcode 頁面的 Operate 部份點選 Transcode 就會開始進行轉檔與輸出,以 DR 的範例而言是將 DVD 從 MPEG-2 轉成 MPEG-4 ( Xvid 4 )、AC3 轉成 MP3,影像比例切成 16:9,而輸出副檔名為 AVI。
需要注意的是,Transcode 有個 2-pass encoding ,開啟的話轉檔程序會跑兩次,也會花較多時間,但是會有較好的品質,建議開啟為佳。另外,由於 dvd::rip 多是呼叫其它工具來執行作業 ( 主要是 Transcode ) ,所以介面有時會有不太穩的情形。
以 DR 為例,完成後的檔案會位在 /home/darkranger/dvdrip-data/unnamed/avi/001/unnamed-001.avi
字幕擷取
由於之前談到 dvd::rip 對字幕擷取的問題,所以字幕擷取的部份 DR 是使用 MEncoder,請先使用 yum 安裝:
# yum install mencoder
假設中文字幕的編號是 5,要輸出的字幕檔名為 subtitles,用指定編號擷取字幕的指令如下 ( DVD 要先掛載 ) :
# mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -vobsubout subtitles -vobsuboutindex 0 -sid 5 -o /dev/null
至於要如何得知哪個編號代表哪種語言字幕,DR 目前還沒有找出比較方便的作法,只能用 MPlayer 一個個測試看哪個才是正確的:
# mplayer dvd://1 -sid ( 編號 )
擷出來的字幕會有兩個檔案:subtitles.idx 和 subtitles.sub,請好好保存,下個程序就會用到。其實這種擷下來的 VobSub 軟字幕已經可以在播放影片時插入了,以 MPlayer 為例,執行以下指令即可影片搭配字幕播放 ( 注意:字幕檔不用加副檔名 ):
# mplayer unnamed-001.avi -vobsub subtitles
雖然 MEncoder 可以擷取 VobSub 字幕,但是卻無法在影片中嵌入 VobSub 這類的圖檔字幕,只能嵌入 *.srt 格式的文字檔字幕,所以接下來要用另一款軟體接手了。
在影片中嵌入字幕
最後要將字幕嵌入到影片中,也就是所謂的硬字幕 ( hard subtitles ) ,DR 使用的是 Avidemux,是一款影片剪輯軟體,但這裡只是要利用它來嵌入字幕,先將 Avidemux 安裝起來:
# yum install avidemux
執行指令:
# avidemux2
執行後載入先前轉好的 AVI 檔,然後在 Video 的編碼部份選擇和原先一樣的編碼 ( 例如:Xvid 4 ) ,再點選 Filters ,進入後將 Subtitles -> VobSub 新增到 Active Fliters。這時會要求選取 *.idx 檔,選取先前擷取出來的 subtitles.idx 即可。如果只要將字幕顯示在特定的段落,可以點選 Partial 再指定 frame ( 影片的總 frame 數會顯示在主頁面 ) 。如果還使用了其它的 fliter,記得要將 VobSub 移至 Active Fliters 的第一位。最後 Audio 的編碼直接用 copy,而輸出格式一樣選 AVI,設定好後選儲存就可開始輸出包含字幕的影片檔了。
終於製作完成,其播放效果就如下圖:
參考網站:
http://www.mplayerhq.hu/DOCS/HTML/en/index.html
http://www.exit1.org/dvdrip/doc/index.cipp
http://blog.linux.org.tw/~asho/archives/000620.html
http://www.avidemux.org/admWiki/index.php?title=Main_Page
→Back to DarkRanger.no-ip.org