RTMP協議分析 二 AMF資料

2021-06-08 03:41:58 字數 1049 閱讀 4256

rtmp包預設的最大長度為128位元組,(或通過chunksize改變rtmp包最大長度), 當amf資料超過128byte的時候就可能有多個rtmp包組成,如果需要解碼的rtmp包太長則被tcp協議分割成多個tcp包.那麼解碼的時候需要先將包含rtmp包的tcp封包合併, 再把合併的資料解碼,解碼後可得到amf格式的資料,將這些amf資料取出來就可以對amf資料解碼了.amf資料由2部分組成: objtype 加上 objvalue。objtype的大小為乙個位元組。objvalue的大小不固定,和objtype相關。 常用的objtype型別和對應的objvalue大小整理如下,詳細的objtype的資料在本文的最下面列出:

型別說明(objtype)

資料 datasize

core_string

0x02   

2位元組 (2位元組的資料紀錄了string的實際長度)

core_object 

0x03 

0位元組(開始巢狀0x00000009表示巢狀結束)

null  

0x05 

0位元組 空位元組無意義

core_number

0x00  

8位元組core_map

0x08     

4位元組(開始巢狀)

core_boolean

0x01    

1位元組

objvalue不一定是乙個固定的大小,他可以包含另外乙個amf資料,這另外乙個amf資料裡面又有objtype 加上 objvalue,也就是amf資料的巢狀關係

amf0資料的巢狀關係如下:

object=

core_boolean=

core_number=

core_string=

core_date=

core_array=

core_map=

core_object=

詳細的objtype資料型別如下:,參考red5

enum amf

;rtmp協議分析 一、rtmp包頭 :

RTMP協議分析 二 AMF資料

型別說明 objtype 資料 datasize core string 0x02 2位元組 2位元組的資料紀錄了string的實際長度 core object 0x03 0位元組 開始巢狀0x00000009表示巢狀結束 null 0x05 0位元組 空位元組無意義 core number 0x0...

rtmp資料封裝二 AMF

rtmp協議在傳輸script資料onmetadata時使用amf action message format 格式封裝。amf type對應的編號 amf type data length data 1 字串 amf string和amf long string都是存字串,amf string的字...

RTMP協議分析

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