MeGUI/x264 设置/x264 统计输出
此页面试图记录统计数据的含义,更重要的是,你可以从统计数据中了解到什么。具体来说,哪些编码设置可能有用,或者你的编码设置做了什么。
除了选择预设(有时还包括一个或多个--tune
设置)之外,通常不需要调整设置。如果你想真正检查编码在与其他设置相同的比特率下是否看起来更好,你仍然需要查看输出结果。
统计输出可以帮助你了解可能想要调整哪些内容,而不是衡量编码是否成功。--tune ssim --ssim
(或 psnr)可能有用,但无法帮助 psy 设置(心理视觉,即对人类来说看起来更好,但质量指标更差)。
如果你已经进行了一次编码,并想尝试不同的设置,最好的方法是进行 2 次编码,目标比特率与第一次编码相同,但设置有所修改。当然,要使用相同的源文件。然后,你可以通过视觉或计算(SSIM & PSNR)来比较这两个相同比特率的编码。请记住,CRF 的行为受许多设置的影响,因此你不能说以相同 CRF 产生较小文件大小的设置更好。你还必须比较质量。(x264 可以准确地达到比特率目标,而不是 SSIM 或 PSNR 目标,这就是推荐使用 2 次编码来比较不同设置的速率失真性能的原因。)
典型的 x264 输出
avis [info]: 1280x720 @ 1.77 fps (40997 frames)
使用 Avisynth 时,这行显示有关输入的基本信息。
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 PHADD SSE4 Cache64
请注意,这并不一定与你的 CPU 能力相匹配。在某些芯片上,x264 不会使用某些指令集,因为它实际上更慢。
x264 [info]: profile High, level 4.0
关于流的 h264 配置文件和级别的信息。配置文件是由使用的选项隐含的(例如,B 帧意味着至少为主配置文件,8x8dct 意味着至少为高配置文件),此处仅供参考。级别是写入比特流中的数字。你可以使用--level
显式设置所需的级别,也可以不设置,让 x264 猜测(相当准确)。
x264 [info]: frame I:879 Avg QP:21.39 size: 59921 x264 [info]: frame P:24856 Avg QP:25.44 size: 12473 x264 [info]: frame B:61727 Avg QP:28.98 size: 3759
对于三种帧类型中的每一种,显示帧总数、每帧类型中每个宏块的平均量化器以及所述帧类型的平均大小。QP 应该通过--ipratio
和 --pbratio
来关联,但 mbtree、psy/aq 和除恒定 QP 之外的速率控制模式将
x264 [info]: consecutive B-frames: 4.8% 6.0% 12.1% 51.5% 15.9% 8.0% 1.8%
该数量的 B 帧序列中帧的百分比。P = 1、PB = 2、PBB = 3,依此类推。如果数字逐渐减小到接近零,那么你可能不会通过提高连续 B 帧限制来获得任何好处。(反过来并不总是成立:即使 x264 大部分时间选择使用 3 个连续的 B 帧,--bframes
> 3 也并不一定有显著的收益。)
x264 [info]: mb I I16..4: 17.9% 68.9% 13.2% x264 [info]: mb P I16..4: 9.2% 12.1% 0.6% P16..4: 40.4% 5.6% 6.7% 0.1% 0.0% skip:25.2% x264 [info]: mb B I16..4: 0.9% 1.1% 0.1% B16..8: 36.7% 2.7% 0.5% direct: 2.1% skip:55.9% L0:44.6% L1:52.5% BI: 3.0%
每一行中的数字加起来为 100%,涵盖每种帧类型中的所有宏块。
对于三种帧类型(I、P、B)中的每一种,显示使用了哪些分区。I 帧只能使用 I 宏块,而 P 帧和 B 帧可以使用 I 或其本机宏块类型。
are what percentage of partitions within are either I or the native type of partitions (which is P for P MBs and B for B MBs). The three numbers for I frames represent i16x16, i8x8 and i4x4. For P/B frames, the five numbers represent 16x16, 16x8/8x16, 8x8, 8x4/4x8 and 4x4. (B can't use 8x4/4x8 or 4x4). In this example,
跳过显示使用跳过向量而无需残差的分区的数量,而直接显示使用跳过向量带残差的分区的数量。 跳过向量是什么?它非常非常复杂。。(推测:你的编辑认为,这些跳过向量,如之前作者所称,是运动搜索找到的内容。因此,大量的“跳过”和“直接”分区意味着运动搜索找到了足够好的参考,使得向量(+ 残差)比其他编码块的方式具有更好的 RD 权衡。)
对于 B 分区,在行末添加了另一个列表。B 分区可以从以前的帧(L0 参考列表)预测,也可以从将来的帧(L1 参考列表)预测,或者从过去和未来帧的混合(BI(双向))预测。
x264 [info]: 8x8 transform intra:56.8% inter:76.6%
8x8dct 实际使用的频率。
x264 [info]: direct mvs spatial:99.9% temporal:0.1%
使用每种直接/跳过运动向量计算方法的帧的百分比。请参阅上面关于跳过向量的说明。2pass
模式是--direct auto
在典型内容上使用少量时间 MV 所必需的,但当没有特定的比特率目标时,crf
仍然被广泛推荐。
x264 [info]: coded y,uvDC,uvAC intra: 32.3% 49.4% 12.6% inter: 5.9% 10.5% 0.5%
对于每种类型的块,编码(非零 DCT 系数)的比例是多少。
x264 [info]: i16 v,h,dc,p: 32% 19% 10% 39% x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 10% 14% 8% 11% 12% 11% 10% 9% x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 15% 7% 7% 11% 11% 11% 9% 11% x264 [info]: i8c dc,h,v,p: 39% 26% 21% 14%
每种分区类型使用每种预测模式的频率。(FIXME:找到有关 h.264 预测模式的更多详细信息的链接,或者任何关于此信息如何用于查看你的设置做了什么的建议。)
x264 [info]: Weighted P-Frames: Y:2.7% UV:2.1% x264 [info]: ref P L0: 56.2% 10.9% 15.7% 5.2% 3.9% 2.8% 2.4% 1.3% 1.3% 0.3% 0.0% x264 [info]: ref B L0: 81.1% 9.2% 4.6% 1.9% 1.3% 1.0% 0.6% 0.2% x264 [info]: ref B L1: 94.6% 5.4%
P 分区和 B 分区实际使用了哪个参考图像。L0 是过去参考图像的列表。L1 是未来。此示例输出来自preset=veryslow
编码,ref=9
,但 P 参考列表有 11 个条目。最后两个是 x264 实现weightp
的方式产生的虚拟重复。产生的流的解码器将看不到它们;它们不会占用 DPB(解码图像缓冲区)空间。
与连续 B 帧类似,如果列表逐渐减小到接近零,则可以使用较低的refs
,几乎不会影响效果。请注意,此列表不会告诉你找到的匹配度有多好:即使列表没有减小到零,如果来自更远的帧的参考只是略微好一点,那么使用更少的参考可能不会对压缩造成很大影响。它也不会告诉你是否在更远的帧中找到了更好的匹配。((推测) 只有具有重复模式的非常合成的输入才有可能在例如从 8 个参考增加到 12 个参考时看到压缩率的很大提高,并且该模式每 10 帧重复一次。)
外部链接
- Dark Shikari 和其他人回答了一些关于统计输出的问题
- 打印统计输出的函数是 encoder.c 中的
x264_encoder_close
(截至 2015 年 2 月,从第 4003 行开始)。