Ubuntu 10.04でffmpegコンパイル

ffmpegで動画変換をやろうと思ったが、Ubuntu は、ライセンスに厳密なので、Non-free なものは公式には含まれない。

そう言えば、motion でmpegムービーを記録しようとして、できなかった時に

libavcodec-unstripped-52
libavformat-extra-52
libavformat-unstripped-52
libavutil-unstripped-49
libswscale-extra-0
libswscale-unstripped-0

を入れたらできるようになったが、ffmpegで、3GPをmpegに変換するのができない。

そこで、ffmpegをコンパイルしてみた。

◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆
ここで行う事は、Ubuntuの提供するパッケージ管理機能に重大な影響を与えます。
自分でセキュリティホールの対処、バージョン管理ができない場合は、クラックされたりする危険があります。また、ここに書かれた事を実施した結果、PCが再起不能に陥ったとしても、わしは一切の責任を負いません。
◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆◆Caution◆

まず、ffmpeg野良ビルドする為に、開発系パッケージが必要なので、できるだけSynaptic パッケージ・マネージャで入れられるものを入れる。

libdirac-decoder0
libdirac-dev
libfaac-dev
libgsm1-dev
libmp3lame-dev
libopencore-amrnb-dev
libopencore-amrwb-dev
libspeex-dev
libtheora-dev
libxvidcore-dev
libdc1394-22-dev
libraw1394-dev

libvpxはパッケージに無いので、
http://code.google.com/p/webm/downloads/list から
libvpx-0.9.1.tar.bz2 を取得。

tar xvjf libvpx-0.9.1.tar.bz2
cd libvpx-0.9.1
./configure
make
sudo make install

libnutもパッケージに無く、x264はバージョンが古いと言われるので、

svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut
cd libnut&&make
sudo make install

git clone git://git.videolan.org/x264.git
cd x264/
./configure
make
sudo make install

で、やっとffmpeg で configure ができる。ffmpegのコンパイルの参考サイト(後述)では、patchを当てているけど、マンドクセので当てない 🙂

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure –enable-gpl –enable-nonfree –enable-pthreads –disable-debug –disable-ffserver –disable-ffplay –enable-libdirac –enable-libschroedinger –enable-libdc1394 –enable-libfaac –enable-libgsm –enable-libmp3lame –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-zlib –enable-bzlib –enable-libopenjpeg –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-version3 –enable-libnut –enable-libspeex –enable-libvpx –enable-avfilter –enable-avfilter-lavf
make
sudo make install

ffmpeg は –prefix 指定しないと、 /usr/local/bin にインストールされるが、

noizumi@purplecat:~$ echo $PATH
/home/noizumi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

と、/usr/local の方が優先されるので、Ubuntuのパッケージと同居は可能。
ちなみに、パッケージのffmpegを削除しようとしたら、zoneminderが道連れにされるので、削除してない。

で、動画変換をやってみると、
ffmpeg -y -i MOL003.3GP -acodec libmp3lame test.mpg

[mpeg1video @ 0xa317670] MPEG1/2 does not support 15/1 fps

15fpsはmpegに変換できないのか。
エラーが赤表示で分かりやすい。

一応、パッケージのffmpegでも同じパラメータでやってみると、
/usr/bin/ffmpeg -y -i MOL003.3GP -acodec libmp3lame test.mpg

[mpeg1video @ 0x8186150]MPEG1/2 does not support 15/1 fps

結果は同じ。
うーむ…。凝ったエンコードしないなら、ffmpegコンパイルしなくても、libavcodec-unstripped-52入れた程度で良さそう。

参考にしたぺいづ
http://ubuntu.futene.net/build/ffmpeg.htm

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