Chienomi

VP9の使いどころを発見

Live With Linux::software

H.264 vs H.265 vs VP8 vs VP9 vs AV1という記事で、VP9が相当いまいちであるということを述べているのだけど、せっかくのフリーなコーデックなのだから活用したいと思うのが心情というものだろう。

当該記事で述べた通り、単純に言えば普通の動画(カメラで撮ったビデオ)を非常に強く圧縮する場合、VP9はかなり厳しいものがある。 大きめサイズであればそうでもないが、常にH.265のほうが良いという状態が維持されてしまい、VP9を採用する理由に乏しい。 スクリーンキャストで使おうにも、VP8/VP9ともに速度が出ないため厳しいというのも問題だ。

しかし、私は発見した。 部分的にしか画面が変わらないスクリーンキャストではVP9のほうが効果的だと。

比較

提示するのにうまく際限できなかったので難しいが、とりあえず比較用動画である。ベースはqp0(1396kbps)のH.264。

まずlibx265で圧縮した動画(をlibx264で戻した動画1)。 (CRF 32, 618kB(165kbps))

一方、libvpx-vp9で圧縮した動画。 (CRF 48, 637kB(170kbps))

H.265のほうが字の周りがにじにじしているのを感じないだろうか。また20秒付近、lessを閉じた直後、画面に白い点がたくさん走る。

VP9のほうがもやっとするのは否めないが、H.265よりも安定して感じるのではないだろうか。

使いどころ

文字を映すような動画(スクリーンキャスト)ではx265だと表示された瞬間に文字がぐちゃっと潰れてしまうことがあるので、vpx-vp9のほうが良い。

また、一般にスマートフォンのゲームなどは動きの小さい背景にアニメーションが載るようなものが多いため、こうした動画でx265の安全圏はせいぜいCRF27あたりまでだが、vpx-vp9ならCRF42-48となり、VP9のほうが1-2割くらい小さなファイルにできる。 私は音ゲーをよくやっていて、音ゲーのプレイ動画をアーカイブしているが、これをVP9にすることで結構容量節約に効いている。 特に文字の出るアドベンチャーゲームなどだとx265が文字に弱い傾向があるためvpx-vp9のほうが圧縮率と画質を両立できる可能性が高い。

もしかしたらだが、アニメーションなども映像としての動きは小さいため、VP9のほうが圧縮が効いたりするかもしれない。 (私は手元にアニメーションのビデオファイルがないので確かめられないが)