いよいよ、FFmpegのコンパイルです。
bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ますので、MinGWのwebページから
bash-3.1-MSYS-1.0.11-1.tar.bz2
をダウンロードして、MSYSのsh.exeを更新しておくと良いです。
最近は、gcc4.2.2でしかコンパイルしていなかったので気がつかなかったのですが、gcc3.4.xだと、コンパイルできたように見えても、ffmpeg.exeを実行するとクラッシュするようです。
2008/01/13追記
と思って、久々にrev.11518をgcc3.4.2でコンパイルしてみたら、正常に動作しました。
いつの間にか修正されていたようです。
安定版の最新はgcc4.2.2ですが、MinGWのwebページにはgcc4.2.1までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGWに環境があれば、以下のファイルをダウンロードして、C:\MinGWの下に解凍すればOKです。
gcc-core-4.2.1-sjlj-2.tar.gz
gcc-g++-4.2.1-sjlj-2.tar.gz
自分でgccをビルドするのは面倒だけど、gcc4.2.2を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/
以下のライブラリは、あらかじめインストールしておいてください。
この記事を書いた時点より、新しくなっているものもありますので、それぞれの記事で確認してください。
nasm-0.98.39
yasm-0.6.2
pthreads-w32-2-8-0-release
zlib-1.2.3
a52dec-0.7.4
amrnb-7.0.0.0 (3GPP 26104-700)
amrwb-7.0.0.2 (3GPP 26204-700)
faac-1.26
faad2-2.6
gsm-1.0.12
lame-3.97
libnut-512
libogg-1.1.3
libvorbis-1.2.0
libtheora-1.0beta2
x264 rev.702
xvidcore-1.1.3
FFmpegは、以下の場所にあります。
http://ffmpeg.mplayerhq.hu/
x264と同様、svnがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svnがインストールされていない場合でも、とりあえず、snapshotのソースファイルを拾ってくればコンパイルできます。
Download and SVNから、
http://ffmpeg.mplayerhq.hu/download.html
full checkoutの、
ffmpeg-checkout-snapshot.tar.bz2を、適当なディレクトリに保存します。
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf ffmpeg-checkout-snapshot.tar.bz2
$ cd ffmpeg-checkout-2007-12-10
ソースファイルを展開して作成されるディレクトリは、snapshotの日付になっていますので、その時点のディレクトリ名に読み替えて下さい。
1571行目の後、以下のように、elif check_libから2行追加します。
if enabled pthreads; then
if check_func pthread_create; then
:
elif check_func pthread_create -pthread; then
add_cflags -pthread
add_ldflags -pthread
elif check_func pthread_create -pthreads; then
add_cflags -pthreads
add_ldflags -pthreads
elif check_lib pthread.h pthread_create -lpthread -lwsock32; then
add_cflags -DPTW32_STATIC_LIB
elif ! check_lib pthread.h pthread_create -lpthread; then
die "ERROR: can't find pthreads library"
fi
fi
1611行目に、-lpthread -lwsock32を追加。
修正前) enabled libx264 && require x264 x264.h x264_encoder_open -lx264
修正後) enabled libx264 && require x264 x264.h x264_encoder_open -lx264 -lpthread -lwsock32
次に、libavcodec/pthread.cを修正します。
パッチファイルffmpeg-PTW32_STATIC_LIB.diffをダウンロードして、以下のコマンドを実行。
$ patch -p0 < ffmpeg-PTW32_STATIC_LIB.diff
rev.11142以降、携帯動画変換君で、以下のようなエラーが出る場合があります。
A>ConvertMovieToFile:NewMovieFromFile Error
A>Dialog : 処理実行中にエラーが発生しました [Error:-8971]
その場合は、こちらの修正も試してみてください。
修正が終わったら、configureを実行します。
--enable-libogg は、configureから削除されています。
$ ./configure --enable-memalign-hack --enable-pp --enable-swscaler --enable-gpl --enable-liba52 --enable-libamr-nb --enable-libamr-wb --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libxvid --disable-ffserver --disable-ffplay --enable-avisynth --enable-small --enable-pthreads --extra-ldflags=-static --extra-cflags="-fno-strict-aliasing"
問題なければ、以下のようなメッセージが出ます。
install prefix /usr/local
source path /c/TEMP/ffmpeg-checkout-2007-12-10
C compiler gcc
make make
.align is power-of-two no
ARCH x86_32 (generic)
big-endian no
MMX enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
software scaler enabled yes
video hooking no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
liba52 support yes
liba52 dlopened no
libamr-nb support yes
libamr-wb support yes
libdc1394 support no
libfaac enabled yes
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libtheora enabled yes
libvorbis enabled yes
x264 enabled yes
XviD enabled yes
zlib enabled yes
License: GPL
(長いので、全部見たい方はこちらをどうぞ。)
Creating config.mak and config.h...
その後、
$ make
ffmpeg.exeが出来ていれば完了です。
スポンサードリンク
2007年12月11日
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/7996502
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/7996502
この記事へのトラックバック



結局自分でのGCC4.2.2のビルドはうまくいきませんでした(泣)
やっぱりlibstdc++-v3でエラーになります
TDM's Experimental のGCC使わせてもらって
GCC4.2.2環境の構築できました!!
これでクラッシュにおびえずにコンパイルができます
ありがとうございました
また何かありましたら
質問や書き込みをすると思いますが
そのときはよろしくお願いします
ん…、ビルドできませんでしたか…。
configureの時にコケているかもしれないので、
\i686-pc-mingw32\libstdc++-v3\config.log
などを見たら、何かわかるかもしれません。
TDM入れるときにMINGWを
いったんすべて消してしまったので
次に挑戦するときは調べてみます
ありがとうございました