秒懂流媒體協議RTMP 與RTSP

2022.06.01
秒懂流媒體協議RTMP 與RTSP

本文主要介紹了流媒體協議、TCP與UDP協議、RTMP與RTSP協議,RTMP 和RTSP 流媒體協議都有各自的優勢。

RTMP 與RTSP 是比較常見的兩種流媒體協議,那麼什麼是RTMP?什麼是RTSP?它們兩之間有什麼區別?使用的時候應該如何選擇?

什麼是流媒體協議?

流媒體協議,英文學名Streaming Protocol,用一句人話來解釋:流媒體協議是一種用於通過Web 傳遞多媒體的協議。

每次觀看直播或點播視頻時,背後的技術就是流媒體協議。

流媒體協議有很多,主要分為三大類:

  • 傳統視頻流協議
  • 基於HTTP 的自適應協議
  • 新技術

傳統視頻流協議

傳統視頻流協議主要有:

  • RTMP
  • RTSP

基於HTTP 的自適應協議

基於HTTP 的自適應協議主要有:

  • Apple HLS
  • Low-Latency HLS
  • MPEG-DASH
  • Adobe HDS

新技術

新技術主要有:

  • SRT
  • WebRTC

而我們今天著重要介紹和比較的就是傳統視頻流協議:RTMP和RTSP。

TCP 和UDP

在探討RTMP和RTSP前,我們有必要先了解一下TCP 和UDP,因為RTMP 是基於TCP 開發的,那麼RTSP 使用到了UDP 。

TCP

TCP 英文全稱:Transmission Control Protocol,中文意思:傳輸控制協議。

TCP協議是位於應用層和網絡層之間的傳輸控制協議,用於提供可靠的流傳輸服務,即以字節流的形式傳輸數據和以字節流的形式接收數據。TCP 使用確認機制來檢查數據是否安全可靠地到達,在發送端進行複用,在接收端進行解復用。TCP 使用三個階段來實現連接定向功能,如連接建立、數據傳輸和連接終止。

UDP

UDP 英文全稱:User Datagram Protocol ,中文意思:用戶數據報協議。

UDP是一種無連接協議,即將數據從一端傳輸到另一端;無需建立連接。UDP 也位於應用層和網絡層之間。它還以數據包的形式傳遞數據或信息;這些數據包稱為用戶數據報。UDP 使用多路復用來處理來自多個進程的傳出用戶數據報,並使用解復用來處理進入同一主機上不同進程的傳入用戶數據報。

TCP 與UDP 區別

  • TCP 是面向連接的,而UDP 是無連接的
  • TCP 是重量級的,而UDP 是輕量級的
  • TCP 提供可靠的服務,而UDP 不提供可靠的服務
  • TCP 支持重傳機制,而UDP 不支持
  • TCP 數據包按順序到達接收器,而UDP 無序
  • TCP 不支持廣播,而UDP 支持廣播
  • TCP 連接是一個字節流,而UDP 連接是消息流

以上就是最基礎的部分,下面我切入今天的主題:RTMP 和RTSP 協議。

RTMP

  • 英文全稱:Real Time Messaging Protocol
  • 中文意思:實時消息協議
  • 底層協議:TCP
  • 應用級視頻流協議
  • 視頻編解碼器:H.264
  • 音頻編解碼器:AAC
  • 延遲:3 - 30 秒

RTMP 2005 年誕生,由Macromedia 開發,後來被Adobe 收購,在流媒體市場上有著悠久的歷史。最初用於在RTMP 服務器和用戶設備上的Flash 播放器之間傳輸數據,不過Flash 於2020 年正式結束了。

RTMP 的最大優點是可以在服務器和客戶端服務器之間保持穩定的連接,無論用戶的互聯網連接質量如何,它都可以無縫低延遲進行流媒體傳輸。這個技術主要通過將數據流分成相等的小部分(音頻數據默認為64 字節,視頻數據默認為128 字節)並將它們順序傳輸到接收設備,然後將它們重新組合成視頻流來實現的。

RTMP 工作原理 

一般來說視頻流是這樣工作的:

  • 攝像頭捕獲視頻
  • 通過編碼器將視頻流傳輸到視頻平台服務器
  • 視頻平台處理視頻流
  • 通過CDN分發到離用戶最近的服務器上
  • 最後視頻流就能成功的到達用戶設備

