最大連続Bフレーム数と参照距離の関係は、
コチラや
コチラのサイトを見るとわかるように
・2 x 最大連続Bフレーム = 参照距離
・最大連続Bフレーム数は3の倍数
の時が、最も画質が良いらしいのでプログレッシブな動画を作る際はこれに従ってエンコード速度を見ながら適当な値を設定してやればいいのですが…
1920x1080のフルHD動画をインターレースを保持した状態でエンコードする時はちょっとすんなりいかないんですね(´・ω・`)
というのも、
①インターレースが扱えるのは
H.264 Level 2.1~4.1まで
②参照距離の最大値は
DPB(Decoded Picture Buffer)が関係している→詳しくは
コチラのサイトの下の方にある「おまけ:DPBと--refの最大値の計算」を参照
で、結論としては
1920x1080の動画をLevel 4.1でエンコードする場合、参照距離の最大値は4ここで、一番上の四角で囲った部分を見ていただくとわかるように
参照距離は最大連続Bフレーム数の2倍が好ましく、また最大連続Bフレーム数は3の倍数であることが好ましい
つまり、
参照距離は最低でも6でなければならないということで、ここでの疑問は
・「2 x 最大連続Bフレーム = 参照距離」と「最大連続Bフレーム数は3の倍数」のどちらを優先したほうが画質が良くなるか?
・参照距離が稼げない分、最大連続Bフレーム数に参照距離の1/2を超えた値を指定しても良いのか
ということで、早速検証しました
■検証方法
某アニメの冒頭3000フレーム(1分40秒)をそれぞれの設定でエンコードし、
SSIMを算出、比較しました
(出来るだけオリジナルとの差異をなくすため、フィルターは一切無しでエンコードしました)
Q,なぜ、3000フレーム?
A,本当は24分まるまるエンコードしたほうが、より正確な値を出せると思うのですが
流石に時間がかかるので今回は3000フレームだけエンコードした結果で比較しました
なぜ、3000フレームなのかについてはコチラの3項目に書いてあります
■検証環境
・Aviutl 1.00(入力プラグインはL-SMASH Works File Reader r679、出力プラグインは拡張x264出力(GUI)Ex 2.02を使用)
・エンコーダーはx264 r2358(x64版)
■検証結果
参照距離 / 最大連続Bフレーム数:SSIM値(1.0に近いほど画質が良い)
①4 / 3:0.9894866
②4 / 6:0.9894253
③4 / 9:0.9894351
④4 / 2:0.9894806
⑤4 / 0:0.9893641
①と②・③を比較すると、
最大連続Bフレーム数は参照距離の1/2を超えない方が良いみたいです
また、①と④を比較すると、無理に「2 x 最大連続Bフレーム = 参照距離」の関係を成り立たせるより、
「最大連続Bフレーム数は3の倍数」であることを優先したほうが良いみたいです
あと、最大連続Bフレーム数は0にはしないほうがいいみたいです(⑤)
■結論
正直、殆ど差はない
気にしたい人だけ気にしよう
コチラのサイトによるとSSIMの値が0.98以上では見分けが付かないらしいので、正直気にする必要は無いと思います
(つまり、この記事の意味なし!)では