RTMP學習(一)RTMP協議介紹

2021-07-27 15:05:02 字數 1473 閱讀 7801

rtmp協議中的資料被稱為message(訊息)。乙個message包含message head和message body。

在網上傳輸的時候,如果乙個message太大,那麼它將會被分段傳輸。乙個分段被稱為chunk,chunk包含chunk head 和chunk body。

chunk的長度初始長度固定為128個位元組,但是這個值可以在建立連線之後進行修改。

其中chunk的具體的格式如下:

basic header 、chunk msg header、 extend timestamp共同組成了chunk header。

basic header長度為1~3位元組,它包含:fmt,stream id。fmt決定了訊息頭的編碼方式,該字段的長度依賴於stream id,因此basic header的長度是可變的。但是目前普通的basic header的長度一般是1位元組。

一位元組長度的basic header典型構成如下(其中fmt佔2bit):

fmt=0,那麼chunk msg header長度是11

fmt=1,那麼chunk msg header長度是7

fmt=2,那麼chunk msg header長度是3

fmt=3,那麼chunk msg header長度是0

chunk msg header的長度可能為0,3,7,11位元組。它包含了將要傳送的message的相關資訊。它的長度由basic header得type欄位決定。

11位元組的chunk msg header

7位元組的chunk msg header

時間戳部分是相對時間,它的值是和上乙個絕對時間之間的差值

3位元組的chunk msg header

0位元組的chunk msg header

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

長度可能是0,4位元組。它表示擴充套件的時間戳字段(在前面的chunk msg header中還有乙個叫時間戳的字段)。當時間戳字段等於0xffffff的時候,該字段才被傳送,否則不傳送。

RTMP協議分析 一 RTMP包頭

rtmp協議 封包 參考red5 rtmp協議封包 由乙個包頭和乙個包體組成,包頭可以是4種長度的任意一種 12,8,4,1 byte s 完整的rtmp包頭應該是12bytes,包含了時間戳,head type,amfsize,amftype,streamid資訊,8位元組的包頭只紀錄了時間戳,h...

RTMP協議分析 一 RTMP包頭

rtmp協議 封包 參考red5 rtmp協議封包 由乙個包頭和乙個包體組成,包頭可以是4種長度的任意一種 12,8,4,1 byte s 完整的rtmp包頭應該是12bytes,包含了時間戳,head type,amfsize,amftype,streamid資訊,8位元組的包頭只紀錄了時間戳,h...

RTMP 協議學習總結

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