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

解開後將 rarunrar 兩個程式丟至 /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.idxsubtitles.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