RTMP規範簡單分析

轉載:http://blog.csdn.net/leixiaohua1020/article/details/11694129

RTMP協議是一個互聯網TCP/IP五層體系結構中應用層的協議。RTMP協議中基本的數據單元稱爲消息(Message)。當RTMP協議在互聯網中傳輸數據的時候,消息會被拆分成更小的單元,稱爲消息塊(Chunk)。

1 消息

消息是RTMP協議中基本的數據單元。不同種類的消息包含不同的Message Type ID,代表不同的功能。RTMP協議中一共規定了十多種消息類型,分別發揮着不同的作用。例如,Message Type ID1-7的消息用於協議控制,這些消息一般是RTMP協議自身管理要使用的消息,用戶一般情況下無需操作其中的數據。Message Type ID89的消息分別用於傳輸音頻和視頻數據。Message Type ID15-20的消息用於發送AMF編碼的命令,負責用戶與服務器之間的交互,比如播放,暫停等等(PSAMF(Action Message Format)Flash與服務端通信的一種常見的二進制編碼模式,其傳輸效率高,可以在HTTP層面上傳輸)。消息首部(Message Header)有四部分組成:標誌消息類型的Message Type ID,標誌消息長度的Payload Length,標識時間戳的Timestamp,標識消息所屬媒體流的Stream ID。消息的報文結構如圖3所示。

消息

2 消息塊

在網絡上傳輸數據時,消息需要被拆分成較小的數據塊,才適合在相應的網絡環境上傳輸。RTMP協議中規定,消息在網絡上傳輸時被拆分成消息塊(Chunk)。消息塊首部(Chunk Header)有三部分組成:用於標識本塊的Chunk Basic Header,用於標識本塊負載所屬消息的Chunk Message Header,以及當時間戳溢出時纔出現的Extended Timestamp。消息塊的報文結構如圖4所示。

  

消息塊

3 消息分塊

在消息被分割成幾個消息塊的過程中,消息負載部分(Message Body)被分割成大小固定的數據塊(默認是128字節,最後一個數據塊可以小於該固定長度),並在其首部加上消息塊首部(Chunk Header),就組成了相應的消息塊。消息分塊過程如圖5所示,一個大小爲307字節的消息被分割成128字節的消息塊(除了最後一個)。

RTMP分塊

RTMP傳輸媒體數據的過程中,發送端首先把媒體數據封裝成消息,然後把消息分割成消息塊,最後將分割後的消息塊通過TCP協議發送出去。接收端在通過TCP協議收到數據後,首先把消息塊重新組合成消息,然後通過對消息進行解封裝處理就可以恢復出媒體數據。

 

RTMP協議規範(中文翻譯):http://download.csdn.net/detail/leixiaohua1020/6563059

發佈了21 篇原創文章 · 獲贊 13 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章