手元の環境で VP6 エンコード

いまどき H264 でエンコードすればいいのだが、なんとなくがんばってみた
x86 64 (amd64) な FreeBSD では mencoder が win32 dll を使えない(と MPlayer の configure 時に表示される)のでダメ
Intel MacMac OS X では出来るらしいのに... → http://tmkk.hp.infoseek.co.jp/vp6/ とりあえず今回は Mac では試してない
IA-32Linux 環境(CentOS 5.4)があるのでそちらでチャレンジ

参考になったページ

試行錯誤の経過覚え書き(要点のみ)

  • MPlayerLinux 用パッケージは RPM Fusion から提供されているので RPM Fusion を yumリポジトリに追加
  • sudo yum install mencoder
  • http://www.mplayerhq.hu/MPlayer/releases/codecs/ から all-20100303.tar.bz2 を取ってきて展開、中身を /usr/lib/codecs にコピー
  • とりあえず 1 pass のエンコードmencoder -o hoge.flv -oac mp3lame -ovc vfw -xvfwopts codec=vp6vfw.dll -of lavf -lavfopts format=flv -vf flip hoge.avi でできた
  • 以下 2 pass エンコードのために必要なこと
  • vfw2menc を作るために MPlayer の source snapshot を取ってくる
  • vfw2menc を作るのに必要なので sudo yum install wine-devel
  • mplayer のソースの TOOLS ディレクトリで winegcc -o vfw2menc vfw2menc.c -lwinmm -lole32
  • コマンド vfw2menc はラッパーなのでコピーする時は vfw2menc.exe.so も一緒にコピー
  • ./vfw2menc -f VP62 -d /usr/lib/codecs/vp6vfw.dll -s pass1.mcf のようにして mcf ファイルを作る。なお、この時のエンコード設定はレジストリに保存される。WINE 環境の場合 ${HOME}/.wine/system.reg の中にあって Software\\On2 Technologies\\VFW Encoder/Decoder Settings\\VP62 というエントリである
  • で、2 pass エンコーディングを試してみるが、firstpass.fpf と firstpass.fpf.sst の出力がうまくいかない。この環境(CentOS 5.4)用のパッケージの menocoder は古いらしく、id:nazodane:20070307:1173271025 で指摘されている修正がまだされていない版のようだ
  • mencoder (と mplayer)を野良ビルドすることにする。まず sudo yum erase mplayer mencoder
  • /usr/lib/codecs を /usr/local/lib/codecs に sudo mv
  • mencoder で mp3 のエンコードができるようにビルドするのに lame-devel が必要なので sudo yum install lame-devel
  • mencoder のソースディレクトリで ./configure ; make ; sudo make install
  • pass1.mcf pass2.mcf を作成。コーデックライブラリの置き場所が変わっているので -d オプションに注意
  • pass 1 は mencoder -o hoge.flv -oac mp3lame -ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=pass1.mcf -of lavf -lavfopts format=flv -vf flip hoge.avi
  • pass 2 は mencoder -o hoge.flv -oac mp3lame -ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=pass2.mcf -of lavf -lavfopts format=flv -vf flip hoge.avi
  • pass 1 の中間データ firstpass.fpf と firstpass.fpf.sst は /tmp に生成される