RTMP 協議學習總結

2021-07-25 16:14:26 字數 2399 閱讀 7396

rtmp 協議學習總結

2013-11-12 16:07:51

分類: 網路與安全

rtmp協議是乙個網際網路tcp/ip五層體系結構中應用層的協議。rtmp協議中基本的資料單元稱為訊息(message)。當rtmp協議在網際網路中傳輸資料的時候,訊息會被拆分成更小的單元,稱為訊息塊(chunk)。

1 訊息

2 訊息塊

在網路上傳輸資料時,訊息需要被拆分成較小的資料塊,才適合在相應的網路環境上傳輸。rtmp協議中規定,訊息在網路上傳輸時被拆分成訊息塊(chunk)。訊息塊首部(chunk header)有三部分組成:用於標識本塊的chunk basic header

,用於標識本塊負載所屬訊息的chunk message header

,以及當時間戳溢位時才出現的extended timestamp。訊息塊的報文結構如下圖所示。

3 訊息分塊

在訊息被分割成幾個訊息塊的過程中,訊息負載部分(message body)被分割成大小固定的資料塊(預設是128位元組,最後乙個資料塊可以小於該固定長度),並在其首部加上訊息塊首部(chunk header),就組成了相應的訊息塊。訊息分塊過程如下圖所示,乙個大小為307位元組的訊息被分割成128位元組的訊息塊(除了最後乙個)。

rtmp傳輸**資料的過程中,傳送端首先把**資料封裝成訊息,然後把訊息分割成訊息塊,最後將分割後的訊息塊通過tcp協議傳送出去

。接收端在通過tcp協議收到資料後,首先把訊息塊重新組合成訊息,然後通過對訊息進行解封裝處理就可以恢復出**資料。

2.1 chunk basic header [1-3位元組]

headertype+channelid組成,其中channelid的大小決定了整個chunk basic header的大小

2.1.1  

這個字段編碼了訊息塊流的

id和訊息塊的型別,訊息塊型別決定了訊息包頭的編碼格式,長度完全

取決於可變長的訊息塊流

headertype(fmt):決定了chunk message header的編碼方式和大小,在第乙個位元組的高兩位

bits 

chunk message header length

00   12 bytes

01   8 bytes

10   4 bytes

11   1 byte

2.1.2 channelid:

channelid 用途

02              ping 和byteread通道

03              invoke通道 我們的connect() publish()和自字寫的netconnection.call() 資料都是在這個通道的

04              audio和vidio通道

2.2 

chunk message header

以最大fmt =00 length(

chunk message header

) == 12 

為例chunk message header的結構是:timestamp,message_length,message_type,msg_stream_id

其中message_type是乙個列舉變數:

type為1,2,3,5,6的時候是協議控制訊息

type為4的時候表示 user control messages [event_type + event_data] event_type有stream begin

,stream end...

type為

8,音訊資料

type為

18 元資料訊息[amf0]

type為20 命令訊息 command message(rpc message)

these messages are sent to perform some operations like connect, createstream, publish, play, pause on the peer.

命令訊息主要分成兩種netconnection和netstream。

connect,call,close,createstream命令可以在netconnection中傳送。

coonect(name,transcationid,command object pair)

play,publish,seek,pause等命令可以在netstream中傳送。

2.3 ext time stamp

2.4資料

3 rtmp協議英文版

開源專案 rtmp dump

RTMP 協議學習總結

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

RTMP 協議學習總結

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

RTMP 協議學習總結

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