備忘録

いつも忘れてしまうので、今度こそやったことをメモする。
ffmpegをお客さんの要望でサーバーにぶっこんだわけだが、色々勉強することもあったのでメモっておく。今回は後でお客さんがいじれるように、ユーザー権限のみでインストールしてみた。(gcc除く)

CentOS4だったのでデフォルトはgcc3なんだけど、これで作るとバイナリはきちんとできるんだが、Segmentation Faultでうまく動かなかった。
yumでインストールする場合は

# yum install gcc4 gcc4-c++ gcc4-java libgcj4

こんな感じで。ソースから入れてもいいけどものすごく準備に手間がかかるのでバイナリパッケージでいいんじゃないの。

  • 必要なライブラリ等の準備

subversionとかcvsなんかはソースインストールする際にはとても大事なので入れておこう。
今回は、音声コーデック、デコーダlame mp3,ogg vorbis,liba52,faac,faad2 動画コーデックはxvidとx264をチョイス。

  • 音声codec, decodec

音声のライブラリは比較的インストールが容易な感じ。

lame本家のダウンロードからソースを落としてきて

$ tar xzf lame-3.97.tar.gz
$ cd lame-3.97
$ ./configure --prefix=/home/hoge/local/
$ make
$ make install
$ export LD_LIBRARY_PATH=/home/hoge/local/lib

最後に自分専用のライブラリのPATHをLD_LIBRARY_PATHに放り込んであげる。これが後々重要。

vorbis本家ダウンロードからliboggとlibvorbisのソースを落としてくる。
コンパイルはliboggが先で。

$ tar xzf libogg-1.1.3.tar.gz
$ cd libogg-1.1.3
$ ./configure --prefix=/home/hoge/local/
$ make
$ make install

$ tar xzf libvorbis-1.2.0.tar.gz
以下略
    • faac,faad2

aacのフリーのコーデックとデコーダーです。audio coding.comからsourceforgeのソースをいただいてくる。昔は改行コードなんかがおかしくて、bootstrap走らすとエラーが出たようですが、今のバージョンは普通に動きました。

$ tar xzf faac-1.26.tar.gz
$ cd faac-1.26
$ ./bootstrap
$ ./configure --prefix=/home/hoge/local/
$ make
$ make install

$ tar xzf faad2-2.6.tar.gz
以下略
    • liba52

liba52本家からこれまたsourceforgeに行って落としてくる。以下略

  • 動画コーデック

xvid本家からありがたく頂いたソースを普通にビルドする。

    • x264

x264本家で落としてくるよりは、svnで最新をとってくるのがよさげな感じ。

$ mkdir repos
$ cd repos
$ svn co svn://svn.videolan.org/x264/trunk x264

個人的にsvnで採ってきたソースをそのままmakeするのは好きじゃないので

$ cp -ar x264 x264-nightly
$ cd x264-nightly
$ ./configure --enable-shared --prefix=/home/hoge/local

んで、ここでyasmがないよーとか言われるんであわててyasm本家にいくとtracで管理してるので、当然svnが使えて

$ svn co http://www.tortall.net/svn/yasm/trunk/yasm yasm
$ cp -ar yasm yasm-nightly
$ cd yasm-nightly
$ ./autogen.sh
$ ./configure --prefix=/home/hoge/local
$ make && make install

$ cd x264-nightly
$ ./configure --enable-shared --prefix=/home/hoge/local
$ make && make install

こんな感じで大体いけるはず。

最後にffmpegのソースをsvnで取ってきて、ビルド。

$ cd repos
$ svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
$ cp -ar ffmpeg ffmpeg-nightly
$ cd ffmpeg-nightly
$ CC=gcc4 TMPDIR=/home/hoge/var/tmp ./configure --enable-pthreads --enable-liba52 --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libx264 --enable-libxvid --enable-gpl --enable-shared --prefix=/home/hoge/local
$ make
$ make install

CCをgcc4に設定して、tmpディレクトリを指定(うちのサーバではtmpでファイルが実行できないようにしてあるので)、今まで入れた奴を全部enableにしてあげる。

仕事PCからだと手持ちにサンプルがほとんど無いのであんまり確かめられないけど、一応ニコニコ動画から携帯向け3gpへの変換とかできるんで、成功したことにしておこう。