Ubuntu 上使用 ffmpeg 將 DVD 轉成 mp4

FFmpeg 是一套跨平臺開發原始碼的影音轉換軟體。 利用 FFmpeg 我們可以在 Linux 上將 DVD 轉換成 mp4 或是其他格式。

Ubuntu 15.04 以上可以直接以 apt-get 安裝。不過我的平臺是 Ubuntu 14.04。 因此只能通過兩種方式安裝: ppa、手動編譯。

如果要從 PPA 安裝,請參考: https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media

不過我是採用編譯的方式:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu


Install FFmpeg

建立資料夾 ~/ffmpeg_sources 用來編譯 ffmpeg 與其他相依性軟體

mkdir -p ~/ffmpeg_sources

由於我的實驗環境只有我一個人使用,因此編譯軟體時,我大多設定 prefix 為自己家目錄; 如果想要同時也提供給其他使用者,建議可以將 prefix 設定成 /usr

另外,如果 prefix 設定成 $HOME,就要將 $HOME/bin 加入到 $PATH 裡面:

export PATH="$HOME:$PATH"
sudo apt-get -y --force-yes install autoconf automake build-essential \
libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool \
libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev yasm libx264-dev libmp3lame-dev \
libopus-dev
sudo apt-get install cmake mercurial
cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME" -DENABLE_SHARED:bool=off ../../source
make
make install
cd ~/ffmpeg_sources
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --prefix="$HOME" --disable-shared
make
make install
cd ~/ffmpeg_sources
wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.5.0.tar.bz2
tar xjvf libvpx-1.5.0.tar.bz2
cd libvpx-1.5.0
./configure --prefix="$HOME" --disable-examples --disable-unit-tests
make
make install
cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PKG_CONFIG_PATH="$HOME/lib/pkgconfig" ./configure \
  --prefix="$HOME" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/include" \
  --extra-ldflags="-L$HOME/lib" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libtheora \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree
make
make install

編譯完之後,就可以將編譯用的臨時資料夾刪除

sudo rm -rf ~/ffmpeg_sources

Convert DVD to MP4

接下來,先將 DVD 光碟片放入光碟機中,然後掛載起來:

sudo mount /dev/sr0 /mnt

讀取 VOB 檔進行轉換:

cd /mnt/
cat VTS_01_*.VOB | ffmpeg -i - -aq 100 -ac 2 -vcodec libx264 -crf 24 -threads 0 ~/VTS_01.mp4

利用 cat 加上正規表示法,將多個 VOB 檔依序丟給 ffmpeg,轉換後的影片會自動合併成一個 video 檔。 (檔案名稱與路徑請自行更換)

FFmpeg 真的是非常好用又強大呀!!!


Reference: