MEncoderでh264を作成しよう
今回はエンコード編です。
軽量で高性能なmencoderを使って、最近流行り(?)のh264動画を作成します。
MEncoderについては、仕事で触る機会があったのですが、思ったより簡単に出来たため、自宅にも導入してみようと決意。
(最近は無駄に電力を食っているだけの)自鯖をHDDレコーダもどきにするために頑張って見ました。
キャプチャ自体は、数年前に3000円で購入したキャプチャカードが余っていたので、これを使用。チップはbt848なので、接続は簡単。
mplayer tv:// -v driver=v4l:device=/dev/video0:input=0
でちゃんと見れました。
あとは、CRONなどで自動にキャプチャして、待機中にエンコードさせればそこそこ高画質で録画できます。(mencoderで直接エンコードすることも出来ますか、サーバーのスペック自体は高くなく、かなりコマ落ちするので却下)
と言うことで、いざインストール!
まずは、ソースからコンパイル。
公式サイトからmplayerのソースを取得
MPlayer v1.0rc2 source
http://www.mplayerhq.hu/design7/dload.html
次に、x264のソースコード取得
http://www.videolan.org/developers/x264.html
ここから、daily tarballで、最新版取得します。
(以下、パスは適当なので適時読み替えてください)
取得できたら、
$ cd /usr/local/src/
$ tar jxf /path/to/x264-snapshot-20080406-2245.tar.bz2
$ cd x264-snapshot-20080406-2245
$ ./configure --prefix=/usr/local/x264 --enable-shared --enable-pthread
$ make
$ sudo make install
mplayerは、
$ cd /usr/local/src
$ tar jxf /path/to/MPlayer-1.0rc2.tar.bz2
$ ./configure --prefix=/usr/local/mplayer --with-extralibdir=/usr/local/x264/lib/ --with-extraincdir=/usr/local/x264/include
$ make
$ sudo make install
として、インストールしました。
意気揚々と、
$ /usr/local/mplayer/bin/mencoder
を実行すると・・・なぜかlibx264.so.59が見つからないと言うメッセージが・・・
configureを見直したり、いろいろやった挙句
$ sudo ln -s /usr/local/lib/libx264.so.59 /usr/lib
以上w
hoge@foobar:~$ /usr/local/mplayer/bin/mencoder -ovc help
MEncoder 1.0rc2-4.2.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Pentium(R) M processor 1.60GHz (Family: 6, Model: 13, Stepping: 6)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2
Available codecs:
copy - frame copy, without re-encoding. Doesn't work with filters.
frameno - special audio-only file for 3-pass encoding, see DOCS.
raw - uncompressed video. Use fourcc option to set format explicitly.
lavc - libavcodec codecs - best quality!
vfw - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.
qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.
xvid - XviD encoding
x264 - H.264 encoding
出来た!
試しにエンコードしてみます。(元ソースは、どこかのゲームのサンプルOPをry)
h264、1パス、約800Kbpsで。
/usr/local/mplayer/bin/mencoder -oac copy -of lavf -ovc x264 -x264encopts bitrate=800:frameref=6:me=umh:subme=7:trellis=2:analyse=i8x8:bframes=1:subq=7:brdo:mixed_refs:bime:weight_b:direct_pred=auto:mixed_refs -aspect 16:9 -noskip -lavfopts format=matroska hoge.avi -o piyo.mkv
これでとりあえずエンコード出来ました。
ファイルサイズは若干小さめに。20分で、117MBくらいに。
もっといいオプションがあるかもしれませんが、これでもそこそこ綺麗に出来ます。
これでHDDレコーダもどきに一歩近づきました。
ただ、ここの内容を実験したのは会社で開発に使っているノートですので、実際に自鯖で動くかどうかは分かり ません。
さあ・・・帰って実験しますか。