万老师《H.265/HEVC》第九章:网络适配层(NAL层)

网络适配层:将编码好的数据进行:划分、封装、标识,从而适应网络。
视频编码完是VCL层,然后去NAL层包装成各个NALU,再去网络中传输。

适应网络的原因:
不同的网络环境:有线网络的最大传输单元1500字节,无线网络小得多;
不同的应用需求:直播类对实时性要求高的情况用UDP,注重完整性和正确性的用TCP/IP。

适应网络的方式:
将视频压缩数据划分成不同特性的NAL单元,即NALU,进行封装并标识内容特性在NALU头信息中显示优先级。
网络拥塞时不得不丢弃分组时,解析NALU头,不要丢弃优先级高的,如被参考的图像、头信息等。

NALU的组成:
NALU头:承载NALU载荷的内容特征,如被参考的图像数据,部分参数集信息,序列结束信息等。
NALU载荷(即经过冲突避免的RBSP):包含slice数据、部分参数集信息、结束符等数据。

H.265码流
视频编码输出的压缩数据比特流片段称为SODB(String Of Data Bits),它为最高位有效存储形式,也就是“我们编出来的东西”。
SODB后添加RBSP载荷尾就生成了 RBSP(Raw Byte Sequence Payload,原始字节序列载荷),可以包含一个 SS 的压缩数据,也可以是 VPS、SPS、PPS 等信息。
RBSP前面加上NALU头信息就是一个NALU。若要形成码流,在NALU前加上开始码StartCodePrefix得到一段码流。
StartCodePrefix是开始码,标记一个NALU的开始。有以下两种方式: Annex B和HVCC,其中Annex B在NALU前加0x000001或者0x00000001 ,HVCC则在NALU前加上指示其长度的前缀
NALU header:
在这里插入图片描述
其中NALType指示该NALU为何种类型,如是VPS?SPS?IDR?等

简单来说,SODB前面加个头后面加个尾,就是NALU,一堆NALU在前面加上起始比特排列在一起就是码流了

H265 BitsStream =   StartCodePrefix +NALU 
				  + StartCodePrefix +NALU 
				  + ...... 
NALU  =  NALU header (2 bits) + RBSP
RBSP  =  SODB + RBSP trailing bits

对码流的解码:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/103435304