x264.exe

優太さんの動画 ( http://d.hatena.ne.jp/janus_wel/20100204/1265289507 ) を encode するのに今まで XviD を使ってたんだけど久しぶりで codec まわりも進化しているだろうしせっかくだから H.264 に切り替えようと思っていろいろやってみた結果。

とりあえず動画編集 software で encode する際に指定できる形式があったよなと思って探してみたら x264vfw という名前みたいなんだけど今はもう公式じゃ配布してない + 有志の方による配布 site も久しく更新されてないという状況で。でまぁ公式探してみたんだけど Windows でどうこうできる形式のものが見あたらないのであれーと思いつついろいろ見てたら wikipedia ( http://ja.wikipedia.org/wiki/X264#.E5.A4.96.E9.83.A8.E3.83.AA.E3.83.B3.E3.82.AF ) 経由で binary 配布 site ( http://x264.nl/ ) というのを見つけたので check 。そしたら exe 形式の encoder を配布されている方 ( top domain や compile time を見るとオランダの方 ? ) の page だった。

でまぁこれをいただいてきて使う、というのでも良かったんだけど公式が source しか提供してない -> 自前で compile しやがれと受け取ったというのと久々に compile 欲が出たというのでやってみた。とりあえず Windows binary を作るための環境ということで MinGW と MSYS をいれて ( http://d.hatena.ne.jp/janus_wel/20100203/1265197628 ) 準備完了。以下 MSYS 付属の bash での作業時の log 。

  • pthread
    • http://sourceware.org/pthreads-win32/
    • configure と make install がない変則的な software
    • 最新の source ( とはいっても一番新しい file が 2006/12/22 ) pthreads-w32-2-8-0-release.tar.gz を頂戴してくる
    • tar xzvf pthreads-w32-2-8-0-release.tar.gz
    • cd pthread-w32-2-8-0-release
    • make clean GC
    • cp pthread.h sched.h semaphore.h /mingw/include/
    • cp pthreadGC2.dll /mingw/bin/
    • cp pthreadGC2.dll /mingw/bin/pthread.dll
    • cp libpthreadGC2.a /mingw/lib/
    • cp libpthreadGC2.a /mingw/lib/libpthreadGC2.dll.a
  • nasm
    • http://www.nasm.us/
    • git clone git://repo.or.cz/nasm.git
    • cd nasm
    • ./autogen.sh
    • ./configure --prefix=/mingw
    • make
    • make install
  • yasm
    • http://www.tortall.net/projects/yasm/
    • yasm-0.8.0.tar.gz を download ( svn checkout した場合 "configure" file の生成がうまくいかないのか make の段階で file が足りないとか言われる )
    • tar xzvf yasm-0.8.0.tar.gz
    • cd yasm-0.8.0
    • ./configure --prefix=/mingw
    • make
    • make install
  • zlib
    • http://www.zlib.net/
    • zlib-1.2.3.tar.gz ( 2005/06/18 時点のものが current らしい ) をいただく
    • tar xzvf zlib-1.2.3.tar.gz
    • cd zlib-1.2.3
    • ./configure --prefix=/mingw
    • make
    • make install
  • gpac
    • http://gpac.sourceforge.net/
    • gpac-0.4.5.tar.gz ( 2008/12 が最新 ) もらう
    • tar xzvf gpac-0.4.5.tar.gz
    • cd gpac
    • ./configure --prefix=/mingw
    • cp config.h include/gpac/internal/
    • make lib apps
    • make install
    • make install-lib
  • x264

とりあえずすべての software で "./configure" 時に "--prefix" option で "/mingw" を指定するというのが point 。 static link する file は MinGW 側にあるのでこうしないと通らない software もある。他は pthread の file copy は http://blog.tndl.net/2008/02/27/108 を参考にさせてもらったとか nasm を git から取ってきた場合は "autogen.sh" で "configure" file を作らないといけないとか gpac は "config.h" を copy してやらないと通らないとか "make" とだけ打つとかなり時間がかかるので "lib" と "apps" のみ make するといいとか x264 は compile 時に git を要求するんだけどなくても version の revision number が出ないだけで実質的に困らないとか細かいところを上げるといろいろある。

最後にうまくいったかどうかを Version とだけ書いた AviSynth file を食わせて test してみる -> x264.exe --output version.mp4 version.avs 。これで version.mp4 がちゃんと再生されて Ben Rudiak-Gould 氏の名前が拝めれば OK 。