RTMP協議抓包詳解


Real Time Messaging Protocol(實時消息傳送協議協議)是Adobe Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸開發的私有協議。 我們公司的平台都是采用的這個協議進行的音視頻的播放

RTMP協議是一個基於TCP的高層協議族(所以wireshark抓包的時候應該選擇tcp進行抓包)

 

在RTMP協議中信令和媒體數據都稱之為Message,在網絡中傳輸這些Message,為了區分它們肯定是要加一個Message  head的,所以RTMP協議也有一個Message head,還有一個問題因為RTMP協議是基於TCP的,由於TCP的包長度是有限制的(一般來說不超過1500個字節),而RTMP的Message長度是有可能很大的,像一個視頻幀的包可能會有幾十甚至幾千K,這個問題就必然有一個分片的問題,在RTMP協議中對應的說法就是chunk,每一個Message + head都是由一個和多個chunk組成的。讓我們來結合實際例子來看一下 :9see

這些都是頭信息,是用來說明這斷data從什么點開始播放用的真正的音視頻播放在data里面

粗略帶過。現在從握手開始講解

握手流程:

 

 

握手返回的簽名

客戶和服務器通信

 

依次解釋一下

574-發送 rtmp_connect 命令

576 服務器返回服務器帶寬信息,本地所需帶寬信息,流開始標記,服務器返回連接成功消息 "NetConnection.Connect.Success"

577 告訴服務器本帶寬信息

579 設置緩沖區

578發送創建流請求

581 服務器返回創建流成功

584 發送播放文件消息 rtmp_play

AUDIOdata 解析





再來解釋下一下這個09后面的27

27(16)=0010 0111(2)

解讀就是

0010

0111 代表(7)也就是H.264  代表視頻采用H.264編碼  這個編碼對應的自己查吧~~

那么,

問題1.音頻是怎么跟視頻對齊的呢?

問題2. 如何根據這些數據來查我們視頻的相關信息呢?

 

RTMP的包頭上有幾個參數,

timestamp delta 直譯--數據軸三角洲   就是這段data 所播放的時間

tunestamp 時間軸 

視頻數據                                                                                                                                               音頻數據

                   

再看看一個參數 body size =1221大小知道了,時間知道,所以碼率就可以算出來了  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM