H264 编码标准级别 Level 详解

news/2025/2/9 14:24:01/

H264 Level

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

Level 对应的属性值表

在这里插入图片描述

DPB

  • DPB: 解码图像缓存区,即Decoded Picture Buffer,H.264/AVC编码器使用先前编码的图像来提供其他图像中样本值的预测。这允许编码器对给定图像的最佳编码方式做出有效的决定。在解码器,这样的图像被存储在一个虚拟解码图像缓冲区(DPB)。DPB的最大容量,以帧(或字段对)为单位,可计算如下:
    在这里插入图片描述
  • Level对应的MaxDpbMbs(最大解码图像缓存区)如下表:
LevelMaxDpbMbs
1396
1b396
1.1900
1.22376
1.32376
22376
2.14752
2.28100
38100
3.118000
3.220480
432768
4.132768
4.234816
5110400
5.1184320
5.2184320
6696320
6.1696320
6.2696320

x264编码器 Level 使用

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

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属性。
    在这里插入图片描述
  2. 官方文档中介绍的 Level类型。
    在这里插入图片描述

MediaCodec 中关于 Level 的解释

  • MediaCodec 中关于levelMediaCodecInfo.CodecProfileLevel方法中定义的类型。
    在这里插入图片描述

参考

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

http://www.ppmy.cn/news/1337628.html

相关文章

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

【Midjourney】关于标准模型的几个按钮都有什么用

当用户在Midjourney Bot所在的服务发送/settings命令时就能调出设置窗口&#xff0c;本文将介绍该窗口中的各个按钮都有什么作用。 1.RAW Mode 依照官方的描述来看V5.2模型似乎带有自动优化功能&#xff0c;会对用户输入的关键词空白描述进行补全和优化&#xff0c;以便修复所…

·备忘录模式

备忘录模式 备忘录模式 备忘录模式 介绍&#xff1a;在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;这样可以在以后将对象恢复到原先的状态。 实现&#xff1a;备忘录类&#xff0c;有一个私有状态属性&#xf…

Apollo与微服务架构

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言引言&#xff1a;1. 什么是微服务架构&#xff1f;2. 微服务架构的组成要素…

从比亚迪的整车智能战略,看王传福的前瞻市场布局

众所周知&#xff0c;作为中国新能源汽车的代表企业&#xff0c;比亚迪在中国乃至全球的新能源汽车市场一直都扮演着引领者的角色。2024年新年伊始&#xff0c;比亚迪又为新能源汽车带来了一项重磅发布。 整车智能才是真智能 近日&#xff0c;在“2024比亚迪梦想日”上&#xf…

mysql数据库学习记录(一)

文章目录 1.mysql如何加外键关联约束&#xff1f;2.mysql&#xff0c;加外键关联约束有什么作用&#xff1f;3.在MySQL中&#xff0c;可以通过在创建数据表时使用PRIMARY KEY关键字来指定多列联合主键&#xff0c;那么请问联合主键有啥作用&#xff1f;mysql数据表设计好后&…

[数据结构]-哈希

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标&…

Python根据Excel表进行文件重命名

一、问题背景 在日常办公过程中&#xff0c;批量重命名是经常使用的操作。之前我们已经进行了初步探索&#xff0c;主要是通过批处理文件、renamer软件或者Python中的pathlib等模块对当前目录下的文件进行批量重命名。 而今天我们要使用的是PythonExcel的方法对指定目录下的文…