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 訊息塊 在網路上傳輸資料時,訊息需要被拆分成較小的資料塊,才適合在相應的網...