理解RTMP協議——簡單認識

本文梳理了RTMP協議的基本概念
訪問 個人博客瞭解更多

前言

直播行業的興起,帶動了音視頻相關技術的發展,本文介紹 RTMP 協議,讓人快速理解它。看下面一張視頻直播的大致架構圖,找找 RTMP 的位置,明白 RTMP 扮演的角色與重要性html

在上面,RTMP 在視頻直播場景的架構中,擔任了重要的"血管"般的角色java

簡單介紹

RTMP(Real Time Messaging Protocol)實時消息傳送協議是Adobe Systems公司爲Flash播放器和服務器之間音頻、視頻和數據傳輸開發的私有協議。nginx

RTMP是一個應用層協議,有多路複用的特色,傳輸內容有視頻、音頻、控制命令git

RTMP 在音視頻相關的協議中,它的突出特色是:鏈接可靠、低延時github

RTMP 基於 TCP

RTMP 是基於TCP的二進制協議,(順便一提,http爲普遍應用的明文協議之一)shell

rtmp-base-on-tcp

RTMP 默認端口 1935後端

  • 基於 TCP 的好處緩存

    • 提升了RTMP的可靠性
  • 基於 TCP 的弊端

若是網絡條件差時,因爲TCP存在重傳的機制,因此致使RTMP存在累計延時。當網絡狀態差時,服務器會將包緩存起來,致使累積的延遲,待網絡情況好了,就一塊兒發給客戶端。安全

解決 RTMP 累計延時的弊端

解決 RTMP 累計延時的弊端的方法:服務器

  • 數據下發的角度,服務端上設置對客戶端的緩衝區空間大小,一旦累計的緩衝超過限制,服務端就斷開鏈接,迫使客戶端在恢復網絡時發起從新鏈接的請求。
  • 流媒體推流(上傳)的角度,上傳流媒體的發佈方既能夠是服務器也能夠是客戶端App,發佈方發現當前隊列中未處理的的視頻和音頻幀數累計達到必定數目(如50幀),則清空該隊列,直接處理最新的實時數據(嚴格意義上,須要保留關鍵幀,清除預測幀)。

RTMP 的 HTTP 變種與防火牆

rtmp 有三個變種:

  • 工做在TCP之上的明文協議,使用端口1935
  • RTMPT封裝在HTTP請求之中,可穿越防火牆
  • RTMPS相似RTMPT,但使用的是HTTPS鏈接

穿越防火牆的意思是,可能出於安全考慮,互聯網中某一些網絡(好比小區、校園網)的防火牆限制了http/https之外的協議訪問,只容許訪問外網ip的 80 端口與 443 端口,或者還容許其餘協議,而明文協議的 rtmp 默認端口 1935 不在防火牆開放訪問的端口中,沒法創建鏈接。出於現實考慮,使用 http/https 封裝 rtmp 協議,加強兼容性。

RTMP Server

  • FMS Wowza (Flash Media Server),商業產品,Adobe公司的產品,license很是昂貴。wowza最突出的特定是多終端適應性,這個在現在多媒體融合的網絡環境下有很強的實用意義。

如下開源項目:

Reference

相關文章
相關標籤/搜索