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*1のFFmpegをソースからコンパイルして入れる. まずはコンパイルに必要なライブラリを導入する.
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:最新じゃないけれど動いているからまあ良いか.