H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解(转载)
转自:http://www.cnblogs.com/zyl910/archive/2011/12/08/h264_level.html
对于H.264(MPEG-4 AVC)而言,级别(Level)是与档次(Profile)同等重要的参数。但很多文章说的很简略,只是说标清视频一般用3.1,高清用4,具体含义语焉不详。于是我做了一番研究。
一、级别详表
级别(Level)是用来约束 分辨率、帧率 和 码率 的。详细信息请看表格——
Level | Max macroblocks | Max video bit rate (kbit/s) | Examples for high resolution @ frame rate (max stored frames) | ||||
per second |
per frame | BP, XP, MP | HiP | Hi10P | Hi422P, Hi444PP | ||
1 | 1,485 | 99 | 64 | 80 | 192 | 256 |
128×96@30.9 (8) 176×144@15.0 (4) |
1b | 1,485 | 99 | 128 | 160 | 384 | 512 |
128×96@30.9 (8) 176×144@15.0 (4) |
1.1 | 3,000 | 396 | 192 | 240 | 576 | 768 |
176×144@30.3 (9) 320×240@10.0 (3) 352×288@7.5 (2) |
1.2 | 6,000 | 396 | 384 | 480 | 1,152 | 1,536 |
320×240@20.0 (7) 352×288@15.2 (6) |
1.3 | 11,880 | 396 | 768 | 960 | 2,304 | 3,072 |
320×240@36.0 (7) 352×288@30.0 (6) |
2 | 11,880 | 396 | 2,000 | 2,500 | 6,000 | 8,000 |
320×240@36.0 (7) 352×288@30.0 (6) |
2.1 | 19,800 | 792 | 4,000 | 5,000 | 12,000 | 16,000 |
352×480@30.0 (7) 352×576@25.0 (6) |
2.2 | 20,250 | 1,620 | 4,000 | 5,000 | 12,000 | 16,000 |
352×480@30.7(10) 352×576@25.6 (7) 720×480@15.0 (6) 720×576@12.5 (5) |
3 | 40,500 | 1,620 | 10,000 | 12,500 | 30,000 | 40,000 |
352×480@61.4 (12) 352×576@51.1 (10) 720×480@30.0 (6) 720×576@25.0 (5) |
3.1 | 108,000 | 3,600 | 14,000 | 17,500 | 42,000 | 56,000 |
720×480@80.0 (13) 720×576@66.7 (11) 1280×720@30.0 (5) |
3.2 | 216,000 | 5,120 | 20,000 | 25,000 | 60,000 | 80,000 |
1,280×720@60.0 (5) 1,280×1,024@42.2 (4) |
4 | 245,760 | 8,192 | 20,000 | 25,000 | 60,000 | 80,000 |
1,280×720@68.3 (9) 1,920×1,080@30.1 (4) 2,048×1,024@30.0 (4) |
4.1 | 245,760 | 8,192 | 50,000 | 62,500 | 150,000 | 200,000 |
1,280×720@68.3 (9) 1,920×1,080@30.1 (4) 2,048×1,024@30.0 (4) |
4.2 | 522,240 | 8,704 | 50,000 | 62,500 | 150,000 | 200,000 |
1,920×1,080@64.0 (4) 2,048×1,080@60.0 (4) |
5 | 589,824 | 22,080 | 135,000 | 168,750 | 405,000 | 540,000 |
1,920×1,080@72.3 (13) 2,048×1,024@72.0 (13) 2,048×1,080@67.8 (12) 2,560×1,920@30.7 (5) 3,680×1,536@26.7 (5) |
5.1 | 983,040 | 36,864 | 240,000 | 300,000 | 720,000 | 960,000 |
1,920×1,080@120.5 (16) 4,096×2,048@30.0 (5) 4,096×2,304@26.7 (5) |
Level:级别。
Max macroblocks:最大宏块数。注:宏块尺寸是16x16的。
per second:每秒(的最大宏块数)。可用于约束帧率。
per frame:每帧(的最大宏块数)。可用于约束分辨率。
Max video bit rate (kbit/s):最大视频码率。不同档次(Profile)下会有区别。
BP:Baseline Profile,基线档次。
XP:Extended Profile,进阶档次。
MP:Main Profile,主要档次。
HiP:High Profile,高级档次。
Hi10P:High 10 Profile,高级10位档次。
Hi422P:High 4:2:2 Profile,高级4:2:2档次。
Hi444PP:High 4:4:4 Predictive Profile,高级4:4:4(实验性?)档次。
Examples for high resolution @ frame rate (max stored frames):范例:高分辨率@帧率(最大存储帧数)。
二、推算分辨率与帧率
在视频压制时,码率的挑选是很容易判断的。而分辨率与帧率 和 级别 的关系,就没那么明显了。所以我们需要找到计算方法。
首先看看常见视频分辨率所配套的级别——
480P(800x480):若帧率低于13.5用2.2,若帧率在13.5至27之间就用3,帧率高于27时用3.1。
720P(1280x720):一般为3.1。
1080P(1920x1080):一般为4。
可以看到480P(800x480)有点特殊,所以我以它为例来讲解如何推算分辨率与帧率。
因宏块尺寸是16x16的,我们根据此信息计算出 水平宏块数(PicWidthInMbs) 和 垂直宏块数(FrameHeightInMbs)——
水平宏块数 = ceil(视频宽度 / 16) = ceil(800 / 16) = ceil(50.0) = 50
垂直宏块数 = ceil(视频高度 / 16) = ceil(480 / 16) = ceil(30.0) = 30
注:ceil(x)是向顶舍入函数,返回的是大于等于x的最小整数。
然后计算每帧宏块数(macroblocks per frame)——
每帧宏块数 = 水平宏块数 * 垂直宏块数 = 50 * 30 = 1500
查上面的级别详表,可知支持 每帧宏块数1500 的最低级别是2.2。
级别2.2所允许的 每秒最大宏块数(Max macroblocks per second) 是 20250。20250 / 1500 = 13.5。即最高支持每秒13.5帧。
提高一个级别,级别3所允许的 每秒最大宏块数 是 40500。40500 / 1500 = 27。即最高支持每秒27帧。
再提高一个级别,级别3.1所允许的 每秒最大宏块数 是 108000。108000 / 1500 = 72。即最高支持每秒72帧,够用了。
当宏块数超过级别的约束时,x264会显示这样的警告信息——
x264 [warning]: frame MB size (120x68) > level limit (5120)
现在来做做练习题,巩固一下所学知识吧——
1. 720P(1280x720)视频在级别3.1下,最高支持每秒多少帧?
2. 1080P(1920x1080)视频在级别4下,最高支持每秒多少帧?
三、最大存储帧数、DPB 与 MaxDpbMbs
在前面的级别详表中,还有一个神秘的字段——最大存储帧数(max stored frames)。它是从何而来的呢?
最大存储帧数与DPB有关——DPB:decoded picture buffer,解码图片缓存区。在做视频解码时,需要将最近的若干幅参考帧缓存起来,这个缓冲区就叫做DPB。所以最大存储帧数也是最大参考帧数 (ref)。DPB一般以宏块数为单位(DpbMbs),计算公式为——
DpbMbs = ref(参考帧数) * PicWidthInMbs(水平宏块数) * FrameHeightInMbs(垂直宏块数)
在不同的级别(Level)下,最大的解码图片缓存区宏块数(MaxDpbMbs)是不同的——
Level | MaxDpbMbs |
1 | 396 |
1b | 396 |
1.1 | 900 |
1.2 | 2,376 |
1.3 | 2,376 |
2 | 2,376 |
2.1 | 4,752 |
2.2 | 8,100 |
3 | 8,100 |
3.1 | 18,000 |
3.2 | 20,480 |
4 | 32,768 |
4.1 | 32,768 |
4.2 | 34,816 |
5 | 110,400 |
5.1 | 184,320 |
我们可根据 MaxDpbMbs约束 倒推出 最大的参考帧数——
max_ref = min(floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)
注1:floor(x)是向底舍入函数,返回的是小于等于x的最大整数。
注2:因参考帧数(ref)最大只能为16。
练习题——
1. 720P(1280x720)视频在级别3.1下,最高支持多少个参考帧(最大存储帧数)?级别3.2、4 下呢?
2. 1080P(1920x1080)视频在级别4下,最高支持多少个参考帧(最大存储帧数)?级别5、5.1 下呢?
(完)
参考文献
~~~~~~~~
http://en.wikipedia.org/wiki/H.264
H.264/MPEG-4 AVC
转载于:https://www.cnblogs.com/lance-ehf/p/4548265.html
H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解(转载)相关推荐
- H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解
对于H.264(MPEG-4 AVC)而言,级别(Level)是与档次(Profile)同等重要的参数.但很多文章说的很简略,只是说标清视频一般用3.1,高清用4,具体含义语焉不详.于是我做了一番研究 ...
- 【十五】 VVC/H.266 | 帧内帧间联合预测技术CIIP详解
文章目录 一.基本原理 二.具体技术细节 一.基本原理 CIIP是帧内帧间联合技术,这属于Merge系列技术的一个分支.该技术需要计算当前预测块的帧内预测值,即用传统的帧内预测模式去预测当前块的像素值 ...
- 视频传输——1.AVC/H.264
背景 AVC(Advanced Video Coding)全称是高级视频编码,是一种视频编解码技术标准. 一直以来,视频编解码技术有两套标准,分别是国际电信联盟(ITU)的H.26x系列和国际标准化组 ...
- H.264视频的RTP有效负载格式 (RFC-3984)
RFC文档链接 本备忘录的状态 略 摘要 本备忘录描述了ITU-T建议的H.264视频编解码器和技术上相同的ISO/IEC国际标准14496-10视频编解码器的RTP有效载荷格式.RTP有效载荷格式允 ...
- h.264并行解码算法分析
并行算法类型可以分为两类 Function-level Decomposition,按照功能模块进行并行 Data-level Decomposition,按照数据划分进行并行 Function-le ...
- 面试题目--MPEG4与H.264的区别
一.音频压缩编码标准. 1. MPEG1标准 MPEG1音频压缩算法特点: 1) 编码器的输入信号为线性PCM信号,采样频率是32KHz,44.1kHz或者48kHz,输出码率为32- ...
- H.264压缩算法详解
H.264压缩算法详解 H.264是一种视频高压缩技术,全称是MPEG-4 AVC,用中文说是"活动图像专家组-4的高等视频编码",或称为MPEG-4 Part10.它是由国际电信 ...
- H.264与x264的区别
1.H.264是MPEG4的第十部分,是一个标准. 对头,国际上两个视频专家组(VCEG和MPEG)合作提出的标准,两个专家组各有各的叫法,所以既叫H.264,也叫AVC. 2.x264是一个编码器, ...
- MPEG4与H.264的区别(音视频规范总结)
一.音频压缩编码标准. 1.MPEG1标准 MPEG1音频压缩算法特点: 1)编码器的输入信号为线性PCM信号,采样频率是32KHz,44.1kHz或者48kHz,输出码率为32-384Kbit/s ...
最新文章
- nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问
- Java中判断String对象是否为空的方法
- B - Collisions
- POJ2752KMP逆序处理
- 加上项目路径 spring security忽略不生效_Spring 常见面试题「收藏」
- H265编码等级以及图像的基础知识
- ZooKeeper 典型应用场景有哪些?
- 小米总参php面试题_php面试题之二——Javascript(基础部分)
- mysql 数据备份方案_MySQL常见备份方案
- js this指向分析
- Desktop Video for Mac(桌面视频)最新版
- 记常见的计算机术语(不停更新)
- 计算机中vlookup函数公式,Excel表中VLOOKUP函数使用方法和操作实例
- android实现推箱子代码,android开发--推箱子小游戏(二)
- 三八节礼物推荐,不能错过的四款数码好物推荐
- mysql悲观锁for update
- 如何写SCI文章-转自知乎
- 项目章程的主要内容#软考高级信息系统项目管理师/高项读书笔记#3
- 前端ES6的语法整理
- 基于SpringBoot和Vue的企业级中后台开源项目