那麼這個環節中RTMP就起到了非常重要的作用,在視頻從攝像頭到服務器的過程中,RTMP將大量數據分割成小塊並跨多個虛擬通道傳輸,在視頻源和RTMP 服務器之間提供了穩定和流暢的視頻流。

RTMP 最大的缺點是它與HTML5 播放器不兼容,這樣的話必須使用另一種協議,例如HLS來傳輸視頻文件到達用戶的設備,此外,RTMP 容易受到帶寬問題的影響。

RTSP

  • 英文全稱:Real Time Streaming Protocol
  • 中文意思:實時流協議
  • 底層協議:TCP 和UDP
  • 網絡控制協議
  • 視頻編解碼器:H.265
  • 音頻編解碼器:AAC
  • 延遲:2 秒

RTSP 1996年誕生,由RealNetworks、Netscape 和哥倫比亞大學的專家聯合開發,用於控制VHS 式視頻流的娛樂和通信系統,RTSP 使用高效的RTP 協議,將流數據分解成更小的塊,這樣可以更快地傳遞。

RTSP 支持可靠的分段流,這意味著用戶可以在仍在下載流的同時繼續觀看流。

Android 和iOS 設備沒有開箱即用的RTSP 兼容播放器,所以普及度並不高,但RTSP 在許多監控和閉路電視(CCTV) 應用非常廣泛,遠程攝像頭、在線教育和互聯網直播等,都用的比較頻繁。

上面提到RTSP使用RTP協議進行分解視頻塊的,這裡我們來講一下RTP協議。

RTP協議,英文全稱:Real-time Transport Protocol,中文就是實時傳輸協議,它的底層其實就是UDP,這樣一來就可以實現低延遲。

除了RTP協議,為確保流暢和一致的流傳輸,RTSP 還使用另外兩種網絡通信協議:

  • TCP 收發控制命令(例如播放或停止請求)
  • UDP 傳送音頻、視頻和數據

這個怎麼理解呢?

TCP可靠傳輸,比如用戶按下播放或者停止播放的時候,這個是個準確的請求,這個需要保證可靠性,這個時候TCP作用就體現了。

UDP是低延遲的協議,那麼用於傳送音頻、視頻和數據可以達到非常高效的效果。

RTSP 工作原理 

  • 用戶設備向視頻流平台發送RTSP 請求
  • 視頻流平台返回可以操作的請求列表,比如播放、暫停等
  • 用戶設備向視頻流平台發送具體的請求,比如播放
  • 視頻流平台解析請求並調用指定機制啟動視頻流處理

由於RTSP 依賴於專用服務器,並且依賴於RTP,因此該協議不支持加密視頻內容或重傳丟失的數據包。

RTMP 與RTSP 區別

1.延遲

RTMP:3-30秒

RTSP:2-5秒

2.音頻編解碼器

  • RTMP:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis
  • RTSP:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis

3、視頻編解碼器

  • RTMP:H.264, VP8, VP6, Sorenson Spark®, Screen Video v1 & v2
  • RTSP:H.265 (preview), H.264, VP9, VP8

4、優點

  • RTMP: 低延遲適應性靈活性不需要緩衝
  • RTSP: 低延遲分段流式傳輸

5、缺點

  • RTMP: 帶寬問題HTML5 不支持某些瀏覽器和設備的兼容性問題安全性有點低
  • RTSP:
  • HTTP 不兼容
  • 依賴於其他協議

RTMP 與RTSP 該如何選擇?

其實看完RTMP 與RTSP 區別,應該對於使用場景有見解式的認識了。

  • IP 攝像機、物聯網設備,那麼選擇RTSP準不會錯
  • 第三方流媒體應用,那麼選擇RTMP準不會錯

總結

本文主要介紹了流媒體協議、TCP與UDP協議、RTMP與RTSP協議,RTMP 和RTSP 流媒體協議都有各自的優勢。

RTMP 提供與不同攝取設備的兼容性和低延遲流媒體的穩定性,但是,您需要一個特定的Flash Media Server 來使用RTMP 分發您的內容,所以RTMP 適用於主要的第三方流應用程序和較舊的硬件編碼器;

RTSP 最適用於IP 攝像機和運行IP 攝像機的設備,例如無人機。

朋友們,你們明白了嗎?