背景:由於近期項目需求,需要我們對海康推送的視頻流進行解析。
根據海康後臺管理平臺,可以得到海康推送的視頻流信息爲以RTP協議推送的PS流。廢話不多說,直接上碼流,一步步分析。
80 60 00 00 00 00 00 00 55 66 77 8800 00 01 ba 45 74 2d b4 84 01 04 e6 6b
fe
ff ff 00 5c b2 18 00 00 01 bb 00 12 82 73 35 04 e1 7f e0 e0 80 c0 c0 08 bd e0
80 bf e0 80 00 00 01 bc 00 4e e5 ff 00 24 40 0e 48 4b 01 00 e2 17 ce 2c 3a ef
00 ff ff ff 41 12 48 4b 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 20
1b e0 00 1c 42 0e 07 10 10 ea 07 80 04 38 11 30 00 00 1c 20 2a 0a 7f ff 00 00
07 08 1f fe f0 87 1f 79 94 46 00 00 01 e0 00 1e 8c 80 07 21 5d 0b 6d 21 ff fc
00 00 00 01 67 4d 00 2a 9d a8 1e 00 89 f9 66 e0 20 20 20 4000 00 01 e0
00 0e
8c 00 03 ff ff fc
00 00 00 01 68 ee 3c 80 00 00 01 e0 00 0e 8c 0002 ff fc 00
00 00 01 06 e5 01 85 80 00 00 01 e0 ff c6 8c 0004 ff ff ff fd
00 00 00 01 65
b8 00 00 03 02 ea c4 09 ff f8 81 13 b6 78 09 2d 07 eb 1d ec df ff d4 a4 0c f3
ed 8d 14 81 61 5c 60 fe 41 a7 13 b3 44 26 d7 0d
1.從開頭解析,開頭的前12位爲rtp的頭部信息(標黃的部分)
2.緊接着00 00 01 ba是PS的頭信息,根據PS協議得知,前14位是固定位數,前14位的最後一位和32(&0x07)取模得到後面的
擴展位數
3.緊接着00 00 01 bb是系統頭信息,其規則是緊跟着後面的兩位表示該頭部信息剩餘的長度,此處爲00 12轉爲十進制爲18,也就是往後18位,爲下一個頭信息
4.接上面第三點得到接下來的頭信息爲psMap的頭信息(psm),其解析和第三點類似,緊跟後面兩位爲長度信息,跳過該長度即爲下個頭信息的開頭
5.接上面第四點,得到接下來的頭信息爲00 00 01 e0,該頭信息爲pes包,pes包中包含了真實視頻流的信息,00 00 01 e0後面兩位表示pes包的長度,隔兩位,得到pes包的自減值,跳過這些位數後,後面的就是視頻流信息,此處爲H264視頻流,開頭爲00 00 00 01 67