2007-05-09

what is mplayer and mencoder and why i have to use them?

mplayerと、mencoderについて、説明を試みる。なお、これはニコニコ動画に動画をアップロードすることを前提に書いている。

mplayerとは、恐ろしく高機能な動画プレイヤーである。かなりの数の動画を再生できる。何がすごいのかというと、すべて自前でデコードしていることだ。しかし、もともとはLinux用のプログラムであり、Windowsで使う上では、必ずしも使い勝手や画質がいいとは言いがたい。基本はCUIである。ではなぜ、これがニコニコ動画にアップロードする上で、最適なのか。それは、mencoderの存在である。 mencoderは、mplayerとほぼおなじコマンドラインオプションを持っている。mplayerはプレイヤーであるし、mencoderはエンコーダーだ。 ニコニコ動画には、FLV形式の動画を直接アップロードできる。このとき、600kbpsで40MBの範囲に収まっていれば、再エンコードされずに、そのまま使われる。この制限は、かなり厳しい。

FLVというコンテナには、いくつかの動画形式を格納できるが、その中でも極めて、低ビットレートに置いても画質が優れているのが、On2 TecnologyのVP62だ。H263もそれなりにいいのだが、600kbps以下という厳しい制限では、VP62が圧勝してしまう。

さて、VP62にエンコードするには、ffmpegでエンコードするか、On2 Tecnologyのvfw(Video For Windows)コーデックである。vp6vfw.dllを使うしかない。ffmpegに実装されているエンコーダーはあまりよろしくないので、本家のvp6vfw.dllを使うことになる。mencoderは、それ自体で多数の動画形式へエンコードできるのだが、vfwコーデックを使うことも出来る。そのため、非常に使い勝手がいい。ちなみに、x86 Linuxで、Windowsのdllを使うために、非常に興味深いLoadLibraryの自前実装があるのだが、それはまた別の話。 それだけではない。mencoderは、その辺の安っぽい動画編集ソフトウェアよりも、よほど優れた動画編集能力を持っているのだ。まず、デコード、エンコードできる動画形式が多い。mpeg1/2/4はもちろんのこと、VOBなども問題ないし、ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT, NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVAと、有名どころの形式は、余すところなくサポートしている。ffmepgに感謝すべきか。 また、基本的なフィルタも有しており、上下左右反転や回転はもちろんのこと、スケーリング、アスペクト比変更、ブラックバンドの追加、ノイズ除去、フレームレートの変更(単純な脱落から、フレームの合成まで)、テレシネ、逆テレシネ、シャープ、ブラー、インターレス解除ができる。とくにインターレス解除やスケーリングは、かなり多数のアルゴリズムを使うことが出来る。ロゴの削除なる機能もあるが、これをまともに使うのは難しそうだ。

と、ここまで説明すると、「おいおい、なぜCUIな貧弱ツールでフィルタなど使わなければならないんだ。この俺が使っているクールでイージーでGUIなツールでフィルタをかけたほうがいいじゃないか」と言う人がいるかもしれない。CUIであることの利点は、自分でコードを書いて、簡単にバッチ処理ができたりすることもあるのだが、なによりすばやいことだ。複雑なGUIでは、あるフィルタをかけるためには、メニューからフィルタの適用を選択し、ダイアログから目的のフィルタを選んで、パラメータを指定しなければならなかったりする。mencoderでは、-vfオプションを使うだけで、簡単に指定できる。たとえば、512x384にスケーリングしたければ、

mencoder -vf scale=512:384

とすれば良いし、400x300にスケーリングして、黒帯をいれて中央に表示し、512x384にしたい場合は、

mencoder -vf scale=400:300,expand=512:384

とすればよい。また、インターレスをLinear blendで解除しつつ、512x384にスケーリングするには、

mencoder -vf pp=li,scale=512:384

となる。非常に簡単だ。ちなみに、フィルタは並んでいる順番で適用される。インターレス解除は、一番最初に行っておかないと、泣きを見ることになる。

また、「俺のクールでイージーなGUIツールには、フィルタのプレビュー機能があるぜ」という人もいるかもしれない。この点も問題はない。なぜならば、mplayerとmencoderは一心同体、mencoderのフィルタは、mplayerでも同様に使える。だから、mplayerでリアルタイムにフィルタをかけつつ再生して、効果を確かめることもできる。 とはいっても、最高に高画質を目指す人から見れば、mencoderのフィルタは貧弱かもしれない。しかし、私のように、多数の動画にたいして、ある程度の画質を維持しつつ、寝ている間にエンコードしたいという人間には、最適なのだ。

次回は、ニコニコwikiで配布されている、mencoderを使うバッチファイルが何をしているかについて、解説する。タグ、mencoderで、一覧を見ることができる。

No comments: