このページの全ては誤っているかもしれません。[[x264関連の記事に関して]]を読んでください。 !!!x264(統計情報・ログ) x264cliが表示する統計情報の読み方のメモ。 実際のところは[information about the x264 log - Doom9's Forum|http://forum.doom9.org/showthread.php?p=1039674#post1039674]の丸パクリ+α。 この元ネタは2007/09/01と古いが、統計情報(ログ)の形式は当時からそれほど変化していない。 多少の違いは見られることには注意すべきだが、十分現在にも通用する。 かつ、この記事は単なる翻訳ではなく現状に関しての説明も加えているので、説明部分は2010/04/08現在で十分な内容にしているつもり。 また、まるも大先生の[ログの読み方 - サマリー編|http://www.marumo.ne.jp/db2007_6.htm#29]も2007/06/29と古いが、併せて参照するとよいだろう。 一部自信のない部分もあるので、間違いがあれば指摘をいただければありがたい。 以下の例で説明。 {{pre avis [info]: 1280x544 @ 23.98 fps (239470 frames) x264 [info]: using cpu capabilities: MMX MMXEXT SSE SSE2 3DNow! x264 [warning]: VBV maxrate specified, but no bufsize. mp4 [info]: initial delay 834166 (scale 10000000) x264 [info]: slice I:2323 Avg QP:19.01 size: 78885 x264 [info]: slice P:101512 Avg QP:21.38 size: 28261 x264 [info]: slice B:135635 Avg QP:22.36 size: 9179 x264 [info]: mb I I16..4: 19.1% 75.0% 5.9% x264 [info]: mb P I16..4: 6.8% 17.0% 1.1% P16..4: 36.9% 6.0% 7.8% 0.0% 0.0% skip:14.4% x264 [info]: mb B I16..4: 0.3% 1.0% 0.2% B16..8: 26.6% 2.0% 4.4% direct: 4.5% skip:61.0% x264 [info]: 8x8 transform intra:68.8% inter:73.5% x264 [info]: direct mvs spatial:96.3% temporal:3.7% x264 [info]: ref P 68.0% 17.8% 6.6% 4.6% 2.9% x264 [info]: ref B 83.3% 10.7% 2.9% 1.9% 1.2% x264 [info]: kb/s:3441.8 encoded 239470 frames, 3.55 fps, 3441.84 kb/s }} 上から順に説明していく。 {{pre avis [info]: 1280x544 @ 23.98 fps (239470 frames) }} 入力ファイルの情報(解像度、フレームレート、総フレーム数)。 現在ではプログレッシブ・インターレースの別や分数形式でのfps、SARを表示したりもする。 {{pre x264 [info]: using cpu capabilities: MMX MMXEXT SSE SSE2 3DNow! }} x264が使用するCPUの拡張機能。 この例では、使用されている拡張機能から、どうやらAthlon64だと思われる。 {{pre x264 [warning]: VBV maxrate specified, but no bufsize. }} --vbv-maxrateが指定されているのに、--vbv-bufsizeが指定されていないので警告されている。 特定のデバイス向けにエンコードするのなら、最大ビットレートだけではなく適切なバッファサイズを指定する必要がある。 {{pre mp4 [info]: initial delay 834166 (scale 10000000) }} mp4のmuxに関連するdelay値。 r1379でmp4にはedtsを使用して適正なdelayが入るようになったため、この情報は不要になった。 ただし、edtsに正しく対応しないプレーヤやスプリッタも多いので注意。 2010/03/27リリース以降の[Haali Media Splitter|http://haali.su/mkv/]は対応するようになったはず。 {{pre x264 [info]: slice I:2323 Avg QP:19.01 size: 78885 x264 [info]: slice P:101512 Avg QP:21.38 size: 28261 x264 [info]: slice B:135635 Avg QP:22.36 size: 9179 }} 各フレームタイプの使用された数、平均QPとサイズ。 一般的にQPに関しては「I<P<B」になり、逆にサイズは「I>P>B」になる。 この比率は--ipratio/--pbratioで調整できる。 {{pre x264 [info]: mb I I16..4: 19.1% 75.0% 5.9% x264 [info]: mb P I16..4: 6.8% 17.0% 1.1% P16..4: 36.9% 6.0% 7.8% 0.0% 0.0% skip:14.4% x264 [info]: mb B I16..4: 0.3% 1.0% 0.2% B16..8: 26.6% 2.0% 4.4% direct: 4.5% skip:61.0% }} 使用されたパーティション(--partitionsで指定する)に関する統計情報。 *「I16..4: 19.1% 75.0% 5.9%」では… **左からi16x16, i8x8, i4x4の割合を示している。 *「P16..4: 36.9% 6.0% 7.8% 0.0% 0.0%」では… **左からp16x16, (p16x8 + p8x16), p8x8, (p8x4 + p4x8), p4x4の割合を示している。 *「B16..8: 26.6% 2.0% 4.4%」では… **左からb16x16, (b16x8 + b8x16), b8x8の割合を示している。 例えばmb Iの行の5.9%とは、Iフレームにおいてi4x4が5.9%使用されたことを示す。 P/Bフレームにはiパーティションを含むことができるので、iと共にp/bパーティションを表示している。 PフレームにはスキップMB、BフレームにはダイレクトMBとスキップMBが使用できるため、これらも表示されている。 なお、x264はb8x4/b4x8/b4x4をサポートしないため、これらが表示されることはない。 現在では、mb Bの行の最後に「L0:45.7% L1:49.4% BI: 5.0%」という表示が付く。 これはb8x8サブパーティションにおいて、L0/L1/双予測の使われた割合をそれぞれ示していると思われる。 {{pre x264 [info]: 8x8 transform intra:68.8% inter:73.5% }} 8x8変換が実際どの程度使用されたかを示している。 現在では--8x8dctは--fullhelpから消えており、デフォルトで有効になっている。 つまりこの行は--no-8x8dctやそれを含む--preset、または--profile mainなどで8x8dctを無効しない場合には表示されることになる。 {{pre x264 [info]: direct mvs spatial:96.3% temporal:3.7% }} コマンドラインで--direct autoを指定したために表示されている。 x264がdirect-mvで使用したspatialとtemporalの割合を示している。 {{pre x264 [info]: ref P 68.0% 17.8% 6.6% 4.6% 2.9% x264 [info]: ref B 83.3% 10.7% 2.9% 1.9% 1.2% }} この例ではコマンドラインで--ref 5が使用されており、P/Bフレームがどのフレームをどのくらい参照したかを示している。 どの程度の--refが有効であるかを見る上で有用で、右の方に行くほど離れたフレームが参照されている。 つまり右端の数値が0%であるなら、それ以上-r/--refを増やす意味はないかも知れない。 なお、--b-pyramid normal/strictでは、Bフレーム側がL0/L1に分けて表示される。 x264の場合、--b-pyramid noneの場合は、L1は未来方向に1つ目のPフレームを100%参照するのでL1が表示されない。 {{pre x264 [info]: kb/s:3441.8 }} 出力された生(raw)のH.264ストリームのビットレート。 {{pre encoded 239470 frames, 3.55 fps, 3441.84 kb/s }} x264がエンコードした総フレーム数、1秒間にエンコードした平均フレーム数(x264の処理速度の目安になる)、コンテナのオーバーヘッドを含む最終的なビットレート。筆者の手元で試す限り、r1542現在、最終ビットレートは時折変な(不当に低い)値を表示することがある。(2010/05/27追記:r1605かその他で修正されたかもしれない) !!元ネタ以降で追加された行 上記の例には含まれないが、現在では出力されるものの一部について。ここの項目は元ネタでは説明されていないため、猫科研究所による説明になる。猫研の能力はたかが知れているので、信頼性に注意。 {{pre avs [info]: trying FFmpegSource2... not found avs [info]: trying DSS2... not found avs [info]: trying DirectShowSource... succeeded avs [warning]: converting input clip to YV12 }} 自動的にAvisynth経由で入力する機能を使用した場合に、どの入力方法が使用されたかについての表示。 ここではFFmpegSource2もDSS2も見つからなかったのでDirectShowSourceが使用されている。 最後の警告はx264が入力に使用できる色空間(YV12)に変換したことを示すが、 現在のところ既にYV12である入力に対しても表示される。 これはAvisynthがplanar色空間に対して常にYV12だと回答してしまうため、 ConvertToYV12を常に呼ぶようにしている、ということのようだ。 {{pre x264 [info]: profile High, level 2.1 }} 使用されたプロファイルとレベル。 それぞれ--profileと--levelで強制することができる。 {{pre x264 [info]: consecutive B-frames: 40.3% 7.9% 7.2% 44.6% }} --b-adapt 1/2である場合に、Bフレームがどのくらい連続したか、という統計情報。 左から0枚、1枚、2枚…となっている。 *0枚はI/Pの後に1枚もBフレームが入らずI/Pフレームが来るケース。 *1枚はI/Pの後に1枚だけBフレームが入り、その後I/Pフレームが来るケース。 *2枚はI/Pの後に2枚Bフレームが入り、その後I/Pフレームが来るケース。 *以下同文。 つまり右端の数値が0%であるなら、それ以上-b/--bframesを増やす意味はないかも知れない。 {{pre x264 [info]: Weighted P-Frames: Y:6.9% }} --weightp smartにおいて、全てのPフレーム中、重み付きPフレームが使用された割合。 {{pre x264 [info]: coded y,uvDC,uvAC intra: 32.1% 39.2% 15.9% inter: 17.9% 13.6% 1.5% }} y, uvDC, uvACそれぞれについて、intra/inter別に、DCT係数が全て0にはならず、符号化された割合。 これらは知ったとしても特に扱いようがないかもしれない。 例えば、QPを高くすれば量子化により0になるケースが増え、全体にこれらの値が下がる。 また、--chroma-qp-offsetで1以上の値を指定すれば、uvDC, uvACの値は減らせる。 しかし、果たしてそれに意味があるだろうか…? {{pre x264 [info]: i16 v,h,dc,p: 33% 26% 11% 30% x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 30% 18% 4% 5% 5% 9% 5% 7% x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 42% 16% 3% 6% 4% 8% 3% 5% }} r1262から追加された、intra予測モードに関する情報。 現状、筆者がよく理解していないため説明は保留させてもらうが、内容を知ったところで、恐らく特にアクションの起こせるものでもない。 !!その他の行 上記の例に含まれないもので、目についたものをここに追加していく。 {{pre x264 [info]: final ratefactor: 27.45 }} [X264 Stats Output - MeWiki|http://mewiki.project357.com/wiki/X264_Stats_Output]より。エンコードのモードがABRの場合のみ表示される。最終的に使用されたQPの平均値を表示している。