RTSP over UDP與RTSP over TCP取流對比

        本文詳細介紹通過RTSP取流的過程,分析RTSP over UDP與RTSP over TCP在RTSP消息、媒體數據封裝上的區別,並總結RTSP over UDP與RTSP over TCP的優缺點。

        RTSP: Real Time Streaming Protocol,實時流協議,用於多媒體數據流的控制,如播放,暫停等。

        RTP: Real-time Transport Protocol,實時傳輸協議,一般用於多媒體數據的傳輸。 

        RTCP: RTP Control Protocol,實時傳輸控制協議,同RTP一起用於數據傳輸的監視,控制功能。 

        RTP/RTCP相對於底層傳輸層,和RTSP、SIP等上層協議一起可以實現視頻會議,視頻直播等應用。RTP位於傳輸層(通常是UDP)之上,應用程序之下,實時語音、視頻數據經過模數轉換和壓縮編碼處理後,先送給RTP封裝成爲RTP數據單元,RTP數據單元被封裝爲UDP數據報,然後再向下遞交給IP封裝爲IP數據包。這麼說RTP是沒有保證傳輸成功的。那怎麼保證呢?就要用到RTCP。 RTCP消息含有已發送數據的丟包統計和網絡擁塞等信息,服務器可以利用這些信息動態的改變傳輸速率。

       RTSP協議是一個流媒體協議,可以實現直播和點播形式的音頻與視頻流的播放。RTSP協議定義了多種服務器-客戶端之間交互的接口,主要有OPTIONS,DESCRIBE,SETUP,PLAY,TEARDOWN,RECORD,ANNOUNCE。RTSP並不包括具體媒體數據的傳輸,媒體數據一般由RTP與RTCP協議來實現,並可以通過TCP或UDP兩種底層傳輸方式進行。

       播放RTSP流時,可通過客戶端來指定拉流方式爲UDP還是TCP。兩者分別建立了幾條socket連接呢?如下圖1和圖2所示

https://upload-images.jianshu.io/upload_images/1720840-165bfd3997dd32ba.png

圖1 RTSP over UDP

https://upload-images.jianshu.io/upload_images/1720840-4add93d66caf300e.png

圖2 RTSP over TCP

從圖2可以看出RTSP over TCP 方式時,RTSP、RTP(Video)、RTCP(Video)、RTP(Audio)、RTCP(Audio)都通過同一個TCP 連接來傳輸。那麼如何區分RTSP、RTP(Video)、RTCP(Video)、RTP(Audio)、RTCP(Audio) ?做法是對於RTP和RTCP包,在TCP和RTP(RTCP)數據之間增加一層RTSP Interleaved Frame,如圖3所示。

https://upload-images.jianshu.io/upload_images/1720840-2c933e726cb785c7.png

圖3 RTSP Interleaved Frame

       下面以實例說明RTSP over UDP與RTSP over TCP的區別。採用vlc.exe作爲RTSP 客戶端,海康視頻設備作爲RTSP服務端。vlc.exe中可以設置流傳輸方式是RTSP over UDP 還是RTSP over TCP,設置路徑爲【工具】-【首選項】-【輸入/編解碼器】,如圖4所示。

圖4 vlc設置流傳輸方式

1、RTSP over UDP

接下來對每一條消息詳細分析。

  1. OPTION消息,是得到服務器提供的可用方法。

客戶端發送的OPTION消息:

服務端對OPTION消息的回覆:

  1. DESCRIBE消息,目的是爲了得到會話描述信息(SDP)。

客戶端發送DESCRIBE消息:

服務端回覆DESCRIBE消息:

客戶端發送帶鑑權的DESCRIBE消息:

服務端回覆200OK並攜帶SDP信息:

  1. SETUP消息,建立會話,並確定傳輸模式。

客戶端發送SETUP消息:

服務端對SETUP回覆200OK消息:

  1. PLAY消息,開始播放。

客戶端發送PLAY消息:

服務端對SETUP回覆200OK消息:

  1. 媒體數據傳輸

 

  1. TEARDOWN消息,停止播放。

客戶端發送TEARDOWN消息:

         服務端對TEARDOWN回覆200OK消息:

 

2、RTSP over TCP

上面已經詳細描述了RTSP over UDP的各個消息,現針對RTSP over TCP,只介紹與RTSP over UDP不同的地方。

不同點1:SETUP消息

不同點2:媒體數據傳輸

       上文詳細描述了RTSP over UDP與RTSP over TCP實現上的區別,至於項目中選擇RTSP over UDP還是RTSP over TCP,一般由項目中的對接協議規定,當然也存在我們自行選擇RTSP over UDP或者RTSP over TCP的情況,此時我們需要知道這兩者的優缺點,根據實際情況選擇。

        RTSP over UDP優點:碼流通過UDP發送,一個UDP包裏有且僅有一個RTP包,不需要Interleaved Frame,封包和解包相對簡單些;數據流收發快速,無阻塞。

        RTSP over UDP缺點:需要額外建立socket,用於RTP和RTCP傳輸;不可靠傳輸,可能丟包。

        RTSP over TCP優點:不需要另外建立音視頻傳輸的socket,直接使用RTSP的socket,節省資源開支;提供可靠的流傳輸。

        RTSP over TCP缺點:由於RTSP、RTP、RTCP交織,封包和解包的過程相對複雜些;TCP是可靠的傳輸協議,但正是因爲如此,會導致在實時流媒體中的延時。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章