详解H.264的型和级
来源:互联网 发布:大麦盒子软件排名 编辑:程序博客网 时间:2024/05/16 17:52
以下是反映H.264 Profile、Level、Encoder之间关系的三张简图
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):范例:高分辨率@帧率(最大存储帧数)。
h.264 software encoder在视频压制时,码率的挑选是很容易判断的。而分辨率与帧率 和 级别 的关系,就没那么明显了。所以我们需要找到计算方法。
首先看看常见视频分辨率所配套的级别——
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)
在前面的级别详表中,还有一个神秘的字段——最大存储帧数(max stored frames)。它是从何而来的呢?
最大存储帧数与DPB有关——DPB:decoded picture buffer,解码图片缓存区。在做视频解码时,需要将最近的若干幅参考帧缓存起来,这个缓冲区就叫做DPB。所以最大存储帧数也是最大参考帧数(ref)。DPB一般以宏块数为单位(DpbMbs),计算公式为——
DpbMbs = ref(参考帧数) * PicWidthInMbs(水平宏块数) * FrameHeightInMbs(垂直宏块数)
在不同的级别(Level)下,最大的解码图片缓存区宏块数(MaxDpbMbs)是不同的——
我们可根据 MaxDpbMbs约束 倒推出 最大的参考帧数——
max_ref = min(floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)
注1:floor(x)是向底舍入函数,返回的是小于等于x的最大整数。
注2:因参考帧数(ref)最大只能为16。
转载地址:http://www.cnblogs.com/zyl910/archive/2011/12/08/h264_level.html- 详解H.264的型和级
- H.265与H.264的差异详解
- 【H.264/AVC视频编解码技术详解】十五、H.264的变换编码(二):H.264整数变换和量化的实现
- H.264的两个概念:DC系数和AC系数。 MV预测过程详解(附图)
- H.264的两个概念:DC系数和AC系数。 MV预测过程详解(附图)
- H.264的两个概念:DC系数和AC系数。 MV预测过程详解(附图)
- H.264 标准详解
- H.264详解(二)
- H.264详解(一)
- H.264详解
- H.264详解
- H.264详解
- H.264 Nalu 详解
- H.264详解
- h.264编解码器详解
- H.264 详解
- 【H.264/AVC视频编解码技术详解】四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码
- 什么是H.265编解码器和H.265优于H.264的优势?
- Let us learn C in Code <0>
- 一步步学习SPD2010--第八章节--理解工作流(3)--使用操作和条件
- Javascript单元测试框架比较Qunit VS Jasmine
- 由数字、26个英文字母、下划线或汉字的正则表达式
- 一步步学习SPD2010--第八章节--理解工作流(4)--修改工作流
- 详解H.264的型和级
- Linux 之V4L2图像采集程序设计
- JAVA概述(11) 面向对象(封装)
- java中equals和==的区别
- 中国军人参演“金色眼镜蛇”:泰国华人套近乎
- 一步步学习SPD2010--第八章节--理解工作流(5)--部署工作流
- 解读一淘网(etao)首页响应式兼容ie6~ie8实现方法
- 数字星球崛起,它将是谁的“美丽新世界”?
- Mac OSX 快捷键&命令行