« iPhone 3Gファームアップ失敗 | トップページ | 真夏のオリオン »

2009年6月21日 (日)

CentOS5.3にffmpegを入れて使う

前回はHandBrakeの話を書いたけど,今回は予告通りffmpegのインストール.

私はffmpegを,HDなビデオカメラで撮影したAVCHDフォーマットのファイル(mts)を別形式へ変換する際に使用しています.例えば配布用のDVD-Videoを焼くために,mpeg2へトランスコードするために使用.

元々はこの作業はWindows上でTMPGEncTMPGEnc Authoring Works 4TMPGEnc 4.0 XPress辺りを購入して行おうと考えていたのですが,方針を変更してLinux上でffmpegを使用して行うことにしました.

ただし前回も書いた通り,ffmpegは非常に強力なツールである一方,ソースからライブラリやら環境を整えるのが結構面倒.昔,こういうことをするためにffmepegを使っていたけれど,当時も様々なcodecに対応させるのは結構手間でした.

で,今回はそれを一気に楽にする方法の紹介とffmpegの簡単な使用例について.

ご存知の通り,CentOS 5.3用のffmpegはrpmで公開されているものもあります.比較的安定指向の私がyumに登録しているリポジトリからは,2009年6月13日の時点で『ffmpeg-0.4.9-0.9.20070530.el5.rf』がインストール出来ました.

しかしこの版はAVCHDには対応していません.そしてlibx264もパッケージとして登録されていませんでした.

※最新の追っかけをしている所をyumのリポジトリとして登録すれば,AVCHDに対応した版が入るかもしれません.しかし,私は一度環境を壊してしまった後,安心な所のみに絞ってリポジトリを登録するようにしており,この点に関してはあまり調査していません.

昔ならtar ballで一つ一つ入れたと思うけど,他に楽な方法はないか調査.で,読んだ瞬間膝を打つような目から鱗な方法があり,さらにサンプルのファイルまで公開されていたので,これをベースに作業することにしました.Makefileに必要なことを全て記述しておき,あとはmakeするだけというもの.

よくよく考えれば類似のことは日常的によく行っているわけなんだけど,今回のような目的のために,これだけ綺麗にMakefileをまとめた物は見たことが無かった.

前振りが長くなりましたが,参考にしたのはこちらこちら.前者はMac,後者はCentOS5.2にこの手法でffmpegをインストールする方法について書かれたページです.

私が使用したファイルは基本的に後者と同じですが,ffmpegのconfigureパラメータを最新版に合わせて変更し,ライブラリが若干バージョンアップしているので最新版を引っ張るようにし,そして全てをインストールした後にshared libraryを構成するためにldconfigを入れました.

all: ffmpeg-repos /usr/local/lib/libfaad.so /usr/local/lib/liba52.la /usr/local/lib/libdirac_decoder.so /usr/local/lib/libfaac.so /usr/local/lib/libgsm.a /usr/local/lib/libamrnb.so /usr/local/lib/libamrwb.so /usr/local/lib/libmp3lame.so /usr/local/lib/libx264.a /usr/local/lib/libnut.a /usr/local/lib/libtheora.so /usr/local/lib/libvorbis.so /usr/local/lib/libxvidcore.4.so
        cd ffmpeg-repos && PKG_CONFIG_PATH=/usr/local/lib/pkgconfig sh configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-libamr-nb --enable-libamr-wb --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid && make && sudo make install&&ldconfig

# ffmpeg-repos
ffmpeg-repos:
        svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg-repos

# faad2
faad2-2.7.tar.gz:
        wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz

faad2: faad2-2.7.tar.gz
        tar xvfz faad2-2.7.tar.gz

/usr/local/lib/libfaad.so: faad2
        cd faad2-2.7 && sh ./bootstrap && ./configure && make && sudo make install

# liba52
a52dec-0.7.4.tar.gz:
        wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz

a52dec-0.7.4: a52dec-0.7.4.tar.gz
        tar xvfz a52dec-0.7.4.tar.gz

/usr/local/lib/liba52.la: a52dec-0.7.4
        cd a52dec-0.7.4 && ./configure && make && sudo make install

# libdirac
dirac-1.0.2.tar.gz:
        wget http://downloads.sourceforge.net/dirac/dirac-1.0.2.tar.gz

dirac-1.0.2: dirac-1.0.2.tar.gz
        tar xvfz dirac-1.0.2.tar.gz

/usr/local/lib/libdirac_decoder.so: dirac-1.0.2
        cd dirac-1.0.2 && ./configure && make && sudo make install

# faac
faac-1.28.tar.gz:
        wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz

faac: faac-1.28.tar.gz
        tar xvfz faac-1.28.tar.gz

/usr/local/lib/libfaac.so: faac
        cd faac-1.28 && sh ./bootstrap && ./configure && make && sudo make install

