H264
H264数据结构:
在H264结构中,一个视频图像编码后的数据为一帧,一帧由一个片(slice)或多个片组成,一个片由一个或多个宏组成,一个宏块由16*16的YUV数据组成。宏块作为H264编码的基本单元。
1.VCL video coding layer 视频编码层。
2.NAL network abstraction lay 网络抽象层。
VCL是对狠心算法引擎,块,宏块及片的语法级别的定义,它最终输出编码完的数据。
NAL层定义片以上的语法级别(序列参数集和图像参数集,针对网络传输)
H264网络传输的结构:
H264子网络传输的是NALU,NALU的结构是NAL头+RBSP(视频编码数据),实际传输中的数据如图:

NALU头结构
长度1 BYTE
forbidden_bit(1bit):金志伟,初始值为0,当网络发现NAL单元比特错误时可设置该比特为1,以便接受方纠错或丢弃该单元。
nal_reference_bit(2bit):NAL重要性知识,标志NAL单元的重要性,值越大越重要,解码器在解码处理不过来的时候,可以丢掉重要性为0的NALU。
nal_unit_type(5bit):知识NALU的类型,需要关注的类型 5 IDR , 6 视频序列解码的增强信息 7 SEI
序列参数集(SPS) 8图像参数集(PPS)

切片结构:


几种分包格式:
STAP(STAP-A/B)一个RTP包中携带多个NALU单元,这些NALU的时间戳都一直。
MTAP一个RTP包中携带多个NALU单元,这些NALU的时间戳都不一直。
FU(FU-A/B)一个NALU由多个RTP包携带。
FU-A封包
分包目的:图像经过编码器产生NALU后,其数据很可能大于UDP所能携带的最大负载长度(受MTU大小限制),所以一个NALU会被分到多个RTP包中携带。

FU indicator结构:

F: 指示NALU是否有错误
NRI:指示该NALU的正确性
TYPE:指示该NALU的分包模式,FU-A值为28.
FU header结构:

S标识开始,E标识结束,TYPE标识NALU类型。
H265
nal_uint_header(){
forbidden_zero_bit:1
nal_unit_type:u(6)
nuh_layer_id:u(6)
nuh_temporal_id_plus1:u(3)
}
NALU的类型,主要关注的类型:VPS32,SPS 33, PPS 34 IDR_W_RADL 19
·关注码流的顺序: VPS SPS PPS IDR(IDR_W_RADL)
FU-A

FU NAL HDR
结构等同于NALU header的,但是type字段与H264 FU indicator的type字段一样,指示的是封包方式FU-A 49 STAP 48
FU HEADER = H264
本文详细介绍了H264和H265编码标准的关键概念,包括数据结构、网络抽象层(NAL)单元及其在网络传输中的应用。通过分析不同分包格式的作用,帮助读者理解视频编码在实际网络传输过程中的实现细节。

531

被折叠的 条评论
为什么被折叠?



