H264 编码标准级别 Level 详解

H264 Level

  • H264编码标准中 “Level” 是对视频的描述,它规定了视频的码率、分辨率和帧率等参数的限制。在H264中,每个Level都对应着一组参数的限制,这些参数包括但不限于最大码率、分辨率、帧率等。Level 越高,视频的码率、分辨率和帧率就越高,同时压缩率也会相应降低。
  • 需要注意的是,不同的Profile会有不同的Level,而且不同设备和软件可能对H264 Level的支持程度也不一样。一些设备可能只支持较低的Level,无法处理高分辨率或高码率的视频。因此,在选择合适的H264 Level时,需要根据设备性能和需求进行权衡。
  • 每个Level都规定了一组对标准中语法成员(syntax element)所采用的各种参数值的限制;在给定的Profile下,Level通常与解码器的处理能力和内存容量相对应,每一个档次设置不同的参数(取样速率、图像尺寸、编码比特率等),得到对应的编解码器性能的不同Level
  • 维基百科中解释:
    在这里插入图片描述

Level 对应的属性值表

H264 编码标准级别 Level 详解_第1张图片

DPB

  • DPB: 解码图像缓存区,即Decoded Picture Buffer,H.264/AVC编码器使用先前编码的图像来提供其他图像中样本值的预测。这允许编码器对给定图像的最佳编码方式做出有效的决定。在解码器,这样的图像被存储在一个虚拟解码图像缓冲区(DPB)。DPB的最大容量,以帧(或字段对)为单位,可计算如下:
    在这里插入图片描述
  • Level对应的MaxDpbMbs(最大解码图像缓存区)如下表:
Level MaxDpbMbs
1 396
1b 396
1.1 900
1.2 2376
1.3 2376
2 2376
2.1 4752
2.2 8100
3 8100
3.1 18000
3.2 20480
4 32768
4.1 32768
4.2 34816
5 110400
5.1 184320
5.2 184320
6 696320
6.1 696320
6.2 696320

x264编码器 Level 使用

  1. 默认值:param->i_level_idc = -1;
  2. 外部赋值i_level_idc: 命令行或者直接调用参数赋值。
    H264 编码标准级别 Level 详解_第2张图片
  3. 未指定i_level_idc的具体值:
  • 需要在检查参数有效性函数validate_parameters()中查表找到合适的level值配给param->i_level_idc。
    H264 编码标准级别 Level 详解_第3张图片
  • 其中 x264_level_t是一个数组,记录了每个 Level 对应的各个信息,在头文件 x265.h 中申明。
    H264 编码标准级别 Level 详解_第4张图片
  • 定义的 tables 表 x264_levels[]:level = 10~62
    H264 编码标准级别 Level 详解_第5张图片
  • 具体的查找验证Level函数x264_validate_levels():根据当前编码参数遍历 x264_levels[]表中,找到最合适的 Level。
    H264 编码标准级别 Level 详解_第6张图片

VideoToolBox中Level使用

  1. FFmpeg 中可以看到 VideoToolBox 中关于 H264 标准的 Level 的解释;和 Profile 绑定应用。在 Profile=Baseline 下有 4.0、4.2、5.0、5.1、5.2、AutoLevel Level属性;在 Profile=Main 下有 4.2、5.1、5.2、AutoLevelLevel属性;在 Profile=High 下有 3.0、3.1、3.2、4.0、4.1、4.2、5.0、5.1、5.2、AutoLevel Level属性。
    H264 编码标准级别 Level 详解_第7张图片

参考

  • 维基百科
  • x264编码参数详细介绍:profile、preset、tune、level、码控

你可能感兴趣的:(H264(AVC)标准,H264,x264,编码,Level,VideoToolBox,视频编解码,实时音视频)