視頻流媒體推流平台RTMP協議是如何進行網絡連接並推送視頻流的?


RTMP是基於TCP協議的多媒體傳輸協議,因此RTMP服務器本質上是一個TCP服務器,它的邏輯結構基本上和普通的TCP服務器是類似的。我們視頻直播點播流媒體服務器能夠通過RTMP協議進行推流分發。

本文我來跟大家介紹一下RTMP服務器建立推流的步驟。首先看一下RTMP 握手(Handshake)過程:

1.握手開始於客戶端發送C0、C1塊。服務器收到C0或C1后發送S0和S1。
2.當客戶端收齊S0和S1后,開始發送C2。當服務器收齊C0和C1后,開始發送S2。
3.當客戶端和服務器分別收到S2和C2后,握手完成。

在實際工程應用中,一般是客戶端先將C0, C1塊同時發出,服務器在收到C1 之后同時將S0, S1, S2發給客戶端。之后客戶端向服務器端發送C2塊,簡單握手完成。

建立網絡連接(NetConnection):

  1. 客戶端發送命令消息中的“連接”(connect)到服務器,請求與一個服務應用實例建立連接。

  2. 服務器接收到連接命令消息后,發送確認窗口大小(Window Acknowledgement Size)協議消息到客戶端,同時連接到連接命令中提到的應用程序。

  3. 服務器發送設置帶寬協議消息到客戶端。

  4. 客戶端處理設置帶寬協議消息后,發送確認窗口大小(Window Acknowledgement Size)
    協議消息到服務器端。

  5. 服務端向客戶端發送“流開始”(Stream Begin)。

  6. 服務器發送命令消息中的“結果”(_result),通知客戶端連接的狀態。

建立網絡流(Create Stream):

  1. 客戶端發送命令消息中的“創建流”(CreateStream)命令到服務器端。
  2. 服務器端接收到“創建流”命令后,發送命令消息中的“結果”(_result),通知客戶端流的狀態。

播放(Play):

    1. 客戶端發送命令“播放”給服務器
    2. 接收到播放命令后,服務器發送設置塊大小(ChunkSize)協議消息給客戶端
    3. 服務器發送“stream begin”給客戶端,告訴客戶端流的id
    4. 播放命令成功的話,服務器發送命令消息中的“響應狀態” NetStream.Play.Start & NetStream.Play.Reset,告知客戶端“播放”命令執行成功
    5. 服務器發送客戶端要播放的音頻和視頻數據


免責聲明!

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



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