2008/04/15

x264設定メモ2~エンコ結果の読み方

■エンコ結果の読み方
 x264のエンコードが終わると下のようなエンコード結果が表示されます。
わかりづらいというかワケわからないと思いますが、x264エンコードをする上で
役に立つ情報も出るので、今回は私の知っている範囲でこれを解説します。

今回はこの動画のエンコード結果を使って説明します。最初はテキトーに読み飛ばして下さい。

encoded 2786 frames, 14.14 fps, 768.05 kb/s
avis [info]: 512x384 @ 30.00 fps (2786 frames)
x264 [info]: using cpu capabilities: MMX MMXEXT SSE SSE2 SSE3 3DNow!
mp4 [info]: initial delay 2 (scale 30)
x264 [info]: slice I:22 Avg QP:15.68 size: 15907 PSNR Mean Y:49.07 U:51.88
V:51.97 Avg:49.57 Global:47.12
x264 [info]: slice P:737 Avg QP:16.81 size: 6723 PSNR Mean Y:49.67 U:53.61
V:55.12 Avg:50.14 Global:47.25
x264 [info]: slice B:2027 Avg QP:19.39 size: 1770 PSNR Mean Y:49.16 U:53.30
V:54.87 Avg:49.64 Global:46.62
x264 [info]: mb I I16..4: 37.5% 38.3% 24.2%
x264 [info]: mb P I16..4: 4.6% 12.4% 5.0% P16..4: 23.8% 8.4% 4.3% 0.5% 0
.3% skip:40.7%
x264 [info]: mb B I16..4: 0.8% 1.3% 0.4% B16..8: 16.3% 1.9% 3.3% direct:
2.9% skip:73.2%
x264 [info]: 8x8 transform intra:53.7% inter:65.0%
x264 [info]: direct mvs spatial:90.4% temporal:9.6%
x264 [info]: ref P 69.0% 15.9% 9.8% 5.3%
x264 [info]: ref B 84.5% 11.9% 3.6%
x264 [info]: SSIM Mean Y:0.9847780
x264 [info]: PSNR Mean Y:49.294 U:53.369 V:54.910 Avg:49.774 Global:46.779 kb/s:
765.97

encoded 2786 frames, 9.06 fps, 766.13 kb/s


 では部分を抜き出して少しずつ解説していきます。

slice I:22 Avg QP:15.68
slice P:737 Avg QP:16.81
slice B:2027 Avg QP:19.39

 これは、Iフレーム、Pフレーム、Bフレームの3つのの情報です。

 まずは、日本語に直しましょう。

Iフレームは22フレーム出来て平均品質レート15.68で圧縮しました
Pフレームは737フレーム出来て平均品質レート16.81で圧縮しました
Bフレームは2027レーム出来て平均品質レート19.39で圧縮しました

 で、そもそもIフレームとかって何ぞ?という疑問。Wikipedia:フレーム間予測を大まかに解説すると。

フレーム圧縮は、予測した画像と実際の画像との違う部分だけを抜き出して圧縮する方法。
Iフレームは予測の基点になるフレーム(キーフレーム)
Pフレームは前のフレームからある程度予測できたフレーム
Bフレームは前、後ろ、両方からある程度
予測できたフレーム
 
 こんな感じでしょうか。
 アニメエンコで役に立つかもしれない覚書さんにもありますが、見所はやっぱりIフレーム。
 Iフレーム数のバランスが悪いようなら、--min-keyint、--scenecutを調整しましょう。
 今回の動画だと
Iフレーム数22は少なめなので、--scenecutをまだ上げてもいいかも。

 
mb I I16..4: 37.5% 38.3% 24.2%
mb P I16..4: 4.6% 12.4% 5.0% P16..4: 23.8% 8.4% 4.3% 0.5% 0.3%
mb B I16..4: 0.8% 1.3% 0.4% B16..8: 16.3% 1.9% 3.3%

 さて、次はこの部分です。これは圧縮に使われたマクロブロックの種類と割合を意味します。
 これも日本語に直します。

Iフレームのマクロブロック
 i16x16= 37.5%,
i8x8=38.3%, i4x4=24.2%

Pフレームのマクロブロック
 
i16x16= 4.6%, i8x8=12.4%, i4x4=5.0%
 p16x16=23.8%, p16x8=8.4%,
p8x16=4.3%, p8x8=0.5%, p4x4=0.3%

Bフレームのマクロブロック
 i16x16= 0.8%, i8x8=1.3%, i4x4=0.4%
 b16x8=16.3%, b8x16=1.9%, b8x8=3.3%

 8x8だとか4x4とかは--partitionオプションにありましたね。
 つまりここを見れば指定したマクロブロックの実際の使用率が分かります。
 今回の動画ではp4x4とp8x8があまり役に立ってなかったんですね。


8x8 transform intra:53.7% inter:65.0%

 これはカス
タムマトリクス使用時に役に立つところです。
 
アニメエンコで役に立つかもしれない覚書さんのカスタムマトリクスの項に
 詳しく書いてあるのでこちらを参考にしてください。

direct mvs spatial:90.4% temporal:9.6%
 --direct オプションの情報です。どうせ常時autoだからあまり関係ないですね。


ref P 69.0% 15.9% 9.8% 5.3%
ref B 84.5% 11.9% 3.6%

 これはエンコ時間を削る上で大事なオプションです。前回もここには触れました。
 
PフレームとBフレームの参照距離ごとの使用率が出ます。

ref 1=69.0%, ref 2=15.9%, ref 3 = 9.8%, ref 4 = 5.3%
b-frame 1 = 84.5%,
b-frame 2 = 11.9%, b-frame 3 = 3.6%

 この結果なら、ref 4の使用率が5%なのでエンコ時間を気にしないなら
 --ref 5を指定しても1~3%ほどは恐らく使ってくれるかもしれません。
 ただし時間を削りたいならref 3が妥当で、ref 2では少々勿体無いといった所でしょうか。
 B-frameは3の割合が低めなので、2以下の方がキレイかもしれません。

 
SSIM Mean Y:0.9847780
PSNR Mean Global:46.779

 SSIMもPSNRもエンコード前と比較した劣化の割合なんですが、
 PSNRの値は動画によって変動するので、同じ動画を何回もエンコードして比較するような時のみ
 しかもブロックノイズの判別が出来ないなどと、イロイロ使いづらいです。
 基本的に画質の評価はSSIM値を参考にした方が良いでしょう。
 SSIM値の判定基準は大体こんな感じ。ただしビットレートやサイズは値に考慮されないので
 ニコ動の条件ではソースにもよりますが0.990の壁は厚いと思います。

SSIM 0.995…神画質
SSIM 0.990…高画質
SSIM 0.985…普通画質(ニコ動高画質)
SSIM 0.980…低画質(ニコ動普通画質)

 おわり!
 

0 件のコメント: