備忘録
いつも忘れてしまうので、今度こそやったことをメモする。
ffmpegをお客さんの要望でサーバーにぶっこんだわけだが、色々勉強することもあったのでメモっておく。今回は後でお客さんがいじれるように、ユーザー権限のみでインストールしてみた。(gcc除く)
- コンパイルはgcc4で
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 mp3
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
こんな感じで大体いけるはず。
$ 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への変換とかできるんで、成功したことにしておこう。