秒懂流媒體協議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 攝像機的設備,例如無人機。
朋友們,你們明白了嗎?