# libgsm
gsm-1.0.13.tar.gz:
        wget http://kbs.cs.tu-berlin.de/~jutta/gsm/gsm-1.0.13.tar.gz

gsm-1.0-pl13: gsm-1.0.13.tar.gz
        tar xvfz gsm-1.0.13.tar.gz
/usr/local/lib/libgsm.a: gsm-1.0-pl13
        cd gsm-1.0-pl13 && make && sudo cp lib/libgsm.a /usr/local/lib/ && sudo cp inc/gsm.h /usr/local/include/

# libamrnb
amrnb-7.0.0.2.tar.bz2:
        wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2

amrnb-7.0.0.2: amrnb-7.0.0.2.tar.bz2
        tar xvfj amrnb-7.0.0.2.tar.bz2

/usr/local/lib/libamrnb.so: amrnb-7.0.0.2
        cd amrnb-7.0.0.2 && ./configure && make && sudo make install

# libamrwb
amrwb-7.0.0.3.tar.bz2:
        wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2

amrwb-7.0.0.3: amrwb-7.0.0.3.tar.bz2
        tar xvfj amrwb-7.0.0.3.tar.bz2

/usr/local/lib/libamrwb.so: amrwb-7.0.0.3
        cd amrwb-7.0.0.3 && ./configure && make && sudo make install

# libmp3lame
lame-398-2.tar.gz:
        wget http://downloads.sourceforge.net/lame/lame-398-2.tar.gz

lame-3.98: lame-398-2.tar.gz
        tar xzf lame-398-2.tar.gz

/usr/local/lib/libmp3lame.so: lame-398-2
        cd lame-398-2 && ./configure && make && sudo make install

# libx264
x264:
        git clone git://git.videolan.org/x264.git

/usr/local/lib/libx264.a: x264
        cd x264 && ./configure && make && sudo make install

# libnut
libnut:
        svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut

/usr/local/lib/libnut.a: libnut
        cd libnut && make && sudo make install

# libogg
libogg-1.1.3.tar.gz:
        wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz

libogg-1.1.3: libogg-1.1.3.tar.gz
        tar xvf libogg-1.1.3.tar.gz

/usr/local/lib/libogg.so: libogg-1.1.3
        cd libogg-1.1.3 && ./configure && make && sudo make install

# libtheora
theora:
        svn co http://svn.xiph.org/trunk/theora theora

/usr/local/lib/libtheora.so: theora /usr/local/lib/libogg.so
        cd theora && ./autogen.sh && ./configure && make && sudo make install


# libvorbis
libvorbis-1.2.0.tar.gz:
        wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz

libvorbis-1.2.0: libvorbis-1.2.0.tar.gz
        tar xvfz libvorbis-1.2.0.tar.gz

/usr/local/lib/libvorbis.so: libvorbis-1.2.0
        cd libvorbis-1.2.0 && ./configure && make && sudo make install


# libxvid
xvidcore-1.2.1.tar.gz:
        wget http://downloads.xvid.org/downloads/xvidcore-1.2.1.tar.gz

xvidcore-1.2.1: xvidcore-1.2.1.tar.gz
        tar xvf xvidcore-1.2.1.tar.gz

/usr/local/lib/libxvidcore.4.so: xvidcore-1.2.1
        cd xvidcore/build/generic && ./bootstrap.sh && ./configure --disable-assembly && make && sudo make install

yumでGityasmをインストールした後,上記内容のMakefileを作成し,あとはmakeを実行すればOK.ざーっと必要なことが自動で実行され,どこかでビルドに失敗していなければ,/usr/local/bin/ffmpegが使えるようになります.


次に今回インストールしたffmpegを使用し,『AVCHDファイル(mts)からDVD-Videoに焼くためのMPEG2ファイルを作成する』方法ですが,私は次のような感じで行っています.

ffmpeg -i 00000.MTS -target ntsc-dvd -ab 128k -aspect 20:11 -s 720x480 out.mpg

aspect(アスペクト比)に関して少し補足説明をすると,DVDで使用されているSDのスクイーズのPAR(Pixel Aspect Ratio)は40:33になります.そしてソースの16:9のままで720*480で出力したい場合,ここに設定すべきアスペクト比は,720*40:480*33 = 28800:15840 = 20:11となります.16:9と指定してもそれ程大きく変わらないので,パット見で違いは分かりにくいかもしれませんが…

この他にもクロップやリサイズして4:3にしたり等,色々と他にも方法はあると思います.パラメータは好みで.

|

« iPhone 3Gファームアップ失敗 | トップページ | 真夏のオリオン »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198640/45397012

この記事へのトラックバック一覧です: CentOS5.3にffmpegを入れて使う:

« iPhone 3Gファームアップ失敗 | トップページ | 真夏のオリオン »