chunk rtmp 幀 RTMP協議詳解(三)

2021-10-17 06:29:23 字數 1135 閱讀 4289

chunk msg header:

chunk msg header的長度是可變的,chunk

msg header可變的原因是為了壓縮傳輸的位元組數,把一些相同型別的chunk的head去掉一些位元組,換句話說就是四種型別的包頭都可以通過一定的規則還原成11個位元組,這個壓縮和還原在rtmp協議中稱之為復用/解復用。

那我們以11個位元組的完整包頭來解釋chunk

msg header,如圖所示

+ timestamp

+ message length         + message type id + message

stream id+

timestamp:3bytes

對於type 0的chunk,絕對時間戳在這裡表示,如果時間戳值大於等於0xffffff(16777215),該值必須是0xffffff,且時間戳擴充套件字段必須傳送,其他情況沒有要求。

message length:3bytes

message type id:1byte

message的型別id,具體的值將在後文專門來討論。

message

stream id:4bytes

message

stream id的位元組序是小端序,這個欄位是為了解復用而設計的,rtmp文件上說的相當的模糊,

message stream id可以使任意值,不同的訊息流復用成相同的chunk stream,基於它們的id能夠解復用。於chunk stream 是相關的,這個欄位是乙個不透明的值沒有整明白什麼意思,我的理解就是用來標識和伺服器連線的flash端的序號。

+ timestamp

delta+ message length         + message type id +

3 bytes的chunkhead,該型別既不包含stream id也不包含訊息長度,這種型別用於stream id和前乙個chunk相同,且有固定長度的資訊,例如音訊流格式,在第乙個新的chunk以後使用該型別。如圖所示:

+ timestamp

delta+

0 bytes的chunkhead,這種型別的chunk從前乙個chunk得到值資訊,當乙個單個訊息拆成多個chunk時,這些chunk除了第乙個以外,其他的都應該使用這種型別,

chunk的長度:

rtmp 協議詳解

rtmp協議是乙個網際網路tcp ip五層體系結構中應用層的協議。rtmp協議中基本的資料單元稱為訊息 message 當rtmp協議在網際網路中傳輸資料的時候,訊息會被拆分成更小的單元,稱為訊息塊 chunk 1 訊息 2 訊息塊 在網路上傳輸資料時,訊息需要被拆分成較小的資料塊,才適合在相應的網...

RTMP協議詳解(二)

rtmp的位元組序 rtmp的位元組序和大多數網路協議一樣是大端序,也有一些欄位是小端序的,不過都有特殊的說明。rtmp的head組成 rtmp的head在協議中的表現形式是chunk head,前面已經說到乙個message head可以分成乙個和多個chunk,為了區分這些chunk,肯定是需要...

RTMP協議詳解 (一) 握手

rtmp協議介紹 包結構 握手在rtmp連線建立後,服務端與客戶端需要通過3次交換報文完成握手.握手其他的協議不同,是由三個靜態大小的塊,而不是可變大小的塊組成的,客戶端與伺服器傳送相同的三個chunk,客戶端傳送c0,c1,c2 chunk,服務端傳送s0,s1,s2 chunk.傳送順序 握手開...