H264码流结构https://blog.csdn.net/weixin_45993872/article/details/141689242(1)H265/HEVC介绍
H265也成为HEVC,是在H264基础上的一种全新的视频编码技术,H265继承了H264的NALU和RBSP等标准,具有更高的压缩比1:200,而H264只有1:100
(2)H265的用处:
随着视频画质的提高,2k、4k甚至是8k,对于网络传输而言,继续使用H264的编码技术,网络的压力是非常巨大的,这就要求使用更高压缩比的技术来缓解网络压力,所以对于大的分辨率的视频一般都会采用H265编码技术。
(3)H264和H265对比
1.编码质量更高:相较于H264,H265编码采用了最小8*8到最大64*64编码宏块,而H264只能是固定的16*16的宏块进行编码,意思就是说H265在编码细节图像质量上要远远高于H264编码
2.节省码率:在相同分辨率的情况下,使用H265编码可以以更低的码率进行传输(码率(Bitrate)是指数据传输时单位时间传送的数据位数,一般用kbps(千位每秒)或Mbps(兆位每秒)作为单位),达到更优势的画面质量,提升了网络的利用率。
3.节省存储空间:因为H265是1:200的压缩比,H264是1:100,所以存储空间要低50%
(4)H265的码流结构
H265和H264一样也是遵循着VCL层和NAL层,也是严格的按照NALU进行划分和编码的,码流结构也是通过起始码0x00000001或0x000001进行NALU的分割。
从这张图可以看出来,一个普通的H265码流基本上都是以:StartCode + VPS + StartCode + SPS + StartCode + PPS + StartCode + SEI + Startcode + I帧 + StartCode + P帧。。。的形式表现出来,和H264不同的是,H265引入了VPS
VPS(视频参数集)00 00 00 01 40 01
VPS主要的作用就是对传输的视频进行等级分类,它有利于兼容各种视频编码的拓展和支持可分级视频编码。VPS是H265的独特功能,因为H265可以在多个子层进行兼容标准的拓展,在H265中第一个NALU就是VPS
可分级视频编码:指的是视频只进行一次压缩,但是可以通过多个帧率或视频质量进行解码,当网络好的情况下,VPS可以传输基本层视频数据和增强层视频数据,当网络不好时VPS只传输基本层视频数据。
SPS(序列参数集):00 00 00 01 42 01
SPS主要功能就是包含编码图像的共享编码参数,在一个H265码流中可能包含一个或多个视频编码序列。SPS主要包含以下部分:自引id、profile(编码等级)、分辨率、总层数、对结构和变换系数的限制信息等。
PPS(图像参数集): 00 00 00 01 44 01
PPS包含了图像的公共参数,一般存储每一帧图像的不同设置参数。其包括:自引信息、初始化图像控制信息、分块信息。初学者在学习SPS和PPS的时候很容易搞混,因为这两个都是存储参数集的结构,但是它和SPS存储的数据有本质的区别。SPS存储的是针对一系列的编码序列的参数,它的标识符是seq_parameter_set_id、帧数等。而PPS是指某一个序列中的某一张具体的图像,其标识符是pic_parameter_id、可选的seq_parameter_set_id、初始化参数等信息
SEI(图像补充增强信息): 00 00 00 01 4E 01
SEI帧就是图像的额外信息,比方说要在HEVC码流中添加弹幕、字幕、时间戳等信息,我们就需要在SEI帧里面添加信息。
I帧(完整的图像):00 00 00 01 26 01
下图就是H264的码流