1.什么是rtsp?
RTSP協議以客戶服務器方式工作,,如:暫停/繼續、后退、前進等。它是一個多媒體播放控制協議,用來使用戶在播放從因特網下載的實時數據時能夠進行控制,
因此 RTSP 又稱為“因特網錄像機遙控協議”。
RTSP(Real-Time Stream Protocol)是一種基于文本的應用層協議,在語法及一些消息參數等方面,RTSP協議與HTTP協議類似。
是TCP/IP協議體系中的一個應用層協議, 由哥倫比亞大學, 網景和RealNetworks公司提交的IETF RFC標準. 對應的RFC編號是2326,可以在這里搜索 RFC Editor
該協議定義了一對多應用程序如何有效地通過IP網絡傳送多媒體數據. RTSP在體系結構上位于RTP和RTCP之上, 它使用TCP或RTP完成數據傳輸. RTSP被用于建立的控制媒體流的傳輸,它為多媒體服務扮演“網絡遠程控制”的角色。盡管有時可以把RTSP控制信息和媒體數據流交織在一起傳送,但一般情況RTSP本身并不用于轉送媒體流數據。
媒體數據的傳送可通過RTP/RTCP等協議來完成。
該協議用于C/S模型, 是一個基于文本的協議, 用于在客戶端和服務器端建立和協商實時流會話.
雖然RTSP服務器同樣也使用標識符來區別每一流連接會話(Session),但RTSP連接并沒有被綁定到傳輸層連接(如TCP等),也就是說在整個 RTSP連接期間,
RTSP用戶可打開或者關閉多個對RTSP服務器的可靠傳輸連接以發出RTSP 請求。此外,RTSP連接也可以基于面向無連接的傳輸協議(如UDP等)。
整體而言,RTSP 通常工作于可靠的傳輸協議 TCP 之上,就像 HTTP 那樣,用于發起/結束流媒體傳輸,交換流媒體元信息。RTP 通常工作于 UDP之上,用于傳輸實際的流媒體數據,其中的載荷格式因具體流媒體類型的不同而不同,通常有專門的 RFC 規范對其進行定義,如 H.264 編碼格式視頻數據的載荷格式在 RFC 6184, RTP Payload Format for H.264 Video 中定義,其它流媒體數據類型有其它的規范進行定義。RTCP 同樣通常工作于 UDP 之上,用于對 RTP 進行控制,流媒體數據的收發端在傳輸過程中相互發送 RTCP 數據包,將自己這一端檢測到的 QoS 等信息傳遞給對方,使用 RTP/RTCP 協議的應用程序,利用這些信息對收發過程進行控制。RTP 和 RTCP 在傳輸過程中,工作于不同的端口上。RTP 和 RTCP也可以工作于UDP上,用于特定場景。
2.網絡體系
RTSP是類似http的應用層協議,一個典型的流媒體框架網絡體系可參考下圖:

