? ? 對rtsp來說,要播放h265只要正確解析sdp和rtp包即可,這里分享下h265 sdp&rtp相關(guān)知識點,希望有用.
? ?1.?H265 Nal Unit Header 簡單介紹:
? ? H264的Nal Unit頭是一個字節(jié),265變成兩個字節(jié):

? ? ?F: 1 bit. forbidden_zero_bit. ?265要求是0,是1的話指示語法違規(guī)等.
? ? ?Type: 6 bits. Nal類型. ?vps是32, sps是33, pps是34, 前綴sei是39. IDR是19和20.
? ? ?LayerId: 6 bits. nuh_layer_id. 現(xiàn)在是0,將來可能擴展用.
? ? ?TID: 3 bits. nuh_temporal_id_plus1. TemporalId 是TID-1.
? ? 2. SDP 參數(shù)介紹:
? ? 2.1 IETF 分配給h265的媒體子類型如下:
? ? Type name: ? ? video
? ? Subtype name: ?H265
? ? 可選參數(shù):
? ? ?profile-space, tier-flag, profile-id, profile-compatibility-indicator, interop-constraints,level-id, sprop-sub-layer-id, recv-sub-layer-id, max-recv-level-id, tx-mode, sprop-vps, sprop-sps,? ?sprop-pps等等, 具體請參考相關(guān)文檔,建議解析sprop-vps, sprop-sps, sprop-pps.
? ? 2.2 SDP 舉例:
? ? m=video 0 RTP/AVP 96
? ? a=rtpmap:96 H265/90000
? ? a=fmtp:96 profile-space=0;profile-id=0;tier-flag=0;level-id=0;interop-constraints=000000000000;sprop-vps=QAEMAf//AIAAAAMAAAMAAAMAAAMAALUCQA==;sprop-sps=QgEBAIAAAAMAAAMAAAMAAAMAAKACgIAtH+W1kkbQzkkktySqSfKSyA==;sprop-pps=RAHBpVgeSA==
? ?注意編碼名稱必須是:H265, Clock rate必須是90000.
? ?3. RTP 打包格式.
? ?實際中其實就用到兩種格式,一種是一個nal單元打包到一個rtp包中。一種是nal單元比較大,分片打包在多個rtp中.
? ?3.1?單個Nal單元打包:

? ? PayloadHdr 把 NAL單元頭填入就好.
? ? 3.2 Nal單元分片打包:

? ? PayloadHdr還是拷貝NAL單元頭,但是要把Type換成49.? FU header 就一個字節(jié),格式如下:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|S|E| ?FuType ? |
+---------------+
S:為1表示第一個分片。 E:為1表示表示最后一個分片。FuType就是實際的Nal type類型。
4. 小結(jié):
h265和h264有很多相似之處,都有sps和pps,用00 00 00 01進行nal 單元分隔. 如果想測試h265 rtsp播放效果,可以從github下載播放器測試h265播放效果。?更多問題歡迎交流:294891451499687479。