映像圧縮
これまた何を思ったか、アニメ保存用の映像圧縮に何がいいか考えてみることにする。
候補に挙がるcodecは
といったところ。上の三つは何度も使ったことがあるので下の二つについて考えてみる。
H.264は規格自体はすでに決まってるけど決まってるのはデコード部分だけなのでエンコードに関してはまだまだ発展中。Snowは一応エンコードもデコードも現段階でできるけど未実装の機能がまだあるし、そもそもffmpegしか実装がない。
両方ともに言えるのは重い。特にSnowはDWTがDCTに比べ計算量が多いためかエンコード、デコード共に重い。
この手の圧縮に良く使われるDCTを使うとブロックノイズが発生することは周知の事実というかブロックに分けて処理をする都合上仕方のないことなのだが、このブロックノイズをなくすもしくは減らすためにH.264ではIn-loop Filter(DeBlocking Filter)を導入し、SnowではそもそもDCTを使わずDWTを使う。
DCTからDWTへの移行は動画よりも先に静止画で行われているのだが、普及に失敗したのか最近とんと見ない。JPEG2000ってどうなったんだろ。
ほかの部分での差異もあるので一概に言えないが、やっぱりH.264というかMPEG系とSnowとの違いはDCTかDWTかの違いだと思う。同じような違いを持つJPEGとJPEG2000は後者のほうが後の規格だから当然といえば当然なのだが断然JPEG2000のほうが同一品質での圧縮率は高い。しかしやはり処理はJPEG2000のほうが重い。DWTのアルゴリズムに画期的な改良が施されてDCTと同じくらいの計算量でできるようになればDWTを使ったほうがいいことは分かるのだけど、現状ではDWTとDCTの計算量はかなり違うので難しいところだ。
1000kbps,3passで両方とも640*480の素材を圧縮してみたが画質はほぼ同じ。やはりSnowはCPUパワーを食うのか時々コマ落ちした。H.264は例のフィルターのせいか、一部ぼやけたりするがそこまで気になるようなものではなかった。
ちなみにエンコードには以下のソフトを使った。
再生は以下のソフト
- MplayerClassic+ffdshow-20051129