H265碼流分析


H265相比較於H264,除了包含SPS、PPS外,還多包含一個VPS;在NALU header上,H.264的HALU header是一個字節,而H.265則是兩個字節。

以OX4001為例,頭信息可以被解析成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_plus1 = 1:占3個bit,表示NAL所在的時間層ID
對比H.264的頭信息,H.265移除了nal_ref_idc,此信息被合並到了nal_unit_type中,H.265NALU類型規定如下:

nal_unit_type NALU類型 備注
0 NAL_UNIT_CODE_SLICE_TRAIL_N 非關鍵幀
1 NAL_UNIT_CODED_SLICE_TRAIL_R
2 NAL_UNIT_CODED_SLICE_TSA_N
3 NAL_UINT_CODED_SLICE_TSA_R
4 NAL_UINT_CODED_SLICE_STSA_N
5 NAL_UINT_CODED_SLICE_STSA_R
6 NAL_UNIT_CODED_SLICE_RADL_N
7 NAL_UNIT_CODED_SLICE_RADL_R
8 NAL_UNIT_CODED_SLICE_RASL_N
9 NAL_UNIT_CODE_SLICE_RASL_R
10 ~ 15 NAL_UNIT_RESERVED_X 保留
16 NAL_UNIT_CODED_SLICE_BLA_W_LP 關鍵幀
17 NAL_UNIT_CODE_SLICE_BLA_W_RADL
18 NAL_UNIT_CODE_SLICE_BLA_N_LP
19 NAL_UNIT_CODE_SLICE_IDR_W_RADL
20 NAL_UNIT_CODE_SLICE_IDR_N_LP
21 NAL_UNIT_CODE_SLICE_CRA
22 ~ 31 NAL_UNIT_RESERVED_X 保留
32 NAL_UNIT_VPS VPS(Video Paramater Set)
33 NAL_UNIT_SPS SPS
34 NAL_UNIT_PPS PPS
35 NAL_UNIT_ACCESS_UNIT_DELIMITER
36 NAL_UNIT_EOS
37 NAL_UNIT_EOB
38 NAL_UNIT_FILLER_DATA
39 NAL_UNIT_SEI Prefix SEI
40 NAL_UNIT_SEI_SUFFIX Suffix SEI
41 ~ 47 NAL_UNIT_RESERVED_X 保留
48 ~ 63 NAL_UNIT_UNSPECIFIED_X 未規定
64 NAL_UNIT_INVALID
H.265的NALU類型是在信息頭的第一個字節的第2到7位,所以判斷H.265NALU類型的方法是將NALU第一個字節與0x7E進行與操作並右移一位,即:

NALU類型 = (NALU頭第一字節 & 0x7E) >> 1
與H.264類似,H.265碼流也有兩種封裝格式,一種是用起始碼作為分界的Annex B格式,另一種則是在NALU頭添加NALU長度前綴的格式,稱為HVCC。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM