標籤:
http://blog.csdn.net/leixiaohua1020/article/details/11704355
本文描述了從開啟一個RTMP流媒體到視音頻資料開始播放的全過程。
注意:RTMP中的邏輯結構
RTMP協議規定,播放一個流媒體有兩個前提步驟:第一步,建立一個網路連接(NetConnection);第二步,建立一個網路流 (NetStream)。其中,網路連接代表格服務器端應用程式和用戶端之間基礎的連通關係。網路流代表了發送多媒體資料的通道。伺服器和用戶端之間只能建 立一個網路連接,但是基於該串連可以建立很多網路流。他們的關係:
1 簡要介紹
播放一個RTMP協議的流媒體需要經過以下幾個步驟:握手,建立串連,建立流,播放。RTMP串連都是以握手作為開始的。建立串連階段用於建立用戶端與伺服器之間的“網路連接”;建立流階段用於建立用戶端與伺服器之間的“網路流”;播放階段用於傳輸視音頻資料。
2 握手(HandShake)
一個RTMP串連以握手開始,雙方分別發送大小固定的三個資料區塊
a) 握手開始於用戶端發送C0、C1塊。伺服器收到C0或C1後發送S0和S1。
b) 當用戶端收齊S0和S1後,開始發送C2。當伺服器收齊C0和C1後,開始發送S2。
c) 當用戶端和伺服器分別收到S2和C2後,握手完成。
握手
3建立網路連接(NetConnection)
a) 用戶端發送命令訊息中的“串連”(connect)到伺服器,請求與一個服務應用執行個體建立串連。
b) 伺服器接收到串連命令訊息後,發送確認視窗大小(Window Acknowledgement Size)協議訊息到用戶端,同時串連到串連命令中提到的應用程式。
c) 伺服器發送設定頻寬()協議訊息到用戶端。
d) 用戶端處理設定頻寬協議訊息後,發送確認視窗大小(Window Acknowledgement Size)協議訊息到伺服器端。
e) 伺服器發送使用者控制訊息中的“流開始”(Stream Begin)訊息到用戶端。
f) 伺服器發送命令訊息中的“結果”(_result),通知用戶端串連的狀態。
建立串連
4建立網路流(NetStream)
a) 用戶端發送命令訊息中的“建立流”(createStream)命令到伺服器端。
b) 伺服器端接收到“建立流”命令後,發送命令訊息中的“結果”(_result),通知用戶端流的狀態。
建立流
5 播放(Play)
a) 用戶端發送命令訊息中的“播放”(play)命令到伺服器。
b) 接收到播放命令後,伺服器發送設定塊大小(ChunkSize)協議訊息。
c) 伺服器發送使用者控制訊息中的“streambegin”,告知用戶端流ID。
d) 播放命令成功的話,伺服器發送命令訊息中的“響應狀態” NetStream.Play.Start & NetStream.Play.reset,告知用戶端“播放”命令執行成功。
e) 在此之後伺服器發送用戶端要播放的音頻和視頻資料。
播放流
RTMP協議規範(中文翻譯):http://download.csdn.net/detail/leixiaohua1020/6563059
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
RTMP流媒體播放過程(轉)