从零了解 H264 结构

引语

提议看一下FFMPEG3IOS版本的进入,本人可以笔记,H264是在编解码器层。。为什么需要编码呢?譬如礼物屏风是1280*720.一秒24张图片.这么本人一秒的视频的唱片是

1
1280*720(位像素)24(张) / 8(1八位位组8位)(终结:B) / 1024(终结:KB) / 1024 (终结:MB) = 2.64MB

一秒钟的唱片具有唱片量。。在1分钟内将有超越100 MB。。这对用户来被说成一通真正的灾荒。。因而如今本人需要一种紧缩办法来扩大某人的权力唱片的堆积起来。 在数元率(BPS)的影响下,鲜艳的的视频的依然能找到的。。
H264: H264/AVC是一种广泛地应用的编码办法。。本人会带你去那边。。以次是从大到小的次。 序列,图像,片组,片,NALU,宏块,亚洲直觉,块,像素。

一. 规律

原始码流(裸流)是由东西确认鲁结合,其功用分为两个约定。,VCL(视频的编码层) 广播网萃取物层

1
视频的(视频的) Coding 层) + 广播网(广播网) Abstraction 层).
  1. VCL:计入中心紧缩引擎和块,宏块和使成比例的表情级限界,设计球门是尽量独同时实行无效的编码。;
  2. NAL:本着良心的将VCL营造的位串适配到杂多的广播网,触及所局部表情评分下的片级。。

在VCL转会或记忆唱片过去的,这些编码的VCL唱片,被晒或封装到NAL细胞中。。(纳鲁)。

1
纳鲁 = 一组对应于视频的编码的NALU姓名牌教训 + 原始八位位组序列使担负(RBSP),Raw Byte Sequence 无效堆积)

如图所示,上图中纳卢最先 + RBSP 就相当于纳鲁(Nal 单位),每个单元由孤独的NALU转会。。该布置都是因NALU的。,计入纳鲁,本人变得流行的布置。。
本原 NALU 常常单元 [StartCode] 纳鲁 割穗机 纳鲁 无效堆积 三使成比例是由,在位的 Start Code 用于打分这是纳鲁 单元的开端,必然是00 00 00 01” 或”00 00 01”

由三使成比例是由,forbidden_bit(1bit),nal_reference_bit(2bits)(先),nal_unit_type(5bits)(典型)。

举例来说:

1
2
3
4
0000000106: SEI教训  
0000000167: 0x67&0x1f = 0x07 :SPS
0000000168: 0x68&0x1f = 0x08 :PPS
0000000165: 0x65&0x1f = 0x05: IDR Slice

2. RBSP


图 6.69 RBSP 序列范例


表 6.25 RBSP 特性描述。

SODB和RBSP
SODB 唱片微不足道的串 -> 它是原始唱片编码。
RBSP 原始八位位组序列堆积 -> 添加原始编码后的唱片。 最后部份微不足道的。东西 微不足道的1位0。,大意是八位位组排整齐。

二. 从NALU开端,课题专业语词。

1
2
3
1帧 = n件
1片 = N宏块
1宏块 = 16x16yuv唱片

1. 使成比例(胶片)

如图所示,NALU的主震相中计入了使成比例(胶片).

1
细分影片 = Slice Header + Slice Data

影片是东西出席的的新想法。,一种编码后无效切除的想法。一张图片有东西或多个使分开。,影片由NALU训练,经过广播网传送。。只因NALU不必然是使成比例的。,这是东西广大的而非必需的的状态。,因 NALU 它还可以装载宁静用于特性描述视频的的教训。

这么为什么要设置影片呢?
设置影片的球门是限度局限使遗传和使遗传。,编码薄脆饼一定是倒数孤独的。。一张影片的预测不一定因O做成某事宏块。,正是的,一口胶片做成某事预测偏离就无力的激增到OTE。。

你可以在下面的图片中笔记。,在每个图像中,几个的宏块(宏块)以片的设计一个版式地方。。视频的图像可以用东西或多个使成比例训练。,每个块计入东西整体宏块。 (MB),每个片剂计入反正宏块。。
有五种典型的片剂。

意思
I 片 只计入宏块
P 片 计入P和宏块。
B 片 计入B和宏块。
SP 片 计入P 和/或 宏块,不相同的人微不足道的流私下的切换
SI 片 一种特别典型的编码宏块

2. Macroblock(宏块)

刚要我提到了影片做成某事宏块。这么宏块是什么呢?
宏块是视频的教训的次要同位素载体。。编码图像通常被划分为多个图像。宏块和解。计入每个像素的光强度和色度教训。。视频的解码的次要任务是做准备一种无效的获取PI的办法。。

1
宏块 = 东西16*16光强度像素 + 东西8×8Cb + 东西8×8粉饰像素块分解。(YCbCr 属于 YUV 家族的一把手,在YCbCr 中 Y 是指光强度组分,Cb 蓝色组分,而 Cr 求教于白色色度组分
宏块归类 意思
I 宏块 从应用电流膜解码像素用作帧内预测的求教于。
P 宏块 应用编码图像作为求教于来举行帧内预测。,在帧内编码的宏块可以促进划分为宏块。。万一你选择8×8訾红快,它可以促进划分为不相同的人的种子宏块。,它的度是8×8。,8×4,4×8,4×4
B 宏块 帧内预测是应用双向求教于图像(电流和

句子营造元素的约定布置,在 中,句法元素被团体成 序列、图像、片、宏块、子宏块五级。
表情元素的约定布置有助于节省位流MO。。像,另东西抽象。,通常在不相同的人的使分开私下有相同的人的唱片。,万一每个使分开同时提供这些唱片,这将原因行为准则流的大胜。。更为无效的做法是将该图像的公共教训选取浮现,在图像层面上形成物句法元素,在片级,独一无二的影片的表情元素是要不是的。。


图形宏块的表情单位

宏块归类 意思
mb_type 决定这点 MB 它是帧内或帧间(P) 或 B)编码典范,决定这点 MB 切除堆积起来
mb_pred 帧内预测典范(帧内宏块)决定表的决定 0 或表 1 求教于图 像,从每个宏块中断裂出不相同的人编码块的乐章用无线电引导,除 8×8 块内宏块切除 MB)
sub_mb_pred (仅限于 8×8MB 切除帧内 MB)决定每一子宏块的子宏 块切除,每个宏块分区表 0 和/或表 1 求教于图像; 因宏块切除的乐章用无线电引导差分编码。
coded_block_pattern 标志哪一点 8×8 块(光强度和色)封装 编码使互换位置系数
mb_qp_delta 量子化参量更衣值
residual 残差图像SAMPL对应的预测使互换位置系数

三。抽象,场与帧

图像是东西集中想法。,顶 场、底场、帧可以高尚的图像。。在四周 协定来说,本人熟识什么?,像: I 帧、P 帧、B帧等,竟,本人对图像的想法举行了体现和缩形技术。。本人 在 图片中提到的设计通常指的是菲尔的抽象。;

视频的的东西或多个帧可以用来发生东西。编码图像。帧通常是东西完好无缺的图像。。收集视频的信号时,万一本人应用隔行扫描(奇偶数),扫描帧分为两使成比例。,每个使成比例高尚的 [场],争辩定单氛围 [顶部领域][底场]

方法 功能域
帧编码办法 应采取较小或动态活动力的图像。
场编码办法 活动力较大的影片


图2.3

4. I,P,B帧和PTS/DTS

帧归类 国文 意思
I帧 帧内编码帧,也称为帧内 picture I 帧通常是每一帧。 GOP(MPEG) 视频的紧缩技术中应用的高音的帧。,严格意义上的紧缩,作为随机接入的求教于点,它可以被敬重是东西图像。。I帧可论点图像紧缩产额。
P帧 前向预测编码帧,也称为预测帧 经过广大的将在表面之下图像序列中后头已编码帧的工夫冗余教训来紧缩转会唱片量的编码图像,也称为预测帧。
B帧 双向预测帧,也称为双向 interpolated prediction frame 源图像序列过去的的编码帧都被并入,也照顾源图像序列后头已编码帧私下的工夫冗余教训来紧缩转会唱片量的编码图像,也称为双向预测帧。

