22 June 2008

DVDをffmpegでmpeg-1やmp4に変換

DVDを他の形式の動画ファイルに直接変換する方法をGoogleで検索すると、大抵はDVD2AVIなどで無圧縮AVIに変換してから、他の形式に再変換を掛けるという方法が紹介されている。

オープンソースソフトのffmpegは、DVDのVOBファイルそのものを扱えるため、VOBファイルからffmpegを用いて、直接目的の動画ファイルに変換することが出来るはず。

ffmpegの入手 (Fedora, CentOS, RHEL)
標準リポジトリにはffmpegパッケージが含まれていないため、サードパーティのリポジトリを用いてインストールする。 Fedoraの場合は Livna リポジトリ http://rpm.livna.org/rlowiki/ を、CentOSやRHELの場合は RPMforge リポジトリ https://rpmrepo.org/RPMforge をインストールした上で、ffmpegのインストールを行う。


[root@localhost ~]# yum --enablerepo=rpmforge install ffmpeg

ffmpegの入手 (Windows)
ffmpegの公式サイト http://ffmpeg.mplayerhq.hu/ には、コンパイル済みのバイナリが存在しないため、ffmpegを含んだソフトや、テスト目的でコンパイル済みのものを掲載されているサイトから入手する必要がある。

今回は、バイナリ配布専用サイト http://celticdruid.no-ip.com/xvid/ の、日本のミラー http://tirnanog.fate.jp/mirror/ から、Windows向けにコンパイルされたファイルをダウンロードする。

(FedoraやCentOSなどの場合は、yum install ffmpeg でバイナリが直接インストールできる)

なお、WinFFなど、GUIプログラムにはffmpegのバイナリが含まれているため、ffmpegのバイナリのみを入手する必要性は低い。(特に、最新のffmpegを用いたい場合を除く)

WinFF (GUI)のインストール
ffmpegはコマンドラインツールのため、GUIをインストールする。

今回は、WinFFを公式サイト http://www.winff.org/ からダウンロードする。配布されている Version 0.41 は日本語のファイル名に対応していないため、 Version 0.33 をダウンロードする。

WinFFにはffmpegの安定版のバイナリが含まれている。 Version 0.33 と 0.41 には ffmpeg SVN rev.9133 が含まれている。

WinFFコマンドライン引数設定
WinFFを初めて実行する時に、セットアップフォルダのpresets.xmlがユーザのコンフィグフォルダ (Windowsのときは、C:\Documents and Settings\user name\Application Data\Winff に、Linuxの時は、~/ ) にコピーされる。プリセットに設定されている物を素直に使う場合はこのままでも良いが、私は非常に分かりづらい記述方法と思ったので、直感的な設定内容に書き換えて使っている。

例えば、設定ファイルを次のように書き換える。


<?xml version="1.0"?>
<presets>

<mpeg1-vid1152-128>
<label>mpeg1(mpg/VCD) 1152kbps/128kbps 352x240</label>
<params>-f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k</params>
<extension>mpg</extension>
</mpeg1-vid1152-128>

<mp4aac-a128>
<label>AAC(mp4) 128kbps sound only</label>
<params>-f mp4 -acodec aac -vn -ab 64k</params>
<extension>mp4</extension>
</mp4aac-a128>

<mp4aac-256>
<label>AAC(mp4) v=256/s=64kbps 320x240</label>
<params>-f mp4 -acodec aac -vcodec mpeg4 -s 320x240 -b 256k -ab 32k</params>
<extension>mp4</extension>
</mp4aac-256>

<mp4aac-256-352>
<label>AAC(mp4) v=256/s=64kbps 352x240</label>
<params>-f mp4 -acodec aac -vcodec mpeg4 -s 352x240 -b 256k -ab 32k</params>
<extension>mp4</extension>
</mp4aac-256-352>

</presets>

ffmpegの引数は、WinFFのセットアップフォルダの ffmpeg-doc.html に書かれている。また、ffmpegを引数無しで起動すれば、引数の一覧が表示される。
ffmpegで扱えるファイルの形式一覧は、ffmpeg -formats で全て表示される。

実際の変換

20080622-winff.png
GUIを用いた場合

コマンドラインで行う場合は


[root@localhost ~]# ffmpeg -i ./input.vob -f mpeg -acodec mp2 -vcodec mpeg1vide
o -s 352x240 -b 1152k -ab 128k ./output.mpg