!!!MinGW+ffmpeg-準備 ビルド環境であるMinGWやソースファイルの収集、前提条件に関して説明する。 !!ビルド環境 MinGWを使用する。MinGWの環境は[[今更MinGWシリーズ|今更MinGWインデックス]]で構築した環境を使用する。 なお、使用するMinGWのgccのバージョンは、2008年春時点でMinGWのCurrentである'''3.4.5'''である。理由は[[今更MinGW|今更MinGWインデックス]]のページを参照。4.2.1を入れてしまっている場合は、[[今更MinGW(5)]]を参照し3.4.5の環境として欲しい。4.2.1の環境を保存しなくて良いのであれば、MinGWのリリースページからCurrentのアーカイブを取得・展開して丸ごとMinGWのディレクトリに上書きしてしまっても良い。 !!ソースファイル 様々な理由からソースアーカイブへの直リンクはしていない。 x264の取得は面倒なので猫科研究所の[[x264 git snapshot proxy]]をお薦めする。 ,モジュール,DLページ,ファイル名等 ,[liba52|http://liba52.sourceforge.net/],[DLページ|http://liba52.sourceforge.net/downloads.html],a52dec-0.7.4.tar.gz ,[xvidcore|http://www.xvid.org/],[DLページ|http://www.xvid.org/Downloads.43.0.html],xvidcore-1.1.3.tar.gz ,[faac|http://www.audiocoding.com/],[DLページ|http://www.audiocoding.com/downloads.html],faac-1.26.tar.gz ,[faad|http://www.audiocoding.com/],[DLページ|http://www.audiocoding.com/downloads.html],faad2-2.6.1.tar.gz ,[LAME|http://lame.sourceforge.net/],[DLページ|http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309],lame-3.97.tar.gz ,[POSIX Threads for Win32|http://sourceware.org/pthreads-win32/],[DLページ|ftp://sourceware.org/pub/pthreads-win32/],pthreads-w32-2-8-0-release.tar.gz ,[x264|http://www.videolan.org/developers/x264.html],[daily snapshot|ftp://ftp.videolan.org/pub/videolan/x264/snapshots/]{{br}}[git(web)|http://git.videolan.org/gitweb.cgi?p=x264.git;a=summary]{{br}}git(git://git.videolan.org/x264.git),Revision807 ,[ffmpeg|http://ffmpeg.mplayerhq.hu/],[DLページ|http://ffmpeg.mplayerhq.hu/download.html]{{br}}svn://svn.mplayerhq.hu/ffmpeg/trunk,下記参照 !ffmpegのソース ffmpegは2008年春現在、H.264/AVCのmp4の出力に問題があるように思われる。具体的には、[GOM Player|http://www.gomplayer.jp/] や [Haali Media Splitter|http://haali.cs.msu.ru/mkv/] + [ffdshow|http://ffdshow-tryout.sourceforge.net/]では再生できない。[MPlayer|http://www.mplayerhq.hu/]では最初の数秒間分は映像が表示されず、その後正常再生となる。 このため最新のソースではなく、少々古いリビジョンをSubversion経由で取得することをお薦めする。この特集では猫科研究所で動作確認の取れている'''Revision9726'''(2007/07/18)をメインに使用し、最新バージョンの解説としてRevision'''12665'''(2008/04/02)を使用する。なお、記事の内容が膨らみすぎてしまうため、ここではSubversionについての説明は割愛させていただく。 ffmpegの更新は複数人で、日々どころか数時間毎、頻繁に行われる。多少のリビジョンの前後はビルドの方法自体に影響ないが、ソースの問題で'''ビルドエラーになるリビジョンも多い'''ので注意が必要だ。コツとしては、更新日時を見て間隔の大きく(5〜6時間以上)空いているところを見つけ、そのリビジョン番号の若い(小さい)方を取得するのがよい。更新が落ち着き、ビルド可能になっている可能性が高い。また、大抵の場合'''nightly snapshotはビルドくらいは通る'''のでこれを使うのも良い。 !!各ライブラリのインストール 各ライブラリのインストールは、全て'''ファイルコピーで行う'''。つまり、make installやinstall-sh等は使用しない。 これはffmpeg関連ライブラリがそれほど汎用的なものではないことから、インストールしているファイル名を明確にしてアンインストール可能とするためと、ffmpegに必要なファイルを明確にするためである。まぁ、あれだ。単純に好きじゃないんだ。 この特集では行わないが、ライブラリを簡単に/mingw以外にインストールして切り分ける方法は[M.a.Factory社長日誌|http://mafactory.com/usersvoice/blogs/master/archive/category/1000.aspx]に詳しいので参照されたい。 !!ビルド方針 この特集内では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のパラメータはライブラリにより、または用途により不要。{{br}}例えば本特集では--prefixは使用しない。 **--prefixはインストール先を指定している。{{br}}例えば上記例のように指定すると/mingw/binにコマンド(*.exe)が配置されるなど適切に処理される。 **--disable-sharedは共有ライブラリ(*.so)のビルドを無効化している。 **--enable-staticは静的ライブラリ(*.a)のビルドを有効化している。 *make installは使えない場合がある。makeに他のパラメータが必要な場合がある。