ffmpeg をビルドする

2010/6/8 追記Debian lenny に ffmpeg をインストールする話はコッチでしてます。etch とは違う方法でインストールしました。


こないだやったのと同じようにすればスイスイ楽チンと思っていたら大間違い!思い切り落とし穴が…。

まず、./configure でエラーが出た。

paraches@debian:~/myTest/svn/ffmpeg$ ./configure --enable-libmp3lame --enable-libtheora --enable-liba52 --enable-libx264 --enable-libgsm --enable-pp --enable-libxvid --enable-libfaac --enable-pthreads --enable-libvorbis --enable-libfaad --enable-gpl --enable-x11grab
Unknown option "--enable-pp".
See ./configure --help for available options.
paraches@debian:~/myTest/svn/ffmpeg$ 

「--enable-pp なんて知らない」って怒られる。--enable-pp は「GPL'ed post processing のサポートをする」んだそうだ。何それ? ま、いっか。とりあえず --enable-pp は消して再度トライしたら ./configure は無事に終了した。

paraches@debian:~/myTest/svn/ffmpeg$ ./configure --enable-libmp3lame --enable-libtheora --enable-liba52 --enable-libx264 --enable-libgsm --enable-libxvid --enable-libfaac --enable-pthreads --enable-libvorbis --enable-libfaad --enable-gpl --enable-x11grab
install prefix            /usr/local
source path               /home/paraches/myTest/svn/ffmpeg
(省略)
NOTE: Object files are built at the place where configure is launched.
paraches@debian:~/myTest/svn/ffmpeg$ 

次に make をする。

paraches@debian:~/myTest/svn/ffmpeg$ make
(省略)
gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I. -I"/home/paraches/myTest/svn/ffmpeg" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -fasm -std=c99 -fomit-frame-pointer -pthread -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -O3 -fno-math-errno       -c -o libavcodec/libx264.o libavcodec/libx264.c
libavcodec/libx264.c: In function ‘X264_init’:
libavcodec/libx264.c:165: error: ‘x264_param_t’ has no member named ‘i_bframe_adaptive’
libavcodec/libx264.c:224: error: ‘X264_ME_TESA’ undeclared (first use in this function)
libavcodec/libx264.c:224: error: (Each undeclared identifier is reported only once
libavcodec/libx264.c:224: error: for each function it appears in.)
make: *** [libavcodec/libx264.o] エラー 1
paraches@debian:~/myTest/svn/ffmpeg$ 

というわけで、エラー! libx264.c の 165行目と224行目にエラーがあるらしい。165行目は x264_param_t(構造体?)に i_bframe_adaptiveってメンバは無いって。う〜ん、新しく加わったメンバなのかな?他に libx264.c にはそのメンバはいないので、代入しているその行をコメントアウト! 次に 224行目だけど、これも定義されてない定数がいきなり出てきたってエラーだ。これも他には使われてないな〜。というわけで、これも前の行の else if 文もろともコメントアウト!(そんなんで良いのか???)
さて、エラーが出る行は消し去ったので、再度チャレンジ!

paraches@debian:~/myTest/svn/ffmpeg$ make
(省略)
doc/texi2pod.pl doc/ffserver-doc.texi doc/ffserver.pod
pod2man --section=1 --center=" " --release=" " doc/ffserver.pod > doc/ffserver.1
rm doc/ffserver.pod doc/ffplay.pod doc/ffmpeg.pod
paraches@debian:~/myTest/svn/ffmpeg$ 

というわけで、めでたく?終了!
後は前の時と同じく sudo make install して、/etc/ld.so.conf の最初に /usr/local/lib を加える。そしてアップデート。

paraches@debian:~/myTest/svn/ffmpeg$ sudo ldconfig -v
/usr/local/lib:
/lib/x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu:
/lib:
	libnss_winbind.so.2 -> libnss_winbind.so.2
(省略)
	libsvn_client-1.so.1 -> libsvn_client-1.so.1.0.0
/usr/lib32:
paraches@debian:~/myTest/svn/ffmpeg$ 

で、ffmpeg のバージョンを確認してみる。

paraches@debian:~/myTest/svn/ffmpeg$ ffmpeg -version
FFmpeg version SVN-r15375, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --enable-libmp3lame --enable-libtheora --enable-liba52 --enable-libx264 --enable-libgsm --enable-libxvid --enable-libfaac --enable-pthreads --enable-libvorbis --enable-libfaad --enable-gpl --enable-x11grab
  libavutil     49.10. 0 / 49.10. 0
  libavcodec    52. 0. 0 / 52. 0. 0
  libavformat   52.22. 1 / 52.22. 1
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Sep 21 2008 20:01:54, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
FFmpeg SVN-r15375
libavutil     49.10. 0 / 49.10. 0
libavcodec    52. 0. 0 / 52. 0. 0
libavformat   52.22. 1 / 52.22. 1
libavdevice   52. 1. 0 / 52. 1. 0
paraches@debian:~/myTest/svn/ffmpeg$ 

というわけで、とりあえずは望みのものがビルドできたような気がする。
一応ちょこちょこっと libx264 でエンコードして見たけど、ちゃんとできてるみたい。あの怪しいコメントアウトのせいで何かコマンドやオプションが効かなくなっていそうな気もするけど、気にしない〜!