H265码流分析

H265相比较于H264,除了包含SPS、PPS外,还多包含一个VPS;在NALU header上,H.264的NALU header是一个字节,而H.265则是两个字节。

以0x4001为例,头信息可以被解析成4个部分,其中:

  • forbidden_zero_bit = 0:占1个bit,与H.264相同,禁止位,用以检查传输过程中是否发生错误,0表示正常,1表示违反语法;
  • nal_unit_type = 32:占6个bit,用来用以指定NALU类型
  • nuh_reserved_zero_6bits = 0:占6位,预留位,要求为0,用于未来扩展或3D视频编码
  • nuh_temporal_id_plus = 1:占3个bit,表示NAL所在的时间层ID

对比H.264的头信息,H.265移除了nal_ref_idc,此信息被合并到了nal_unit_type中,H.265NALU类型规定如下:

nal_unit_typeNALU类型备注
0NAL_UNIT_CODE_SLICE_TRAIL_N非关键帧
1NAL_UNIT_CODED_SLICE_TRAIL_R
2NAL_UNIT_CODED_SLICE_TSA_N
3NAL_UINT_CODED_SLICE_TSA_R
4NAL_UINT_CODED_SLICE_STSA_N
5NAL_UINT_CODED_SLICE_STSA_R
6NAL_UNIT_CODED_SLICE_RADL_N
7NAL_UNIT_CODED_SLICE_RADL_R
8NAL_UNIT_CODED_SLICE_RASL_N
9NAL_UNIT_CODE_SLICE_RASL_R
10 ~ 15NAL_UNIT_RESERVED_X保留
16NAL_UNIT_CODED_SLICE_BLA_W_LP关键帧
17NAL_UNIT_CODE_SLICE_BLA_W_RADL
18NAL_UNIT_CODE_SLICE_BLA_N_LP
19NAL_UNIT_CODE_SLICE_IDR_W_RADL
20NAL_UNIT_CODE_SLICE_IDR_N_LP
21NAL_UNIT_CODE_SLICE_CRA
22 ~ 31NAL_UNIT_RESERVED_X保留
32NAL_UNIT_VPSVPS(Video Paramater Set)
33NAL_UNIT_SPSSPS
34NAL_UNIT_PPSPPS
35NAL_UNIT_ACCESS_UNIT_DELIMITER
36NAL_UNIT_EOS
37NAL_UNIT_EOB
38NAL_UNIT_FILLER_DATA
39NAL_UNIT_SEIPrefix SEI
40NAL_UNIT_SEI_SUFFIXSuffix SEI
41 ~ 47NAL_UNIT_RESERVED_X保留
48 ~ 63NAL_UNIT_UNSPECIFIED_X未规定
64NAL_UNIT_INVALID

H.265的NALU类型是在信息头的第一个字节的第2到7位,所以判断H.265NALU类型的方法是将NALU第一个字节与0x7E进行与操作并右移一位,即:

NALU类型 = (NALU头第一字节 & 0x7E) >> 1

与H.264类似,H.265码流也有两种封装格式,一种是用起始码作为分界的Annex B格式,另一种则是在NALU头添加NALU长度前缀的格式,称为HVCC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值