H264 NALU结构

当前流行的应该还算是h264,接下来中国广播电视会使用avs,而国际上应该会使用h265(要收专利费)和Google的VP9(开源,无专利费)

 

一个h264视频由N组GOP(group of picture)组成,GOP由一帧一帧被编码的图像组成,一帧编码图像由一个片(slice)或多个片组成,一个片由一个或多个宏块(MB,macroblock)组成。对于h264来说,宏块大小固定为16*16(16*16的Y+8*8的Cb+8*8的Cr);

//h265的宏块大小则是根据图像信息由8*8到64*64变化;

 

H264结构上可以分为:

VCL (video codec layer)        视频编码层

NAL (network abstractionlayer)网络提取层

 

其主要优势是兼具良好的视频压缩比和网络亲和性;

 

H264编码过程中有三种不同的数据形式:

SODB: 数据比特串,及VCL数据;

RBSP: 原始字节序列载荷,由SODB后面添加结尾bit,1bit的1,加若干bit的0,加0是为了字节对齐;

EBSP: 扩展字节序列载荷,由RBSP基础上添加仿校验字节(0x03);(Annexb封装方式)

 

 

H264在网络上传输的结构为NALU,即NAL unit,其结构为:NAL头+RBSP;实际传输的数据格式如下:

NALU header

RBSP

NALU header

RBSP

NALU header

RBSP

 

NALU头的结构(1byte):

Forbidden_bit(1bit) + nal_reference_bit(2bit)+ nal_unit_type(5bit)

结构图示例:

Forbidden_bit(1bit)

Nal_refference_bit(2bit)

Nal_unit_type(5bit)

 

1、  forbidden_bit 禁止位,初始为0,当网络发现NAL单元由bit错误时,可设置该bit为1,以方便纠错或丢掉该单元;

2、  nal_reference_bit nal重要性,标志该nal单元的重要性,值越大,越重要,解码器在解码性能不够时会丢掉重要性为0的NAL单元;

3、  nal_unit_type NALU RBSP部分的数据类型

 

NALU列表:

nal_unit_type

NAL类型

nal_reference_bit

0

未使用

0

1

非IDR片

此片属于参考帧,则不等于0;不属于参考帧,则等于0;

2

片数据A分区

同上

3

片数据B分区

同上

4

片数据C分区

同上

5

IDR图像的片

5

6

补充增强信息单元(SEI)

非0

7

序列参数集

非0

8

图像参数集

0

9

分界符

0

10

序列结束

0

11

码流结束

0

12

填充

0

13~23

保留

0

24~31

不保留

0

 


发布了36 篇原创文章 · 获赞 9 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章