網頁

搜尋此網誌

2014年6月13日 星期五

即時串流通信協定 RTSP

即時串流通信協定 (Real Time Streaming Protocol, RTSP) 是應用層的通訊協定,定義在 RFC 2326 規範中,RTSP 是用來控制具有即時與同步特性的資料,如音訊和視訊的媒體,資料來源包含現場即時轉播和儲存的片段剪輯,媒體資料與控制資料是採用交錯式 (interleaving) 的方式傳送。

RTSP 沒有連線的概念,而是在伺服器維護 ID 以識別對話 (session),RTSP 也沒有限制底下傳輸層的通訊協定,你可以用 TCP 或 UDP 來傳送 RTSP 訊息,一個用戶端可以建立多個連線傳送一個 RTSP 對話。RTSP 控制多個傳送之間的對話,包含選擇傳送通道的方式,以及資料傳送的機制。

媒體來源用URL識別,例如 rtsp://example.com/live.sdp 或 rtspu://example.com/live.sdp,rtsp是以TCP傳輸,而rtspu則是以UDP傳輸,沒有指定埠號的話,RTSP 預設是用 port 554

RTSP 與 HTTP 有些相似,通訊協定的觀念上八九不離十,如果你知道 HTTP ,那麼認識 RTSP 會更容易一些。不過,RTSP 與 HTTP 差異的地方如下:
  • RTSP 增加許多新的方法 (method),還有不同的識別ID。
  • RTSP 伺服器需要維護狀態,但 HTTP 本質上就是無狀態 (stateless)。
    (所以開發一個 RTSP伺服器會比 HTTP 伺服器還要複雜...)
  • RTSP 中,伺服端和用戶端都可以發出請求 ( request)。
  • RTSP 的資料是載於不同協定上 (通常使用 RTP 通訊協定),但 HTTP 是在 HTTP 協定本身的 Message Body中。
  • RTSP 的訊息是用 UTF-8 編碼,而 HTTP 是用 ISO-8859-1 編碼。
  • RTSP 的請求總是包含絕對的 URI,而 HTTP 請求則是絕對路徑和主機位置分開在 Header 中。
相同的地方有:
  • 都是以文字為基礎 (text-based) 的通訊協定,易於擴充。也都是以 CR LF 結尾。
  • 都是用 Message 的方式請求和回應,信息包含 Header 和 Body 兩個部分。
  • 都定義 5 大類的狀態碼 (Status Code),分類也相同:
    • 1xx: 資訊 (Informational)
    • 2xx: 成功 (Success)
    • 3xx: 轉向 (Redirection)
    • 4xx: 用戶端錯誤 (Client Error)
    • 5xx: 伺服端錯誤 (Server Error)
如果你對於 HTTP 已經有相當的認識,那麼了解 RSTP 也不是一件困難的事。在 RTSP 當中有幾個術語比較重要,這裡特別提出來說明。
  • 媒體串流 (Media stream)
    或稱串流,是單一的媒體實體。當串流使用的是 RTP 通訊協定時,串流則是指由 RTP 和 RTCP 封包建立的媒體。
  • 呈現 (Presentation)
    由一個或多個串流所組成,在用戶端足以構成完整的媒體。
  • 呈現描述 (Presentation description)
    定義一個呈現中串流的資訊,包含編碼方式、網路位置和內容資訊。通常是用 SDP (Session Description Protocol) 規範所定義的資訊。
  • 聚集控制 (Aggregate control)
    在伺服器上使用單一時間軸控制多個串流,意思是用戶端送出單一個播放訊息就可以同時控制音訊和視訊兩種串流的輸出。
總結來說,RTSP 像是串流媒體的遙控器,或是遠端控制多媒體伺服器的方法,至於串流媒體是用哪種協定規範,這就不在 RTSP 定義之中。(串流媒體的協定參考 RTP,定義在 RFC 3550)

###

沒有留言:

張貼留言

熱門文章