1. MSYS環境のアップデート
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっています。
make 3.8.1 以上
bash 3.1 以上
であれば問題ありません。
MSYS環境が古い場合、bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
makeも古い場合は更新します。
・make-3.81
http://sourceforge.net/downloads/mingw/MSYS/make/make-3.81-3/
make-3.81-3-msys-1.0.13-bin.tar.lzma
・bash-3.1.17
bash-3.1.17-3-msys-1.0.13-bin.tar.lzma
http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/bash/bash-3.1.17-2/
bash-3.1.17-2-msys-1.0.11-bin.tar.lzma
ダウンロードしたファイルを、C:\msys\1.0\ に解凍します。
2. MinGW環境のアップデート
現時点での最新版、gcc-4.5.2をインストールします。
以下のファイルを、すべて
C:\MinGW\
に、解凍します。
以下の旧バージョンのライブラリが
C:\MinGW\lib\
のディレクトリに残っている場合は削除してください。
libstdc++.a
libstdc++.la
libsupc++.a
libsupc++.la
・gcc-4.5.2
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/GCC/Version4/gcc-4.5.2-1/
gcc-core-4.5.2-1-mingw32-bin.tar.lzma
gcc-c++-4.5.2-1-mingw32-bin.tar.lzma
libgomp-4.5.2-1-mingw32-dll-1.tar.lzma
libgcc-4.5.2-1-mingw32-dll-1.tar.lzma
libssp-4.5.2-1-mingw32-dll-0.tar.lzma
libstdc++-4.5.2-1-mingw32-dll-6.tar.lzma
・gmp
http://sourceforge.net/downloads/mingw/MinGW/gmp/gmp-5.0.1-1/
libgmpxx-5.0.1-1-mingw32-dll-4.tar.lzma
libgmp-5.0.1-1-mingw32-dll-10.tar.lzma
・mpfr
http://sourceforge.net/downloads/mingw/MinGW/mpfr/mpfr-2.4.1-1/
libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma
・mpc
http://sourceforge.net/downloads/mingw/MinGW/mpc/mpc-0.8.1-1/
libmpc-0.8.1-1-mingw32-dll-2.tar.lzma
上記のもの以外に、最新版のGCCは以下の所からもダウンロードできます。
どちらかお好みでインストールしてください。
・TDM-GCC
http://tdm-gcc.tdragon.net/download
・Komisar Mingw stuff
http://komisar.gin.by/mingw/
その他、以下の3つのパッケージも最新のものにしておきましょう。
MinGWをインストールした時点で最新版になっていれば、更新は不要です。
・GNU Binutils
http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem/GNU-Binutils/binutils-2.21/
binutils-2.21-2-mingw32-bin.tar.lzma
・MinGW API for MS-Windows
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/RuntimeLibrary/Win32-API/w32api-3.17/
w32api-3.17-2-mingw32-dev.tar.lzma
・MinGW Runtime
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/RuntimeLibrary/MinGW-RT/mingwrt-3.18/
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz
上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。
FFmpeg rev.23823以降のコンパイルの時、strcasecmp関数とtempnam関数がエラーになってしまいます。
こちらの記事を参考にパッチを適用してください。
implicit declaration of function 'strcasecmp'
2011/03/31 追記
2011/03/25の更新で、strcasecmp関数とtempnam関数のパッチは不要になりました。
追加で、MSYS DTKをインストールします。
MSYS Supplementary Tools
http://sourceforge.net/downloads/mingw/MSYS/Supplementary%20Tools/msysDTK-1.0.1/
より、
msysDTK-1.0.1.exe
を、ダウンロードして実行します。
perl、automake、autoconfなどがインストールされます。
3. 個別のライブラリについて
以下のライブラリは、あらかじめインストールしておいてください。
この記事を書いた時点より新しくなっているものもありますので、それぞれの記事で確認してください。
nasm-2.08.01
yasm-1.0.1
pthreads-w32 release 2.9.0
zlib-1.2.5
bzip2-1.0.5
gsm-1.0.13
lame-3.98.4
opencore-amr-0.1.2
openssl-1.0.0a
rtmpdump-2.2e
libogg-1.2.0
libvorbis-1.3.1
libtheora-1.1.1
libvpx-0.9.0
x264 (make fprofiled)
xvidcore-1.3.0
4. FFmpegのコンパイル
FFmpegは、以下の場所にあります。
http://ffmpeg.org/
svnがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svnがインストールされていない場合でも、とりあえず、snapshotのソースファイルを拾ってくればコンパイルできます。
Download and SVNから、
http://ffmpeg.org/download.html
full checkoutの、
ffmpeg-checkout-snapshot.tar.bz2を、適当なディレクトリに保存します。
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf ffmpeg-checkout-snapshot.tar.bz2
$ cd ffmpeg-checkout-2010-06-15
ソースファイルを展開して作成されるディレクトリは、snapshotの日付になっていますので、その時点のディレクトリ名に読み替えて下さい。
2011/03/26 追記
ソースコードはGitで管理されるようになり、SVNはrev.26402で更新が止まっています。
今後は、Gitをインストールして、以下のコマンドでソースコードを入手してください。
$ git clone git://git.videolan.org/ffmpeg.git
または、
Get FFmpeg
http://www.ffmpeg.org/download.html
ここの、Snapshotのリンクからソースコードをダウンロードできます。
ファイルは、ffmpeg-HEAD-(Gitハッシュ値).tar.gz という形式になっていますので、そのファイル名に読み替えてください。
$ tar xzf ffmpeg-HEAD-1c0a472.tar.gz
$ cd ffmpeg-HEAD-1c0a472
次に、pthread関連、その他諸々の一括パッチを適用します。
2011/04/01 追記
パッチファイルを更新しました。(rev.28742(1caa412)〜)
ffmpeg-20110401.diff
$ patch -p1 < ffmpeg-20110401.diff
パッチを適用したら、configureを実行します。
2010/06/21 追記
FFmpeg rev.23653から、libfaadが削除されました。
HE-AAC v2デコーダーが本体に実装されたので、libfaadは不要になったらしいです。
Unknown option "--enable-libfaad".
というメッセージが出ますので、
--enable-libfaad --disable-decoder=aac
は削除してください。
$ ./configure --enable-memalign-hack --enable-gpl --enable-version3 --enable-postproc --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libvorbis --enable-libtheora --enable-libxvid --enable-libvpx --enable-libx264 --disable-ffserver --disable-ffplay --disable-ffprobe --enable-avisynth --enable-small --enable-pthreads --extra-ldflags=-static --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse -fno-strict-aliasing"
最適化オプションは、PCの環境により以下のようにしています。
※あくまでも一例ですので、もっと凝ってみたい方は、gccのマニュアルなどを見て研究されると良いかもしれません。
最適化無し版
--extra-cflags="-march=i686 -mtune=generic -fno-strict-aliasing"
※最適化無し版については、個別のライブラリのコンパイルにも
-march=i686
を、CFLAGSに追加して他と分けています。
Pentium4最適化版
--extra-cflags="-mtune=pentium4 -mfpmath=sse -msse -fno-strict-aliasing"
Core2最適化版
--extra-cflags="-mtune=core2 -mfpmath=sse -msse -fno-strict-aliasing"
Athlon64最適化版
--extra-cflags="-mtune=athlon64 -mfpmath=sse -msse -fno-strict-aliasing"
Phenom最適化版
--extra-cflags="-mtune=amdfam10 -mfpmath=sse -msse -fno-strict-aliasing"
問題なければ、以下のようなメッセージが出ます。
source pathはコンパイル環境により異なります。
思ったよりも時間がかかりますので、気長に待ちましょう。
install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
.align is power-of-two no
ARCH x86 (generic)
big-endian no
runtime cpu detection no
yasm yes
MMX enabled yes
MMX2 enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available no
10 operands supported yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
new filter support yes
filters using lavformat no
network support yes
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
libdc1394 support no
libdirac enabled no
libfaac enabled no
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled no
libopencore-amrnb support yes
libopencore-amrwb support yes
libopenjpeg enabled no
librtmp enabled yes
libschroedinger enabled no
libspeex enabled no
libtheora enabled yes
libvorbis enabled yes
libvpx enabled yes
libx264 enabled yes
libxvid enabled yes
zlib enabled yes
bzlib enabled yes
(長いので中略)
Creating config.mak and config.h...
その後、
$ make
ffmpeg.exeが出来ていれば完了です。
【補足】
自分用の場合は、再配布を考えなくても良いので、libfaac入りのFFmpegをビルドすることもできます。
追加で、libfaacをコンパイル&インストールします。
libfaac のコンパイル&インストール
configureオプションの適当な所に、
--enable-nonfree
--enable-libfaac
を追加します。
configureのメッセージに、
libfaac enabled yes
と表示されていれば、makeして完了です。
FFmpegのエンコードオプションで、
-acodec libfaac
が使えるようになります。
当サイトで配布しているFFmpegは配布用のため、libfaacは無効にしています。
【更新履歴】を見る