iOS 視頻直播(二)

參考博客:流媒體播放過程

本文描述了從打開一個RTMP流媒體到視音頻數(shù)據(jù)開始播放的全過程。

注意:RTMP中的邏輯結(jié)構(gòu)

RTMP協(xié)議規(guī)定,播放一個流媒體有兩個前提步驟:第一步,建立一個網(wǎng)絡(luò)連接(NetConnection);第二步,建立一個網(wǎng)絡(luò)流

(NetStream)。其中,網(wǎng)絡(luò)連接代表服務(wù)器端應(yīng)用程序和客戶端之間基礎(chǔ)的連通關(guān)系。網(wǎng)絡(luò)流代表了發(fā)送多媒體數(shù)據(jù)的通道。服務(wù)器和客戶端之間只能建

立一個網(wǎng)絡(luò)連接,但是基于該連接可以創(chuàng)建很多網(wǎng)絡(luò)流。他們的關(guān)系如圖所示:

1、簡要介紹

播放一個RTMP協(xié)議的流媒體需要經(jīng)過以下幾個步驟:握手,建立連接,建立流,播放。RTMP連接都是以握手作為開始的。建立連接階段用于建立客戶端與服務(wù)器之間的“網(wǎng)絡(luò)連接”;建立流階段用于建立客戶端與服務(wù)器之間的“網(wǎng)絡(luò)流”;播放階段用于傳輸視音頻數(shù)據(jù)。

2、握手(HandShake)

一個RTMP連接以握手開始,雙方分別發(fā)送大小固定的三個數(shù)據(jù)塊

a)????????握手開始于客戶端發(fā)送C0、C1塊。服務(wù)器收到C0或C1后發(fā)送S0和S1。

b)????????當客戶端收齊S0和S1后,開始發(fā)送C2。當服務(wù)器收齊C0和C1后,開始發(fā)送S2。

c)????????當客戶端和服務(wù)器分別收到S2和C2后,握手完成。

握手


3、建立網(wǎng)絡(luò)連接(NetConnection)

a)????????客戶端發(fā)送命令消息中的“連接”(connect)到服務(wù)器,請求與一個服務(wù)應(yīng)用實例建立連接。

b)????????服務(wù)器接收到連接命令消息后,發(fā)送確認窗口大小(Window Acknowledgement Size)協(xié)議消息到客戶端,同時連接到連接命令中提到的應(yīng)用程序。

c)????????服務(wù)器發(fā)送設(shè)置帶寬()協(xié)議消息到客戶端。

d)????????客戶端處理設(shè)置帶寬協(xié)議消息后,發(fā)送確認窗口大小(Window Acknowledgement Size)協(xié)議消息到服務(wù)器端。

e)????????服務(wù)器發(fā)送用戶控制消息中的“流開始”(Stream Begin)消息到客戶端。

f)?????????服務(wù)器發(fā)送命令消息中的“結(jié)果”(_result),通知客戶端連接的狀態(tài)。

建立連接


4、建立網(wǎng)絡(luò)流(NetStream)

a)????? 客戶端發(fā)送命令消息中的“創(chuàng)建流”(createStream)命令到服務(wù)器端。

b)????? 服務(wù)器端接收到“創(chuàng)建流”命令后,發(fā)送命令消息中的“結(jié)果”(_result),通知客戶端流的狀態(tài)。

建立流


5、播放(Play)

a)????????客戶端發(fā)送命令消息中的“播放”(play)命令到服務(wù)器。

b)????????接收到播放命令后,服務(wù)器發(fā)送設(shè)置塊大小(ChunkSize)協(xié)議消息。

c)????????服務(wù)器發(fā)送用戶控制消息中的“streambegin”,告知客戶端流ID。

d)????????播放命令成功的話,服務(wù)器發(fā)送命令消息中的“響應(yīng)狀態(tài)” NetStream.Play.Start & NetStream.Play.reset,告知客戶端“播放”命令執(zhí)行成功。

e)????????在此之后服務(wù)器發(fā)送客戶端要播放的音頻和視頻數(shù)據(jù)。

播放流
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 實時消息協(xié)議---流的分塊 版權(quán)聲明: 版權(quán)(c)2009 Adobe系統(tǒng)有限公司。全權(quán)所有。 摘要: 本備忘錄描...
    一個人zy閱讀 2,063評論 0 9
  • 轉(zhuǎn)發(fā)自 2016-10-27李智文騰訊Bugly 概要 分享內(nèi)容: 互聯(lián)網(wǎng)內(nèi)容載體變遷歷程,文字——圖片/聲音——...
    樹懶啊樹懶閱讀 12,354評論 3 122
  • 個人翻譯,轉(zhuǎn)載請注明出處,謝謝! Adobe's Real Time Messaging Protocol 摘要 ...
    SniperPan閱讀 2,890評論 1 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評論 19 139
  • 我們可以從客戶的站姿中可以收集到很多有用的臨床信息。臨床上還需要認真詢問病史,并通過觸診、步態(tài)分析及其他動作評估等...
    厚_德_載_物閱讀 660評論 0 5

友情鏈接更多精彩內(nèi)容