MinGW+ffmpeg-準備
ビルド環境であるMinGWやソースファイルの収集、前提条件に関して説明する。
ビルド環境
MinGWを使用する。MinGWの環境は今更MinGWシリーズで構築した環境を使用する。
なお、使用するMinGWのgccのバージョンは、2008年春時点でMinGWのCurrentである3.4.5である。理由は今更MinGWのページを参照。4.2.1を入れてしまっている場合は、今更MinGW(5)を参照し3.4.5の環境として欲しい。4.2.1の環境を保存しなくて良いのであれば、MinGWのリリースページからCurrentのアーカイブを取得・展開して丸ごとMinGWのディレクトリに上書きしてしまっても良い。
ソースファイル
様々な理由からソースアーカイブへの直リンクはしていない。x264の取得は面倒なので猫科研究所のx264 git snapshot proxyをお薦めする。
モジュール | DLページ | ファイル名等 |
---|---|---|
liba52 | DLページ | a52dec-0.7.4.tar.gz |
xvidcore | DLページ | xvidcore-1.1.3.tar.gz |
faac | DLページ | faac-1.26.tar.gz |
faad | DLページ | faad2-2.6.1.tar.gz |
LAME | DLページ | lame-3.97.tar.gz |
POSIX Threads for Win32 | DLページ | pthreads-w32-2-8-0-release.tar.gz |
x264 | daily snapshot git(web) git(git://git.videolan.org/x264.git) |
Revision807 |
ffmpeg | DLページ svn://svn.mplayerhq.hu/ffmpeg/trunk |
下記参照 |
ffmpegのソース
ffmpegは2008年春現在、H.264/AVCのmp4の出力に問題があるように思われる。具体的には、GOM Player や Haali Media Splitter + ffdshowでは再生できない。MPlayerでは最初の数秒間分は映像が表示されず、その後正常再生となる。
このため最新のソースではなく、少々古いリビジョンをSubversion経由で取得することをお薦めする。この特集では猫科研究所で動作確認の取れているRevision9726(2007/07/18)をメインに使用し、最新バージョンの解説としてRevision12665(2008/04/02)を使用する。なお、記事の内容が膨らみすぎてしまうため、ここではSubversionについての説明は割愛させていただく。
ffmpegの更新は複数人で、日々どころか数時間毎、頻繁に行われる。多少のリビジョンの前後はビルドの方法自体に影響ないが、ソースの問題でビルドエラーになるリビジョンも多いので注意が必要だ。コツとしては、更新日時を見て間隔の大きく(5〜6時間以上)空いているところを見つけ、そのリビジョン番号の若い(小さい)方を取得するのがよい。更新が落ち着き、ビルド可能になっている可能性が高い。また、大抵の場合nightly snapshotはビルドくらいは通るのでこれを使うのも良い。
各ライブラリのインストール
各ライブラリのインストールは、全てファイルコピーで行う。つまり、make installやinstall-sh等は使用しない。これはffmpeg関連ライブラリがそれほど汎用的なものではないことから、インストールしているファイル名を明確にしてアンインストール可能とするためと、ffmpegに必要なファイルを明確にするためである。まぁ、あれだ。単純に好きじゃないんだ。
この特集では行わないが、ライブラリを簡単に/mingw以外にインストールして切り分ける方法はM.a.Factory社長日誌に詳しいので参照されたい。
ビルド方針
この特集内ではffmpegで必要としない物は基本的にビルドしない。つまり、各ライブラリには大抵、単独で実行するためのコマンドが付属しているが、これらの機能性は考慮しない。後日、別の記事としてより高機能にビルドすることはあるかもしれない。
基本的なビルドの流れ
MinGWやCygwin、Linux等でのビルドを経験したことのない方のため、これらのシステムで一般的なビルド〜インストールの流れを書いておく。
$ tar xfvz library-src.tar.gz $ cd library-src $ ./bootstrap $ ./configure --prefix=/mingw --disable-shared --enable-static $ make $ make install
library-srcは当然実際にはビルド対象のファイル・ディレクトリ名だ。
- ./bootstrapや./configureは不要なことがある。
- ./configureのパラメータはライブラリにより、または用途により不要。
例えば本特集では--prefixは使用しない。- --prefixはインストール先を指定している。
例えば上記例のように指定すると/mingw/binにコマンド(*.exe)が配置されるなど適切に処理される。 - --disable-sharedは共有ライブラリ(*.so)のビルドを無効化している。
- --enable-staticは静的ライブラリ(*.a)のビルドを有効化している。
- --prefixはインストール先を指定している。
- make installは使えない場合がある。makeに他のパラメータが必要な場合がある。
最終更新時間:2008年04月06日 10時57分35秒