2007-06-17

How do i encode ローゼンメイデン風アンパンマン

 恐らくは、いくらかの需要があるだろうと思い、ローゼンメイデン風アンパンマンを、高画質にエンコードする方法について書いてみる。  まず、この元ソースは、Flashだ。とりあえずソースを入手する。http://www.omosiro-flash.com/flash/anpanman.html  さて、これを何とかして、動画にしなければならない。Swf2Aviを使い、動画にする。FPSは12だ。さて、動画を得られたら、次は音声である。幸いにして、このFlashは単一のBGMを流しているだけなので、単にFlashを分解して、音声ファイルを取り出せばよろしい。ADPCMなので、mp3にエンコードする必要がある。  さて、動画のエンコードだ。動画を吟味すると、これは一見簡単そうに見える。なにしろ、ベタ塗りであるし、輪郭もはっきりしている。ところが、普通にエンコードすると、なぜか物凄く画質が悪くなってしまう。ビットレートが、指定したよりも大幅に下がってしまうのだ。これは、動画が12FPSだからだ。動画圧縮というのは、物凄く大雑把に言ってしまえば、キーフレームとその差分であるインターフレームで構成されるので、FPSが低いと、逆に不利になる。とくにVP6の場合、顕著である。従って、フレームレートを上げなければならない。ここは単純に、フレームを重複させるだけでいい。  つまり、mencoderでは、 -vf (いろんなフィルタ),harddup -fps 12 -ofps 24  としてやればいい。このharddupというフィルタは、単純かつ非常に役に立つ。フレームを重複させなければならないとき、nullフレームを挿入するのではなく、単純に前のフレームをそのまま使う。こうすれば、十分なFPSを確保でき、きれいにエンコードできる。

No comments: