从零了解H264结构 – andywang201001的博客

转自:

序论

提议看一下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:包孕心紧缩引擎和块,宏块和部件的式级构成释义,设计有意是尽量高效地孤独于N编码。;
  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”

1. NAL Header

由三把正式送入精神病院是由,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. Slice(片)

如图所示,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 frame:本性可以经过电视的泄压算法泄压成一张独立的极盛时的图片。
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相干

发表评论

电子邮件地址不会被公开。 必填项已用*标注