Kubuntu 8.10でPSP用動画の変換 その1

Kubuntu 8.10でPSP用の動画を変換するための方法. 後で考えてみればこんなことしなくてもsudo apt-get install ffmpegでよかった気もするが...
情報は以下のサイトから.

http://po-ru.com/diary/up-to-date-ffmpeg-on-ubuntu-hardy/
http://lists.mplayerhq.hu/pipermail/ffmpeg-user/2008-August/016729.html

リビジョン14946*1FFmpegをソースからコンパイルして入れる. まずはコンパイルに必要なライブラリを導入する.

sudo apt-get build-dep ffmpeg
sudo apt-get install libmp3lame-dev libfaad-dev libfaac-dev libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev libx264-dev libdts-dev libgsm1-dev subversion

次にFFmpegのレポジトリからソースをダウンロードする. 僕は/optディレクトリで作業することにしたが, 多分どこでも良い.

cd /opt
sudo svn co -r 14946 svn://svn.mplayerhq.hu/ffmpeg/trunk FFmpeg

このままコンパイルするとx264のライブラリのバージョンが古いためにconfigureが通らないのと, libavformat/udp.cのコンパイルが通らないので修正パッチをあてる.

Index: libavcodec/utils.c
===================================================================
--- libavcodec/utils.c	(revision 14946)
+++ libavcodec/utils.c	(working copy)
@@ -439,9 +439,6 @@
 {"zero", "zero motion estimation (fastest)", 0, FF_OPT_TYPE_CONST, ME_ZERO, INT_MIN, INT_MAX, V|E, "me_method" },
 {"full", "full motion estimation (slowest)", 0, FF_OPT_TYPE_CONST, ME_FULL, INT_MIN, INT_MAX, V|E, "me_method" },
 {"epzs", "EPZS motion estimation (default)", 0, FF_OPT_TYPE_CONST, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method" },
-{"esa", "esa motion estimation (alias for full)", 0, FF_OPT_TYPE_CONST, ME_FULL, INT_MIN, INT_MAX, V|E, "me_method" },
-{"tesa", "tesa motion estimation", 0, FF_OPT_TYPE_CONST, ME_TESA, INT_MIN, INT_MAX, V|E, "me_method" },
-{"dia", "dia motion estimation (alias for epzs)", 0, FF_OPT_TYPE_CONST, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method" },
 {"log", "log motion estimation", 0, FF_OPT_TYPE_CONST, ME_LOG, INT_MIN, INT_MAX, V|E, "me_method" },
 {"phods", "phods motion estimation", 0, FF_OPT_TYPE_CONST, ME_PHODS, INT_MIN, INT_MAX, V|E, "me_method" },
 {"x1", "X1 motion estimation", 0, FF_OPT_TYPE_CONST, ME_X1, INT_MIN, INT_MAX, V|E, "me_method" },
Index: libavcodec/libx264.c
===================================================================
--- libavcodec/libx264.c	(revision 14946)
+++ libavcodec/libx264.c	(working copy)
@@ -220,8 +220,6 @@
         x4->params.analyse.i_me_method = X264_ME_UMH;
     else if(avctx->me_method == ME_FULL)
         x4->params.analyse.i_me_method = X264_ME_ESA;
-    else if(avctx->me_method == ME_TESA)
-        x4->params.analyse.i_me_method = X264_ME_TESA;
     else x4->params.analyse.i_me_method = X264_ME_HEX;
 
     x4->params.analyse.i_me_range = avctx->me_range;
Index: libavcodec/avcodec.h
===================================================================
--- libavcodec/avcodec.h	(revision 14946)
+++ libavcodec/avcodec.h	(working copy)
@@ -386,7 +386,6 @@
     ME_HEX,         ///< hexagon based search
     ME_UMH,         ///< uneven multi-hexagon search
     ME_ITER,        ///< iterative search
-    ME_TESA,        ///< transformed exhaustive search algorithm
 };
 
 enum AVDiscard{
===================================================================
--- configure   (revision 14946)
+++ configure   (working copy)
@@ -1852,6 +1852,9 @@
  check_cflags -Wwrite-strings
  check_cflags -Wtype-limits
  enabled extra_warnings && check_cflags -Winline
+check_cflags -std=c99
+check_cflags -fasm
+check_cflags -D_BSD_SOURCE

  # add some linker flags
  check_ldflags -Wl,--warn-common

これで準備は整ったのであとはビルド. 適宜, sudoが必要かもしれない.

./configure --enable-gpl --enable-postproc \
--enable-libvorbis --enable-liba52 --enable-libdc1394 \
--enable-libgsm --disable-debug --enable-libmp3lame \
--enable-libfaad --enable-libfaac --enable-libxvid \
--enable-pthreads --enable-libx264 \
--prefix=/usr/local
make
make install

これでffmpegコマンドが/usr/local/binに作成される.

*1:最新じゃないけれど動いているからまあ良いか.