録画MPEG2動画をDivXにコンコード

うちのLinuxマシンは、内輪向けWebサーバ+家庭内ファイルサーバ+ダウンロードサーバ+TV予約録画サーバ として働いているのですが、一年前に買った150Gのハードディスクも残り10Gほどに。
そこで、TVを録画したMPEG2動画をDivX+MP3にエンコードして容量を圧縮しようと思い立つ。TVの録画には玄人指向のハードウェアMPEG2エンコーダ搭載TVチューナカードITVC16-STVLPを、ここを参考に使っている。予約システムは自作CGI。インターネットTVガイドから拾ってきたデータを勝手に使っているので公開はできないが、番組表から選ぶだけでいいので使い勝手はいい(予約済み番組の確認とか取り消しを実装していないのが、中途半端なところ・・・)。
で、本日の本題。これまでは、ハードウェアエンコードされたMPEG2をそのまま保存していたが、DivX+MP3でエンコードしようかな、と。マシンスペック(CPU:K6 500MHz)的にリアルタイムエンコードはきついので、MPEG2で録画完了後にエンコードを開始させる予定。
最初は既にインストールされていたffmpegでのエンコードを試した。が、音声のコーデックにmp3を指定するとsegfaultで落ちる。原因を探るのも面倒なので次。
mencoderでのエンコードがいい感じ。インストールされていなかったので、DivXlameと共にソースから導入。以下、手順を簡単にメモ。

  1. DivXコーデックのインストール

http://www.divx.com/divx/linux/からダウンロードして、解凍、install.sh実行。バージョンは5.0.5(divx4linux-std-20030428.tar.gz)。

  1. Lameのインストール

http://lame.sourceforge.net/からダウンロードして、configure、make、make install。バージョンは3.96.1。

  1. Mplayerのインストール(mencoderMPlayerの一部)

http://www.mplayerhq.hu/homepage/design7/dload.htmlからダウンロードして、configure --enable-mp3lame、make、make install。バージョンは1.0pre6a。

今のところ、以下のオプションでエンコード。特に画質にはこだわっていないが、そこそこの画質だと思う。-vf pp=lbのインターレス除去は必須ですな。

mencoder in.mpg -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=2000 -vf scale=640:480,pp=de/lb/tn -ofps 29.97 -oac mp3lame -lameopts cbr:br=224 -o out.avi

あとは、録画完了後に順次エンコードを開始するように録画予約CGIを改造して完了。