まとめindex
最新のトピック
KEYWORDS
CentOSでホームサーバー エンコード編
2012/05/01
地デジを録画してtsファイルが作成できたら、これをエンコードして、iPadやAndroidで見られるようにします。サイズも小さくなって、外に持ち出すのが非常に楽になります。
このエンコードを行うには、色々なプログラムを持ってこなくてはいけません。軸となるのはffmpegとMP4Boxですが、これだけで何とかしようとすると音がズレたり、機種によって再生出来ないものが出来上がったりと、色々な試行錯誤が必要でした。結果として、下のような方式にたどり着きました。正解は1つではないです。もっと良い方法はあると思います。大雑把な性格ゆえ、ここまで出来れば満足かなと思っています。
まず、必要なライブラリを集めます。faad, faac, libx264が必要です。yumに無いので、自分で構築する必要があります。
■faad
# wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.bz2
# tar jxvf faad2-2.7.tar.bz2
# cd faad2-2.7
# ./configure
# make
# make install
# tar jxvf faad2-2.7.tar.bz2
# cd faad2-2.7
# ./configure
# make
# make install
■faac
# wget http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
# tar jxvf faac-1.28.tar.bz2
# cd faac-1.28
# ./configure --without-mp4v2 # mp4v2でどうもエラーが出る。使わないので除く
# make
# make install
# tar jxvf faac-1.28.tar.bz2
# cd faac-1.28
# ./configure --without-mp4v2 # mp4v2でどうもエラーが出る。使わないので除く
# make
# make install
■libx264
# libx264 は yasm を使うので、まず yasm を落としてきてインストールする
#
# wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
# tar zxvf yasm-1.2.0.tar.gz
# cd yasm-1.2.0
# ./configure
# make
# make install
# libx264 の構築
#
# wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
# tar jxvf last_x264.tar.bz2
# cd x264-snapshot-20120426-2245
# ./configure --enable-static --enable-pic --enable-shared
# make
# make install
#
# wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
# tar zxvf yasm-1.2.0.tar.gz
# cd yasm-1.2.0
# ./configure
# make
# make install
# libx264 の構築
#
# wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
# tar jxvf last_x264.tar.bz2
# cd x264-snapshot-20120426-2245
# ./configure --enable-static --enable-pic --enable-shared
# make
# make install
ライブラリが揃ったところで、「ldconfig /usr/local/lib」をやっておきましょう。また、 /etc/ld.so.conf.d/local_lib.conf を作成しておき、起動時に /usr/local/lib の中身を有効にしておきます。
echo "/usr/local/lib" > /etc/ld.so.conf.d/local_lib.conf
次に、ffmpeg, MP4Box, mplayer, NeroAAC を入れます。
■ffmpeg
# wget http://ffmpeg.org/releases/ffmpeg-0.10.2.tar.bz2
# tar jxvf ffmpeg-0.10.2.tar.bz2
# cd ffmpeg-0.10.2
# ./configure --enable-static --enable-pic --enable-shared --enable-libx264 --enable-libfaac --enable-gpl --enable-nonfree --enable-pthreads
# make
# make install
# tar jxvf ffmpeg-0.10.2.tar.bz2
# cd ffmpeg-0.10.2
# ./configure --enable-static --enable-pic --enable-shared --enable-libx264 --enable-libfaac --enable-gpl --enable-nonfree --enable-pthreads
# make
# make install
■mplayer
# wget ftp://ftp.mplayerhq.hu/MPlayer/releases/mplayer-export-snapshot.tar.bz2
# tar jxvf mplayer-export-snapshot.tar.bz2
# cd mplayer-export-2012-04-27
# ./configure
# make
# make install
# tar jxvf mplayer-export-snapshot.tar.bz2
# cd mplayer-export-2012-04-27
# ./configure
# make
# make install
■MP4Box
# svn co https://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac gpac
# cd gpac
# ./configure
# make
# make install
# cd gpac
# ./configure
# make
# make install
■NeroAAC -- ここから ダウンロードしてください。中にlinux版バイナリが入っています
# ライブラリが足りないので入れる
# yum -y install ld-linux.so.2
# yum -y install libstdc++.so.6
# cp neroAac* /usr/local/bin
# yum -y install ld-linux.so.2
# yum -y install libstdc++.so.6
# cp neroAac* /usr/local/bin
ここまでくれば、基本的なエンコード環境は整いました。あとは以前のffmpegのバージョンで存在したプリセットが無くなっていたので、これを追加したぐらいです。
# /usr/local/share/ffmpeg/libx264-hq.ffpreset
coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=8
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=2
qcomp=0.6
qmin=10
qmax=51
qdiff=4
bf=3
refs=4
directpred=3
trellis=1
flags2=+wpred+mixed_refs+dct8x8+fastpskip
wpredp=2
これでエンコードする環境は整いました。coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=8
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=2
qcomp=0.6
qmin=10
qmax=51
qdiff=4
bf=3
refs=4
directpred=3
trellis=1
flags2=+wpred+mixed_refs+dct8x8+fastpskip
wpredp=2
実際のエンコード内容は以下のエントリを参考にしてください。
Ivy Bridgeで動画エンコード1
Ivy Bridgeで動画エンコード2
ツイート