3.一次基本的RTSP操作過程
1).首先,客戶端連接到流服務器并發送一個RTSP描述命令(DESCRIBE)。
2).流服務器通過一個SDP描述來進行反饋,反饋信息包括流數量、媒體類型等信息。
3).客戶端再分析該SDP描述,并為會話中的每一個流發送一個RTSP建立命令(SETUP),RTSP建立命令告訴服務器客戶端用于接收媒體數據的端口。流媒體連接建立完成后,
4).客戶端發送一個播放命令(PLAY),服務器就開始在UDP上傳送媒體流(RTP包)到客戶端。 在播放過程中客戶端還可以向服務器發送命令來控制快進、快退和暫停等。
5).最后,客戶端可發送一個終止命令(TERADOWN)來結束流媒體會話
sequenceDiagram
客戶端->>服務器:DESCRIBE
服務器->>客戶端: 200 OK (SDP)
客戶端->>服務器:SETUP
服務器->>客戶端: 200 OK
客戶端->>服務器:PLAY
服務器->>客戶端: (RTP包)
4.協議特點
1).可擴展性: 新方法和參數很容易加入RTSP.
2).易解析: RTSP可由標準HTTP或MIME解析器解析.
3).安全: RTSP使用網頁安全機制.
4).獨立于傳輸: RTSP可使用不可靠數據報協議(EDP), 可靠數據報協議(RDP); 如要實現應用級可靠, 可使用可靠流協議.
5).多服務器支持: 每個流可放在不同服務器上, 用戶端自動與不同服務器建立幾個并發控制連接, 媒體同步在傳輸層執行.
6).記錄設備控制: 協議可控制記錄和回放設備.
7).流控與會議開始分離: 僅要求會議初始化協議提供, 或可用來創建唯一會議標識號. 特殊情況下, 可用SIP或H.323來邀請服務器入會.
8).適合專業應用: 通過SMPTE時標, RTSP支持幀級精度, 允許遠程數字編輯.
9).演示描述中立: 協議沒強加特殊演示或元文件, 可傳送所用格式類型; 然而, 演示描述至少必須包括一個RTSP URL.
10).代理與防火墻友好: 協議可由應用和傳輸層防火墻處理. 防火墻需要理解SETUP方法, 為UDP媒體流打開一個“缺口”.
11).HTTP友好: 此處, RTSP明智地采用HTTP觀念, 使現在結構都可重用. 結構包括Internet內容選擇平臺(PICS). 由于在大多數情況下控制連續媒體需要服務器狀態, RTSP不僅僅向HTFP添加方法.
12).適當的服務器控制: 如用戶啟動一個流, 必須也可以停止一個流.
13).傳輸協調: 實際處理連續媒體流前, 用戶可協調傳輸方法.
14).性能協調: 如基本特征無效, 必須有一些清理機制讓用戶決定哪種方法沒生效. 這允許用戶提出適合的用戶界面.
5.RTSP協議與HTTP協議區別
1).RTSP引入了幾種新的方法,比如DESCRIBE、PLAY、SETUP 等,并且有不同的協議標識符,RTSP為rtsp 1.0,HTTP為http 1.1;
2).HTTP是無狀態的協議,而RTSP為每個會話保持狀態;
3).RTSP協議的客戶端和服務器端都可以發送Request請求,而在HTTPF 協議中,只有客戶端能發送Request請求。
4).在RTSP協議中,載荷數據一般是通過帶外方式來傳送的(除了交織的情況),及通過RTP協議在不同的通道中來傳送載荷數據。而HTTP協議的載荷數據都是通過帶內方式傳送的,比如請求的網頁數據是在回應的消息體中攜帶的。
5).使用ISO 10646(UTF-8) 而不是ISO 8859-1,以配合當前html的國際化;
6).RTSP使用URI請求時包含絕對URI。而由于歷史原因造成的向后兼容性問題,HTTP/1.1只在請求中包含絕對路徑,把主機名放入單獨的標題域中;
5.RTSP重要術語
1. 集合控制(Aggregatecontrol ):
對多個流的同時控制。對音頻/視頻來講,客戶端僅需發送一條播放或者暫停消息就可同時控制音頻流和視頻流。
2. 實體(Entity):
作為請求或者回應的有效負荷傳輸的信息。由以實體標題域(entity-header field)形式存在的元信息和以實體主體(entity body)形式存在的內容組成
3. 容器文件(Containerfile):
可以容納多個媒體流的文件。RTSP服務器可以為這些容器文件提供集合控制。
4. RTSP會話(RTSP session ):
RTSP交互的全過程。對一個電影的觀看過程,會話(session)包括由客戶端建立媒體流傳輸機制(SETUP),使用播放(PLAY)或錄制(RECORD)開始傳送流,用停止(TEARDOWN)關閉流。
7.客戶端播放rtsp流格式
客戶端要播放RTSP媒體流,就需要知道媒體源的URL,RTSP的URL格式一般如下:
rtsp://host[:port]/[abs_path]/content_name
- host: 有效的域名或IP地址;
- port: 端口號,缺省為554,若為缺省可不填寫,否則必須寫明。
例如,一個完整的RTSP URL可寫為:
rtsp://192.168.1.67:554/test
又如目前市面上常用的??稻W絡攝像頭的RTSP地址格式為:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
示例:
rtsp://admin:[email protected]:554/h264/ch1/main/av_stream
rtsp://admin:[email protected]/mpeg4/ch1/sub/av_stream