我正在使用 x264 编码视频。调试窗口显示以下消息:x264 [debug]: frame=1928 QP=35.00 NAL=2 Slice:P Poc:72 I:0 P:32 SKIP:67 size=62 bytes PSNR Y:36.84 U:39.56 V:41.84
我理解帧是指帧编号,切片是指编码的特定方式,即本例中的 P 帧。我想知道 NAL、Poc、I、P、SKIP 是什么意思。
答案1
NAL 是 H.264 中的网络抽象层。它允许比特流通过包含数据的 NAL 单元在网络上传输。一组 NAL 单元被分组为一个访问单元,每个访问单元都以主编码图片开始。调试编号是 NAL 优先级,取决于 NAL 包含什么类型的图片:
NAL_PRIORITY_DISPOSABLE = 0
NAL_PRIORITY_LOW = 1
NAL_PRIORITY_HIGH = 2
NAL_PRIORITY_HIGHEST = 3
IDR 图片始终具有最高优先级。I 和 P 图片具有“高”优先级。B 参考图片具有“低”优先级,并且 B 图片具有可丢弃标志。
这POC
是图片顺序计数。此功能的存在是因为有些图片需要在其他图片之前传输(即使它们的显示时间戳较晚),这样解码器才能正确解析引用。我无法确切地告诉您如何解释该字段的值,但在实际编码过程中查看帧类型和字段应该会给您一些线索。基本上,您需要根据它们的 POC 重新排序帧并以这种方式传输它们。
I
并P
简单地为您提供当前帧中的 I 和 P 宏块的数量。SKIP
为您提供跳过宏块的数量。跳过宏块只是编码“无”内容并告诉解码器按原样使用预测。这节省了最多的比特,应该用于变化较少或全局运动缓慢的区域。
您可以在以下位置阅读有关 H.264 的更多信息:
Wiegand, Thomas 等人。“H. 264/AVC 视频编码标准概述。”《视频技术电路与系统》,IEEE Transactions on 13.7(2003 年):560-576。(PDF)