今回のエンコのターゲットは、アニメ「ルパン三世 sweet lost night~魔法のランプは悪夢の予感~」(2008-07-25 AX系で放送)。
あちこちに出てくる回想シーンが、砂嵐状ノイズ(しかも色付き)によるエフェクトなのでいつもの品質指定では潰れてしまう。 CRF (Constant Rate Factor)のパラメータを小さくすれば潰れを抑えられるが、回想シーン以外で過剰なビットレートになってしまうので、必要なカットの範囲だけパラメータを変更したい。 こんなときはzoneオプションを使うようだ。 zoneの範囲はフレーム番号で指定することになっている。
--crf=21 --zones 935,1138,q=10/5542,5589,q=10
のように書けば、フレーム番号(0開始)で935〜1138の範囲と、5542〜5589の範囲のCRFを10に、その他の範囲のCRFを21にできる。
今回、Aviutlで24fps化(テレシネ解除)したが、Aviutlでは24fps化後の正確なフレーム番号を知る術が無いので、Aviutlの作業ファイル(aup)を読み込むAvisynth script(avs)を作って、VirtualDubModでこのavsファイルを読んで回想シーンのフレーム番号を確認した。
以下、ノイズを効果として含む映像の場合のCRFと画質、ビットレートの関係についての考察。
...
通例、アニメだと19〜21程度のCRFを指定すればノイズが気にならない画質を得られるが、今回のルパンでは回想シーンのノイズ効果が潰れてしまう(しかも全体に潰れるのではなく、ノイズの残る部分もあるので余計気になる)。
通常、CRF=21を指定すればだいたい量子化パラメータ(QP)も21前後になるのだが、
なんと30前後にまで劣化している。
H.264のQP=30〜32は、MPEGのQP=8〜10に相当する。
MPEG-2ならQP=10あたりからブロックノイズがはっきりと見えるようになるという経験則とも一致する。
模擬映像として、Cornes du Chamoix, Cirque du Fer à Cheval (by Pascal Vuylsteker, Some rights reserved) から640×480ピクセルを切り出して、Photoshopで10通りのランダムなノイズを加えた画像を作って、Avisynthで10回ループする映像を用意した。
CRF=10を指定すると、やっとQP=20前後になった。
ただ、画質は向上したもののビットレートが8Mbps→33Mbpsへと4倍になってしまった。 33Mbpsといったら地デジの16Mbpsの倍であり、 MPEG2のまま記録するより記録効率が悪くなるなんて悲しい。 回想シーンの比率は低いので、全体の平均ビットレートは それほど高くないとも言えるが、 DVDの等倍速11Mbpsでは間に合わないビットレートであり、 保存媒体が限られてしまう(HDDやBlu-ray)という問題は残る。
H.264は今回取り上げたような粒状ノイズの再現性に難があることは 以前からよく問題にされている。
プロ世界では量子化マトリクスをカスタマイズしてフィルムグレインに対応している模様…なんだけど、x264にはGOP単位で指定する方法は無いようなので(そもそも事前にGOPの切れ目を指定できない?)、今回のルパンのように「一部のシーンだけグレインノイズを残したい」っていうニーズには対応してなさげ。量子化マトリクスの異なるファイルをmkvmergeで繋げることができるのなら、ノイズを残したいシーンだけ別パラメータでエンコして繋げるのがよいかも。
関連記事
Trackback URL (right click and copy shortcut/link location)