kenanのブログ

闘病生活

0から始めるDebianでのffmpegインストール

とりあえずエンコードもできているようなので書く。

ほぼなにも入れてない状態のDebianから始めることを前提。

コンパイルに必要なパッケージのインストール

$ sudo aptitude install gcc g++ bzip2 unzip subversion git-core make automake libtool libtheora-dev pkg-config

Gitの初期設定
gitコマンドを打つとなんかでてくるので
とりあえずEnterを押したあと

$ sudo update-alternatives --config git

を入力。
選択肢が1と2と出てくるので2を選択。
これでGitは使えるようになる。

次にyasmを入れる。

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

Makefileを以下のように作成。
エンコードとかしないよ!という人は
configureのオプションに--disable-ffserverや--disable-ffplayを追加してもいいかも。

修正 09/01/29

ライブラリの指定がMac用で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 --enable-decoder=libx264 --enable-encoder=libx264 && 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-1.0.0.tar.gz:
	wget http://downloads.sourceforge.net/dirac/dirac-1.0.0.tar.gz

dirac-1.0.0: dirac-1.0.0.tar.gz
	tar xvfz dirac-1.0.0.tar.gz

/usr/local/lib/libdirac_decoder.so: dirac-1.0.0
	cd dirac-1.0.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 jxf 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 jxf 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-398-2.tar.gz:
	wget http://downloads.sourceforge.net/lame/lame-398-2.tar.gz

lame-398-2: lame-398-2.tar.gz
	tar xzf lame-398-2.tar.gz

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

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

/usr/local/lib/libx264.a: x264
	cd x264 && ./configure --enable-shared && 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/build/generic && ./bootstrap.sh && ./configure --disable-assembly && make && sudo make install

makeを実行
/etc/ld.so.confの一番下に

/usr/local/lib

を追加。

$ sudo /sbin/ldconfig

でインストールしたライブラリを適用。

ffmpegを実行すれば

$ ffmpeg
FFmpeg version SVN-r16142, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --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 --enable-decoder=libx264 --enable-encoder=libx264
  libavutil     49.12. 0 / 49.12. 0
  libavcodec    52. 6. 3 / 52. 6. 3
  libavformat   52.23. 1 / 52.23. 1
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 1. 0 /  0. 1. 0
  libswscale     0. 6. 1 /  0. 6. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Dec 16 2008 11:02:36, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
At least one output file must be specified

こんな感じになってるはず。
まあffmpegとか頻繁にソースが変わってるので明日には使えなくなってるかもしれませんね。
あと、同様に実行しても同じ結果になるとは限らないので要注意。