2019年1月2日水曜日

x264 qcomp値について考える。

まずは容量揃えてエンコ。

■実写30fps
CRF24 qcomp1.0 28.3MB SSIM Mean Y:0.9738814 (15.831db)
[libx264] frame I:2 Avg QP:23.50 size:382009
[libx264] frame P:109 Avg QP:24.00 size:142185
[libx264] frame B:339 Avg QP:25.71 size: 37569

CRF23 qcomp0.75 28.2MB SSIM Mean Y:0.9744521 (15.926db)
[libx264] frame I:2 Avg QP:21.50 size:454983
[libx264] frame P:109 Avg QP:23.30 size:163864
[libx264] frame B:339 Avg QP:26.61 size: 29704
※以降容量変わらないままSSIM値のみが下がり、0.7で突如
崖が発生しQP26.7から27.5に跳躍&MB単位で容量低下。

CRF22 qcomp0.55 28.2MB SSIM Mean Y:0.9723211 (15.579db)
[libx264] frame I:2 Avg QP:20.34 size:506779
[libx264] frame P:109 Avg QP:22.43 size:190761
[libx264] frame B:339 Avg QP:28.32 size: 20895

■アニメ絵30fps
CRF24 qcomp1.0 40.0MB SSIM Mean Y:0.9849158 (18.215db)
[libx264] frame I:29 Avg QP:22.55 size: 54738
[libx264] frame P:885 Avg QP:24.00 size: 21964
[libx264] frame B:2230 Avg QP:25.77 size: 7495

CRF23 qcomp0.78 40.1MB SSIM Mean Y:0.9858651 (18.497db)
[libx264] frame I:29 Avg QP:20.87 size: 61337
[libx264] frame P:890 Avg QP:23.37 size: 24468
[libx264] frame B:2225 Avg QP:25.79 size: 6918

CRF22 qcomp0.69※ 40.9MB SSIM Mean Y:0.9863222 (18.640db)
[libx264] frame I:29 Avg QP:20.25 size: 63639
[libx264] frame P:890 Avg QP:22.50 size: 27534
[libx264] frame B:2225 Avg QP:26.54 size: 5946
※以降容量ほぼ変わらないままSSIM値のみが下がり、0.65で突如
崖が発生しQP26台→28台に跳躍&MB単位で容量低下。

CRF21 qcomp0.48 40.3MB SSIM Mean Y:0.9857147 (18.451db)
[libx264] frame I:29 Avg QP:19.82 size: 65028
[libx264] frame P:890 Avg QP:21.54 size: 31424
[libx264] frame B:2225 Avg QP:28.24 size: 4171

わかったこと
・qcomp値は多少緩めたほうが全体の画質から見た容量効率は高い
・Bフレームの平均Q値が27を超えると全体の画質に影響する
・同じqcomp値でも実写ソースの方がBフレームのQ値落ち込みが大きい
・qcomp値は実写0.75、二次元0.7を割ると急激に悪化、
どういうわけかQ値は27くらいに、qcomp値は0.7近辺に崖がある
(ただしその直前が圧縮率的に一番おいしい)

というわけで戦略。

常用CRFでは0.75近辺で崖がある。
アニメ画ではもう少し余裕があるが、それでもカツカツ。
なので圧縮率は多少犠牲にしつつも画質の低下を防ぐ意味で
CRFを利用する際はqcomp値0.75以上を推奨。
ただし上げすぎはまた却って圧縮率が低下するので注意。
(もちろん、サイズが増えるだけで画質への影響はない)

【まとめ】
・qcompはIフレームとBフレームのトレードオフ。
・デフォルトの0.6でもいいけど圧縮率的によくなさそう。
・qcomp=1はBフレームの落ち込みを防げるが、キーフレームの
画質が頭打ちになる。
・高いCRF値&高いqcomp値の組み合わせよりはもう少し低い
CRF値&緩いqcompのほうが効率はいい。
ただし高めのCRF値をチョイスする際のqcomp=1は安牌ではある。
・crf20くらいならデフォ0.6でもいいと思う。

【要するに】
BフレームのQ値は平均せいぜい25~6程度にとどめるのが最低ライン。
そこからうまくバランスとってよりIフレームのQ値を抑えると
総合的に画質はあがる。