kenanのブログ

闘病生活

CentOS5.2にffmpegをソースから入れてみようとした。

参考サイト

http://mick.blog16.jp/index.php/2008/02/10/ffmpega_centosa_la_a_a_fa_ra_3gpa_flva_u

http://d.hatena.ne.jp/mimizumo/

http://d.hatena.ne.jp/shunirr/20080717/ffmpeg

http://d.hatena.ne.jp/amachang/20080624/1214315801


まずGitは標準のリポジトリには無いので外部リポジトリを追加

sudo vi /etc/yum.repos.d/CentOS-Base.repo

[dag]
name=Dag RPM Repository for Redhat EL5
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
sudo yum update
sudo yum install git

subversionがない人はここで一緒に入れましょう

yasmも必要らしいので入れましょう。

wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.1.tar.gz
tar zxvf yasm-0.7.1.tar.gz
 cd yasm-0.7.1
./configure && make && sudo make install

あとで入れるlibtheoraでエラーとなるので

sudo yum install libtheora-devel

liba52は最新のconfigureオプションにはない。といわれるのでMakefileから外してもいいかも。

ビルド時にエラーがでるので
yum install automake libtoolなど入れておく

libavfilterがないといわれたんだけど
svn checkout svn://svn.mplayerhq.hu/soc/libavfilter
↑いらなくても一応動く。
あとリビジョンが古すぎるので最新のソースにパッチを適用すると死ぬ。
C言語に詳しい人なら手動パッチできるかも。

実行してないが、以下のテンプレ的Makefileを走らせればたぶん動きます。

以前のMakefileMac用のMakefileなので.dylibの箇所が.soである必要がありました。ので修正しました。

all: ffmpeg-repos /usr/local/lib/libfaad.so /usr/local/lib/liba52.la /usr/local/lib/libdirac_decoder.so /usr/local/lib/libfaac.so /usr/local/lib/libgsm.a /usr/local/lib/libamrnb.so /usr/local/lib/libamrwb.so /usr/local/lib/libmp3lame.so /usr/local/lib/libx264.a /usr/local/lib/libnut.a /usr/local/lib/libtheora.so /usr/local/lib/libvorbis.so /usr/local/lib/libxvidcore.4.so
        cd ffmpeg-repos && PKG_CONFIG_PATH=/usr/local/lib/pkgconfig sh configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-libamr-nb --enable-libamr-wb --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid && make && sudo make install


# ffmpeg-repos
ffmpeg-repos:
        svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg-repos


# faad2
faad2-2.6.1.tar.gz:
        wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz

faad2: faad2-2.6.1.tar.gz
        tar xvfz faad2-2.6.1.tar.gz

/usr/local/lib/libfaad.so: faad2
        cd faad2 && ./bootstrap && ./configure && make && sudo make install


# liba52
a52dec-0.7.4.tar.gz:
        wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz

a52dec-0.7.4: a52dec-0.7.4.tar.gz
        tar xvfz a52dec-0.7.4.tar.gz

/usr/local/lib/liba52.la: a52dec-0.7.4
        cd a52dec-0.7.4 && ./configure && make && sudo make install


# libdirac
dirac-0.10.0.tar.gz:
        wget http://downloads.sourceforge.net/dirac/dirac-0.10.0.tar.gz

dirac-0.10.0: dirac-0.10.0.tar.gz
        tar xvfz dirac-0.10.0.tar.gz

/usr/local/lib/libdirac_decoder.so: dirac-0.10.0
        cd dirac-0.10.0 && ./configure && make && sudo make install

# faac2
faac-1.26.tar.gz:
        wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz

faac: faac-1.26.tar.gz
        tar xvfz faac-1.26.tar.gz

/usr/local/lib/libfaac.so: faac
        cd faac && ./bootstrap && ./configure && make && sudo make install


# libgsm
gsm-1.0.12.tar.gz:
        wget http://kbs.cs.tu-berlin.de/~jutta/gsm/gsm-1.0.12.tar.gz

gsm-1.0-pl12: gsm-1.0.12.tar.gz
        tar xvfz gsm-1.0.12.tar.gz
/usr/local/lib/libgsm.a: gsm-1.0-pl12
        cd gsm-1.0-pl12 && make && sudo cp lib/libgsm.a /usr/local/lib/ && sudo cp inc/gsm.h /usr/local/include/

# libamrnb
amrnb-7.0.0.2.tar.bz2:
        wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2

amrnb-7.0.0.2: amrnb-7.0.0.2.tar.bz2
        tar xvfj amrnb-7.0.0.2.tar.bz2

/usr/local/lib/libamrnb.so: amrnb-7.0.0.2
        cd amrnb-7.0.0.2 && ./configure && make && sudo make install


# libamrwb
amrwb-7.0.0.3.tar.bz2:
        wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2

amrwb-7.0.0.3: amrwb-7.0.0.3.tar.bz2
        tar xvfj amrwb-7.0.0.3.tar.bz2

/usr/local/lib/libamrwb.so: amrwb-7.0.0.3
        cd amrwb-7.0.0.3 && ./configure && make && sudo make install


# libmp3lame
lame-3.97.tar.gz:
        wget http://downloads.sourceforge.net/lame/lame-3.97.tar.gz

lame-3.97: lame-3.97.tar.gz
        tar xzf lame-3.97.tar.gz

/usr/local/lib/libmp3lame.so: lame-3.97
        cd lame-3.97 && ./configure && make && sudo make install


# libx264
x264:
        git clone git://git.videolan.org/x264.git

/usr/local/lib/libx264.a: x264
        cd x264 && ./configure && make && sudo make install

# libnut
libnut:
        svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut

/usr/local/lib/libnut.a: libnut
        cd libnut && make && sudo make install

# libogg
libogg-1.1.3.tar.gz:
        wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz

libogg-1.1.3: libogg-1.1.3.tar.gz
        tar xvf libogg-1.1.3.tar.gz

/usr/local/lib/libogg.so: libogg-1.1.3
        cd libogg-1.1.3 && ./configure && make && sudo make install

# libtheora
theora:
        svn co http://svn.xiph.org/trunk/theora theora

/usr/local/lib/libtheora.so: theora /usr/local/lib/libogg.so
        cd theora && ./autogen.sh && ./configure && make && sudo make install


# libvorbis
libvorbis-1.2.0.tar.gz:
        wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz

libvorbis-1.2.0: libvorbis-1.2.0.tar.gz
        tar xvfz libvorbis-1.2.0.tar.gz

/usr/local/lib/libvorbis.so: libvorbis-1.2.0
        cd libvorbis-1.2.0 && ./configure && make && sudo make install


# libxvid
xvidcore-1.2.1.tar.gz:
        wget http://downloads.xvid.org/downloads/xvidcore-1.2.1.tar.gz

xvidcore-1.2.1: xvidcore-1.2.1.tar.gz
        tar xvf xvidcore-1.2.1.tar.gz

/usr/local/lib/libxvidcore.4.so: xvidcore-1.2.1
        cd xvidcore-1.2.1/build/generic && ./bootstrap.sh && ./configure --disable-assembly && make && sudo make install

ffmpegが入ったら
ldconfigの修正
/etc/ld.so.conf

に/usr/local/libを追記
sudo /sbin/ldconfigして適用
/sbin/ldconfig -vで/usr/local/libが含まれていればOKだと思う。


一応手動でmakeを繰り返しinstallまではできたのでたぶん大丈夫。

なんでたぶん動くかというとESXiでインストールする前のスナップショットを取った状態に戻そうとしたんだけど
CPUを換装したのを忘れていてCPU情報が違うとエラーはいてCentOSが死亡しました。