昨年8月にx264のパラメータを考察したが、その後x264に各種の改良が加えられてきているため、新たな標準的なパラメータを作っておきたい。
今回はBフレーム制御についての考察。
エンコードの素材はTBS 2009-08-30放送の「鋼の錬金術師 FULLMETAL ALCHEMIST」21話「愚者の前進」の次回予告30秒+静止画約3秒。 960×540サイズにリサイズして入力した。
今回の実験に使用したx264は
x264 0.68.1179 96e2229
built on Jul 10 2009, gcc: 3.4.6
のOreAQ版。パラメータは次の通り。
x264.exe -b * -r * --crf 19 ← 解像度960x540なのでノイズが気にならないよう高めの設定 --fullrange=on ← --direct auto -i 2 --b-adapt=2 ← new! --b-pyramid --qpstep 24 --ratetol 80 --qcomp 0.3 --me umh -m 9 ← 値と動作の対応が変わった。 --mixed-refs --8x8dct -t 2 --no-fast-pskip --no-dct-decimate --sar 1:1 -f 0:0 -w --aq-strength=0.4:0.6 --aq-sensitivity=11 --psy-rd=0:0 ← 実写でグレインノイズがある時は0.5:0〜1:0で妥協する --cqm jvt --thread-input
...
-rを増やすとグラフは右上左上にシフトする。
つまりビットレートを下げつつ高品質になる。
r=3からr=12にした時に、--bframesによらずビットレートは約8%削減でき、SSIMは約0.00015向上した。つまり、良い事づくめ。
-rが3から4にかけての変化は大きいが、8から12の変化は小さかった。 rの最大値は16だが、12の時から大きくは改善されないと予想される。
-bを増やすとビットレートが下がるが、品質は上がったり下がったりする。
品質はb=12 > b=3 > b=4 b=4 > b=3となっている。
これは--b-pyramidが、連続3フレームだとうまく作用するが連続4フレームだとうまくいっていないのかもしれない。
b=6だとまた画質が向上しているので、3の倍数がよいのかも。
--b-adapt=2で「--refの指定を最大値として最適なBフレーム数を適宜判断する」ようにしている。この機能はよく効いている。
今回の対象画像ではr=6からr=7でビットレートも品質も飽和している。つまり、--b-adaptによって連続6以上のBフレームは得策でないと判断された。実際、r=7の時のconsecutive B-framesで7フレーム連続のBは789フレーム中に2回だけだった(6フレーム連続は12回)。
まとめると、b=6, r=12 くらいが高品質で高圧縮ということになった
(ただし品質については知覚できない程度の微々たるものなので、「画質を落とさずに高圧縮になる」と考えた方がよいだろう)。
デメリットとしては、rを大きくするとエンコ時間がどんどん延びること。
また、H.264のプロファイルレベルも上がるので、再生環境を選ぶこと。
なお、デジタル制作のアニメは素材のS/Nが極めて良好で、画質を落とさず圧縮率を高めやすい特殊な例である。 グレインの乗った実写とか、アニメでもアナログキャプチャだと効果が表れなかったり、特性が異なるかもしれない。
プロの世界でもBフレームの品質向上が重要視されている模様。
たとえばグレインが連続した動きに見えるようになったのは、これまでIとPしかハッキリと目立たず、間のBでのグレインパターンが描かれていなかったのに対し、間のBの再現性が高くなったので、動きが繋がるようになった、というわけだ。
「GOEMON」Blu-ray版の画質を高めたパナソニックの新技術 −邦画の高画質にも取り組むワーナー @本田雅一のAVTrends
関連記事
Trackback URL (right click and copy shortcut/link location)