手元の環境で VP6 エンコード
いまどき H264 でエンコードすればいいのだが、なんとなくがんばってみた
x86 64 (amd64) な FreeBSD では mencoder が win32 dll を使えない(と MPlayer の configure 時に表示される)のでダメ
Intel Mac の Mac OS X では出来るらしいのに... → http://tmkk.hp.infoseek.co.jp/vp6/ とりあえず今回は Mac では試してない
IA-32 な Linux 環境(CentOS 5.4)があるのでそちらでチャレンジ
参考になったページ
- id:nazodane:20070307:1173271025
- http://proof.exblog.jp/5884342/
- http://cpplover.blogspot.com/2007/05/how-do-i-use-mencoder-for-two-pass.html
試行錯誤の経過覚え書き(要点のみ)
- MPlayer の Linux 用パッケージは 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 に生成される