2009年9月6日日曜日

【ffmpeg の導入】 1.ビルド環境構築

EDIUS でニコニコ計画の途中だが、
エンコードした動画の画質がどうにも気に入らない。
本当にこんな程度なのか気になって、
比較対象が欲しくなった。

というわけで、ffmpeg を導入することに。

コンパイル済みのバイナリ導入という手もあるが、
どうも古いものが多いようなので、
自力でビルドすることにした。
とはいっても、他人のフンドシを利用する。
猫科研究所(felid labo)」の手順を有難く利用させていただくことにする。



ここで、再び記述する理由は、
ffmpeg や各ライブラリのバージョンが異なるため、
多少内容が異なる点があるからだ。
それと、自分用備忘録も兼ねている。

では、最初にビルド環境を整えることにする。
ファイルのダウンロードは、全て MinGW のページから行った。
  • MinGW-5.1.4.exe をインストール
    make を入れる。
    g++ は、この時点では入れない。
  • MSYS-1.0.11.exe をインストール
    なぜかインストール後設定スクリプトが、
    起動しなかった(MinGW の場所を指定するやつ)。
    しかたがないので、MSYS を起動して、
    /postinstall/pi.sh を手動で実行した。
  • msysDTK-1.0.1.exe をインストール

次に、GCC とかを入れる。
現時点で GCC のバージョンは 3.4.5 になっている。
このバージョンでは、今回利用するライブラリの一部で素直にコンパイルできない。
どうやらバージョン 4 から新設されたオプションを使用しているからのようだ。
というわけで 4.4.0 を入れることにする。

MinGW のページから別途以下のファイルを、
ダウンロードして手動インストールする。
中には、一見関係なさそうなものがあるが、
依存関係があるのでインストールする。

実は、最初 3.4.5 を入れてしまい、
手動でファイルを削除してから 4.4.0 インストールしているので、
上記手順通りにならないかもしれない。
その時は、MinGW インストーラのディレクトリに、
gcc-core と gcc-c++ の 3.4.5 版アーカイブが置かれるので、
それらに含まれるファイルに対応するものを、
インストールした MinGW から手動で削除すること。

以下のファイルを MSYS 上のホームディレクトリに置く
  • gcc-core-4.4.0-mingw32-bin.tar.gz
  • gcc-c++-4.4.0-mingw32-bin.tar.gz
  • gmp-4.2.4-mingw32-dll.tar.gz
  • mpfr-2.4.1-mingw32-dll.tar.gz
  • pthreads-w32-2.8.0-mingw32-dll.tar.gz
$ cd /mingw/
$ tar zxvf ~/gcc-core-4.4.0-mingw32-bin.tar.gz
$ tar zxvf ~/gcc-c++-4.4.0-mingw32-bin.tar.gz
$ tar zxvf ~/gmp-4.2.4-mingw32-dll.tar.gz
$ tar zxvf ~/mpfr-2.4.1-mingw32-dll.tar.gz
$ tar zxvf ~/pthreads-w32-2.8.0-mingw32-dll.tar.gz

さらに、vim とかも入れた。
まあ、サクラエディタとかでもいいのだが(メモ帳は使っちゃだめよ)、
気分が出るのでw

以下のファイルを MSYS 上のホームディレクトリに置く。
しかし lzma なんてファイルをはじめて見た。
なんだか世の中、変化が早いので困る。

vim-7.2-1-msys-1.0.11-bin.tar.lzma
vim-7.2-1-msys-1.0.11-lang.tar.lzma

インストールは以下のようにする。

$ cd /

$ tar --lzma -xvf ~/vim-7.2-1-msys-1.0.11-bin.tar.lzma
$ tar --lzma -xvf ~/vim-7.2-1-msys-1.0.11-lang.tar.lzma

これでビルド環境のベースができた。