H265/HEVC编码NAL的单元的介绍

一、引言

与H.264/AVC 类似,H265/HEVC也采用视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer, NAL)的双层结构,以适应不同网络环境和视频应用。网络适配层的主要任务是对视频压缩后的数据进行划分和封装,并进行必要的标识,使其更好的适应各种网络环境。

二、NAL单元的基本结构

从NAL单元的基本结构可知,NAL单元由NAL头和原始字节序列负载(Raw Byte sequence payload,RBSP)

三、NAL头的语法定义

forbidden_zero_bits(1bit)

默认为0,值为1时表示错误,当网络发现NAL单元有比特错误时可设置该比特为1,以便接收方纠错或丢掉该单元

nuh_layer_id(6bit)

layerId预留位,用来指示VCL数据属于哪个层或者标识non-VLC数据占用NALU header的第一个字节的最后一位和第二个字节的前五位,默认全为0,用于未来扩展,如用来表示可分级视频或3D视频等

nuh_temporal_id_plus1(3bit)

该字段默认为1。temporal_id表示NAL单元的时域层级,根据图像时域层级就可以确定其重要性,如时域层级小的图像不会参考时域层级大的图像,如通常参数集或者idr帧的temporal_id为0。

nal_unit_type(6bits)

用来标识NAL单元类型。通常NAL单元类型包括参数集(VPS,PPS,SPS,SEI)以及slice 数据(如IDR,其他类型帧等)。

由上可知,H265的NAL的类型相对h264多了很多,取值从0~63,其中48~63语义尚未明确,不会影响解码过程。这里总结一下H265的帧相关概念

IRAP:随机接入点(Intra Random Access point),其后置图像必须能独立正确解码。

Leading前置图像:解码在后,播放在前(类似B帧)。

TAIL后置图像:解码和播放都在其后。

RADL(Random Access Decoder Leading):不依赖IRAP前的前置图像,即从IRAP图像介入可以正确解码。

RASL(Random Access skip Leading):依赖IRAP前的前置图像,即从IRAP图像介入不可以正确解码。

IRAP分三种:

IDR(instantaneous decoder refreshing):IDR不依赖IDR帧前的图像解码,h264也有IDR帧概念。

CRA(clean Random access):允许其前置图像是RASL,以提高编码效率,当直接从CRA图像接入时,其RASL图像无法解码。

BLA(Broke Link access):特殊的CRA,明确其RASL不需要解码

TSA(Temporal sub-layer access):该图像可以切换到时域层大于或等于该图像时域层标识号的时域层

STSA(Step wise Temporal sub-layer access):从该图像切换该图像所属的时域层。

四、NAL单元的负载

视频编码输出的包含不同内容的数据比特流片段,这些比特流片段为SODB(String Of Data Bits),SODB 从左到右、从高到低顺序排列。在SODB后添加一些一个bit的停止比特和多个0,就形成了RBSP。

RBSP生成规则如下:

  1. 如果SODB为空,生成的RBSP也是空
  2. RBSP第一个字节直接取SODB最左端的8bit,第二个字节取SODB接下来的8bit,以此类推,直接到SODB所剩下的内容不足8bit为止。
  3. RBSP的下一个字节首先包含SODB的最后比特,然后添加比特1(RBSP停止位)。如果该字节包含比特数小于9,在后面添加0直到该字节包含8比特。

RBSP可以包含SS的压缩数据,也可以包含VPS,PPS,SPS,SEI等。

注意RBSP可以不能直接NAL单元负载,还有解决冲突问题。一般编码器输出端的NAL单元是带启动码0x000001或者0x000001。或者系统保留某些数据(如0x000002)。RBSP做了以下冲突处理:

0x000000->0x00000300;

0x00001->0x00000301;

0x000002->0x00000302;

 0x000003->0x00000303;

五、参数集
H265/HEVC包含参数集(VPS,SPS,PPS,SEI),相比h264多了一个VPS。
1)VPS(视频参数集)
主要用传输视频分级信息,有利于兼容可分级视频以及3D视频,如视频包含最大的层级,也可包含profile,level等信息。一个给定的视频序列,无论它的SPS是否相同,都参考相同的VPS
2)SPS(序列参数集)
主要包含一个CVS(Code Video Sequence 编码视频序列,类似GOP)所有编码图像共享的编码参数,SPS通过PPS引用而作用图像
3)PPS(图像参数集)
一副图像序列,slice 通过引用PPS进行解码

 VPS,SPS,PPS和SS存在各级引用关系,一副图像中的所有SS引用同一个PPS,一个CVS中所有PPS引用同一个SPS。同一个视频序列中的所有SPS引用一个VPS。VPS,SPS,PPS存在相同参数,后者会覆盖前者。

六、h265的数据分析

以下是一个h265的视频序列打开的NAL类型如下

以上就是关于h265/hevc的NAL单元的介绍更多更详细请关注公众号AV_Chat

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江海细流

如该文章对你有帮助,请支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值