Linux(CentOS)にFFmpegをインストールしたメモ

動画をアップロードすると変換してくれるサーバーを作りたくて、LinuxFFmpegを入れてみた。以下はその作業メモ。結構めんどくさかったし、いくつかハマった。

今回の環境は、かなり最小構成でインストールしたCentOS 5.2。gccとかは入ってる。

作業の流れ

以下、ひとつずつやっていく。

LAME

いきなりハマるポイントがこのLAME。現時点で配布されてるソースコードの最新版は3.98.2なんだけど、これをFFmpegで使うと、

lame: output buffer too small

のエラーになる。なので、まだパッケージで配布されてない開発中のソースコードcvsから取ってきてそれをコンパイルする。これだとエラーにならなかった。

# cd /usr/local/src
# cvs -d:pserver:anonymous@lame.cvs.sourceforge.net:/cvsroot/lame login
(パスワードを聞かれるので、そのままenter)
# cvs -z3 -d:pserver:anonymous@lame.cvs.sourceforge.net:/cvsroot/lame co -P lame
# cd lame
# ./configure
# make
# make install

つまりcvs版ではもうこの問題は直ってるので、次に配布されるバージョンからはもう大丈夫な可能性が高い。これをあなたが読んでる時点で、配布されているコードが3.98.2よりも新しいものだったら、普通にwgetで入手してmakeすれば良いんじゃないかと思う。

OpenCORE-AMR

そして次のこのAMRもハマった。Webで調べた情報では、amrnbとamrwbを入れるような説明が多くあったけど、最新のFFmpegはそれではなくてOpenCORE-AMRの方を使うのが良いようだった。なのでそっちを入れる。

まず、http://sourceforge.net/projects/opencore-amr/で最新版のURLをメモっておく。

# cd /usr/local/src
# wget (メモったURL)
# tar zxf opencore-amr-0.1.2.tar.gz
# cd opencore-amr-0.1.2
# ./configure
# make
# make install

FAAC / FAAD2

最初にhttp://www.audiocoding.com/downloads.htmlでダウンロード用のURLをメモっておく。今回はtar.gzにした。

# cd /usr/local/src
# wget (メモったFAACのURL)
# tar zxf faac-1.28.tar.gz
# cd faac-1.28
# ./configure
# make
# make install
# cd /usr/local/src
# wget (メモったFAAD2のURL)
# tar zxf faad2-2.7.tar.gz
# cd faad2-2.7
# ./configure
# make
# make install

x264

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/でダウンロード先のURLをメモっておく。毎晩新しくなっていて、どれを選んでいいかわからないので、とりあえず一番新しいやつにした。

# cd /usr/local/src
# wget (メモったURL)
# tar jxf x264-snapshot-20091216-2245.tar.bz2
# cd x264-snapshot-20091216-2245
# ./configure --enable-pthread --enable-shared --disable-asm
# make
# make install

Xvid

例によってhttp://www.xvid.org/Downloads.43.0.htmlでダウンロード先のURLをメモっておく。とりあえずtar.gzで。

# cd /usr/local/src
# wget (メモったURL)
# tar zxf xvidcore-1.2.2.tar.gz
# cd xvidcore/build/generic
# ./configure
# make
# make install

xvidcoreのディレクトリに入ってもソースがなくて一瞬あせったけど、build/genericの下にあった。

FFmpeg

いよいよ本体。yumでも入るらしいけどここまで来たのでソースから入れる。http://ffmpeg.org/download.htmlを開いて「bare sources」っていうリンクのURLをメモる。

# cd /usr/local/src
# wget (メモったURL)
# tar jxf ffmpeg-export-snapshop.tar.bz2
# cd ffmpeg-export-2009-12-15
# ./configure --enable-gpl --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxvid --disable-ffplay --disable-ffserver --enable-libfaac --enable-libfaad --enable-libx264 --enable-shared --enable-nonfree --enable-version3
# make
# make install

今回入れたライブラリ達もちゃんと使うような感じでコンパイルした。マシンスペックにもよるけど、自分の環境ではこのmakeは結構長かった。

利用のための準備

インストールは終わったけど、まだやることがある。

ライブラリのパス

まず、以下のファイルを編集する。

# vi /etc/ld.so.conf.d/local.conf

以下のように記入。

/usr/local/lib

次のコマンドを実行。

# ldconfig

正直、Linux初心者すぎて、上記の作業がなんなんだかわかんなかった。ググったらあちこちに書いてあったのでマネしただけ。

起動してみる

試しにFFmpegを起動してみる。オプションなしで。

# ffmpeg

これで「Permission denied」のエラーになったら、それはSELinuxがブロックしているかららしい。なので、許可を出してあげる。

# chcon -t texrel_shlib_t (エラーになったライブラリのパス)

そしてまたFFmpegを起動してみて、エラーになったらそのライブラリへの許可を出して...の作業を、エラーがなくなるまで繰り返す。

エラーが出ないで無事にFFmpegコマンドの実行結果が出たら、インストール完了。あとはユーの好きに動画を変換しちゃいなよ。

終わり

途中で結構ハマったけど、なんとか無事に終わって良かったー。ググりまくった。