秒懂流媒體協議 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 攝像機的設備,例如無人機。
朋友們,你們明白了嗎?
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/GLiYsXkiRK-GDGxRQS8jAg