トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

MinGW+ffmpeg(1)準備

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 PlayerHaali 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)のビルドを有効化している。
  • make installは使えない場合がある。makeに他のパラメータが必要な場合がある。

最終更新時間:2008年04月06日 10時57分35秒