I P B的不相同的人帧
I 设计:可以经过视频的去紧缩成东西完好无缺的图片。
P frame:你需要在它后头提到东西I。 frame 或乙 设计营造完好无缺的图片。。
B frame:则要求教于其前东西I或许P帧及其后头的东西P帧来营造一张完好无缺的图片。

著名的 意思
表现(表现) Time 邮票) PTS次要用于测解码后的视频的帧在那时显示。。
译码(译码) Time 邮票) DTS大体而言支援内存做成某事微不足道的流,而且当它开端发送时。。

DTS与PTS的分别
DTS的次要用户视频的解码,解码阶段应用。PTS次要用于视频的同步的和出口。,展览品应用。不不得不B 帧,当出口序列相同的人时。。

5. GOP

GOP是图片组。,GOP是一组陆续的图片。。
GOP通常有两个数字。,譬如M=3,n=i帧与p帧私下的间隔。,n明确提出两个I帧私下的间隔。。如今民主共和党的布置是

扩大某人的权力图片集可以无效扩大某人的权力编码VIDE的性能,只因它也使还原了视频的的块。,竟至健康状况如何选择,这松劲需要。

6. IDR

序列的第东西图像高尚的。 IDR 图像(马上恢复的图像),IDR 图像都是 I 帧图像。
帧内预测在I和IDR帧金中都应用。。我用不着求教于究竟哪个帧。,只因,在P帧和B帧晚年的,可以求教于帧。。IDR不准正是的做。。
像。
IDR1 P4 B2 B3 P7 B5 B6 I10 B8 B9 P13 B11 B12 P16 B14 B15 在这里的B8可以打断I10来指P7。

中心功能:
引入 IDR 对图像举行解码以举行重行同步的。,当解码器解码时 IDR 图像时,马上痛打求教于帧队列。,出口或放任懂得解码唱片。,重行查找参量集,启动东西新的序列。。正是的,万一在前东西序列中在次要有毛病的,在在这里,本人可以有机会重行同步的。。IDR图像后的图像将无力的被应用IM的唱片解码。。

三. 帧内预测和帧间预测

1. 帧内预测(也称帧内紧缩)

本人可以经过高音的段。 1、2、3、4、5 东西块的编码来计算和计算第东西。 6 块的编码,从此处,何苦是权利的。 6 块被编码。,相应地紧缩高音的 6 块,节省了余地

2. 帧间预测(也称帧间紧缩)

可以笔记前后两帧的差额竟是很小的,此刻应用帧间紧缩争论常有意思的。。
在这里触及了几个的要紧的想法。:块婚配,残差,乐章搜索(乐章评价),乐章编造.

帧间紧缩最经用的办法是块婚配(块) 婚配)。看一眼先前编码的帧。,与礼物块最相仿性的块。,从此处,我用不着对礼物块的愿意的举行编码。,它只需要对礼物块和礼物块私下的彻底地差额举行编码。(残差)那就够了。找寻最贫穷的块的列队行进称为。乐章搜索(乐章) 搜索),又叫乐章评价。应用残差和原始块,本人可以推断出乐章编造(乐章) 编造).

四. 延伸

比来我才了解FFmpeg也支援h264的硬编。还没有校验。,接下来我会写演示来校验。。尝试了用零碎径直汇编者硬的办法。。交界面正是复杂。。传说iOS11的官方的版本将颁布。。眼前,beta版本权不受支援。。万一有支援,我将在高音的次使更新我的视频博客。,敬请期待!

1。新生代视频的紧缩编码基准
2。用复杂的报告变得流行H264视频的编码布置。
三。向前视频的的几个的想法
,B帧和PTS,DTS私下的相干

发表评论

Close Menu