概要
ffmpegのav(format|codec|util)-[0-9]+.dllをビルドする方法について。
ffmpegはUNIX系のプロジェクトで、Win32DLLをビルドするにはMinGWをつかう。 MinGWを使うとcygwin1.dllなしで動くバイナリがビルドできる。
MinGWとそのシェルのMSYSはルート直下にインストールしないとうまく動かない。 が、C:\とかにそのまま入れると気持ちが悪いので、SUBSTでProgram FilesやMy? DocumentsなどをI:\など、適当なドライブに割り当ててそこにインストールするとよい。
SUBST I: C:\Progra~1
デタッチするときは
SUBST I: /D
参考
- http://www.himco.jp/articles/pdf/ffmpegCompile.swf
- コマンドラインとかをコピペするとハイフンが変。
- takuma104のFFmpegとかメモ - FFmpeg Users/Developers
MinGW
MinGWを取得
- http://www.mingw.org/
- http://sourceforge.net/project/showfiles.php?group_id=2435
- http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=82721&release_id=158801
- http://sourceforge.net/project/downloading.php?group_id=2435&use_mirror=osdn&filename=MinGW-5.1.3.exe&93274279
取得できたらインストール。インストール時に必要に応じてパスを変更する。スペースを含むパスはうまくいかない。(MinGWのファイルを書き換えるなどすれば一応動くようにもできそうな感触はある。)マルチバイト文字のパスは未調査。
MSYS
MSYSを取得
- http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=82724&release_id=158862
- http://sourceforge.net/project/downloading.php?group_id=2435&use_mirror=nchc&filename=MSYS-1.0.11-2004.04.30-1.exe&21354770
取得できたらインストール。インストール時に必要に応じてパスを変更する。 インストールが終わるとポストインストールプロセスが始まる。先に入れたMinGWのパスを入力する。
無事インストールが終わると、例えばI:\msys\1.0に入れた場合、自分のホームディレクトリはI:\msys\1.0\home\(ユーザー名)となる。
NASM
NASMを取得
取得できたらホームディレクトリに解凍。 以下の内容のnasm.shを作って実行
cd nasm* make distclean ./configure -prefix=/MinGW make make install
lame
lameを取得
取得できたらホームディレクトリに解凍。 以下の内容のlame.shを作って実行
cd lame* make distclean ./configure -prefix=/static -disable-shared -enable-static make make install
ffmpeg
いよいよffmpeg本体。 bashが必要なのでまずbashを入れる。
bash/bin/bash.exeをmsys/1.0/binにコピー
次にffmpegの取得。SVNから持ってくる。 ホームにffmpegフォルダを掘って svn://svn.mplayerhq.hu/ffmpeg/trunk からCoする。
ビルドは以下のffmpeg.shを作って実行。
cd ffmpeg* make distclean ./configure --enable-memalign-hack --enable-libmp3lame --extra-cflags=-I/static/include --extra-ldflags=-L/static/lib --enable-shared --disable-static make make install
- --enable-mingw32をつけなくても最近判別するようになった模様
- --enable-libmp3lameは昔は--enable-mp3lameだった。
- --enable-sharedでDLLを作る。その際は--disable-staticをつけなきゃいけない
ちなみにconfigureのオプション一覧 : http://htffmpegx.seesaa.net/article/9194572.html
一応完成
DLLはffmpeg*/libav(format|codec|util)/av(format|codec|util)-[0-9]+.dllにできる。
以下追加のライブラリ
zlib
- AVIファイルを扱えるようになる。
- http://sourceforge.net/project/downloading.php?groupname=libpng&filename=zlib-1.2.3.tar.gz&use_mirror=jaist
- zlib.sh
cd zlib* make distclean ./configure -prefix=/mingw make make install
xvidcore
- mpeg4
- http://www.xvid.org/
- http://www.xvid.org/Downloads.43.0.html
- xvidcore.sh
cd xvidcore*/build/generic make distclean ./configure -prefix=/static make make install rm /static/lib/xvidcore.dll mv /static/lib/xvidcore.a /static/lib/lib/libxvidcore.a
- --enable-xvid --enable-gpl