RTMP流媒體播放過程(轉)

本文描述了從打開一個RTMP流媒體到視音頻數據開始播放的全過程。服務器

注意:RTMP中的邏輯結構網絡

RTMP協議規定,播放一個流媒體有兩個前提步驟:第一步,創建一個網絡鏈接(NetConnection);第二步,創建一個網絡流(NetStream)。其中,網絡鏈接表明服務器端應用程序和客戶端之間基礎的連通關係。網絡流表明了發送多媒體數據的通道。服務器和客戶端之間只能創建一個網絡鏈接,可是基於該鏈接能夠建立不少網絡流。他們的關係如圖所示:.net

 

1 簡要介紹翻譯

播放一個RTMP協議的流媒體須要通過如下幾個步驟:握手,創建鏈接,創建流,播放。RTMP鏈接都是以握手做爲開始的。創建鏈接階段用於創建客戶端與服務器之間的「網絡鏈接」;創建流階段用於創建客戶端與服務器之間的「網絡流」;播放階段用於傳輸視音頻數據。視頻

2 握手(HandShake)blog

一個RTMP鏈接以握手開始,雙方分別發送大小固定的三個數據塊get

a)        握手開始於客戶端發送C0、C1塊。服務器收到C0或C1後發送S0和S1。io

b)        當客戶端收齊S0和S1後,開始發送C2。當服務器收齊C0和C1後,開始發送S2。stream

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

轉:http://blog.csdn.net/leixiaohua1020/article/details/11704355

相關文章
相關標籤/搜索