編輯本段概念
RTSP是用來控制聲音或影像的多媒體串流協議,並允許同時多個串流需求控制,傳輸時所用的網絡通訊協定並不在其定義的範圍內,服務器端可以自行選擇使用TCP或UDP來傳送串流內容,它的語法和運作跟HTTP 1.1類似,但並不特別強調時間同步,所以比較能容忍網 絡延遲。而前面提到的允許同時多個串流需求控制(Multicast),除了可以降低服務器端的網絡用量,更進而支持多方視訊會議(Video Conference)。因爲與HTTP1.1的運作方式相似,所以代理服務器〈Proxy〉的快取功能〈Cache〉也同樣適用於RTSP,並因RTSP具有重新導向功能,可視實際負載情況來轉換提供服務的服務器,以避免過大的負載集中於同一服務器而造成延遲。編輯本段簡介
該協議用於C/S模型,是一個基於文本的協議,用於在客戶端和服務器端建立和協商實時流會話。 實時流協議(RTSP)是應用級協議,控制實時數據的發送。RTSP提供了一個可擴展框架,使實時數據,如音頻與視頻的受控點播成爲可能。數據源包括現場數據與存儲在剪輯中數據。該協議目的在於控制多個數據發送連接,爲選擇發送通道,如UDP、組播UDP與TCP,提供途徑,併爲選擇基於RTP上發送機制提供方法。 實時流協議(RTSP)建立並控制一個或幾個時間同步的連續流媒體。儘管連續媒體流與控制流交換是可能的,通常它本身並不發送連續流。換言之,RTSP充當多媒體服務器的網絡遠程控制。RTSP連接沒有綁定到傳輸層連接,如TCP。在RTSP連接期間,RTSP用戶可打開或關閉多個對服務器的可傳輸連接以發出RTSP請求。此外,可使用無連接傳輸協議,如UDP。RTSP流控制的流可能用到RTP,但RTSP操作並不依賴用於攜帶連續媒體的傳輸機制。 協議支持的操作如下: (1)從媒體服務器上檢索媒體:用戶可通過HTTP或其它方法提交一個演示描述。如演示是組播,演示式就包含用於連續媒體的的組播地址和端口。如演示僅通過單播發送給用戶,用戶爲了安全應提供目的地址。 (2)媒體服務器邀請進入會議:媒體服務器可被邀請參加正進行的會議,或回放媒體,或記錄其中一部分,或全部。這種模式在分佈式教育應用上很有用,會議中幾方可輪流按遠程控制按鈕。 (3)將媒體加到現成講座中:如服務器告訴用戶可獲得附加媒體內容,對現場講座顯得尤其有用。如HTTP/1.1中類似,RTSP請求可由代理、通道與緩存處理。編輯本段協議特點
(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) 性能協調:如基本特徵無效,必須有一些清理機制讓用戶決定哪種方法沒生效。這允許用戶提出適合的用戶界面。編輯本段協議結構
RTSP是一種文本協議,採用UTF-8編碼中的ISO 10646字符集。一行可通過CRLF終止,但接收端需要做好解釋CR和LF作爲一行終止符的準備。關於頭字段概述如下: Header Type Support Methods Accept R opt. entity Accept-Encoding R opt. entity Accept-Language R opt. all Allow R opt. all Authorization R opt. all Bandwidth R opt. all Blocksize R opt. All but OPTIONS,TEARDOWN Cache-Control G opt. SETUP Conference R opt. SETUP Connection G req. all Content-Base E opt. entity Content-Encoding E req. SET_PARAMETER Content-Encoding E req. DESCRIBE,ANNOUNCE Content-Language E req. DESCRIBE,ANNOUNCE Content-Length E req. SET_PARAMETER,ANNOUNCE Content-Length E req. entity Content-Location E opt. entity Content-Type E req. SET_PARAMETER,ANNOUNCE Content-Type R req. entity CSeq G req. all Date G opt. all Expires E opt. DESCRIBE,ANNOUNCE From R opt. all If-Modified-Since R opt. DESCRIBE,SETUP Last-Modified E opt. entity Proxy-Authenticate Proxy-Require R req. all Public R opt. all Range R opt. PLAY,PAUSE,RECORD Range R opt. PLAY,PAUSE,RECORD Referer R opt. all Require R req. all Retry-After R opt. all RTP-Info R req. PLAY Scale Rr opt. PLAY,RECORD Session Rr req. All but SETUP,OPTIONS Server R opt. all Speed Rr opt. PLAY Transport Rr req. SETUP Unsupported R req. all User-Agent R opt. all Via G opt. all WWW-Authenticate R opt. all 類型"g"表示請求和響應中的通用請求頭;類型“R”表示請求頭;類型“r”表示響應頭;類型"e"表示實體頭字段。在“support”一欄中標有“req.”的字段必須由接收者以特殊的方法實現;而“opt.”的字段是可選的。注意,不是所有“req.”字段在該類型的每個請求中都會被髮送。“req.”只表示客戶機(支持響應頭)和服務器(支持請求頭)必須執行該字段。最後一欄列出了關於頭字段產生作用的方法;其中“entity”針對於返回一個信息主體的所有方法。編輯本段協議參數
1.RTSP版本 H.321採用,用RTSP代替HTTP。 2.RTSPURL “rksp"和“rtspu"方案用於指RTSP協議使用的網絡資源,爲RTSP URL定義方案特定的語法和語義。 3.會議標識 會議標識對RTSP來說是模糊的,採用標準URI編碼方法編碼,可包含任何八位組數值。會議標識必須全局惟一。 4.連接標識 連接標識是長度不確定的字符串,必須隨機選擇,至少要8個八位組長,使其很難被猜出。 5.SMPTE相關時標 SMPTE相關時標表示相對剪輯開始的時間,相關時標表示成SMPTE時間代碼,精確到幀級。時間代碼格式爲小時:分鐘:秒:幀。缺省smpte格式是"SMPTE 30",幀速率爲每秒29.97幀。其他SMPTE代碼可選擇使用smpte時間獲得支持(如"SMPIE 25")。時間數值中幀段值可從0到29。每秒30與29.97幀的差別可將每分鐘的頭兩幀丟掉來實現。如幀值爲零,就可刪除。 6.正常播放時間 正常播放時間(NPT)表示相對演示開始的流絕對位置。時標由十進制分數組成。左邊部分用秒或小時、分鐘、秒錶示;小數點右邊部分表示秒的部分。演示的開始對應0.0秒,負數沒有定義。特殊常數定義成現場事件的當前時刻,這也許只用於現場事件。直觀上,NPT是聯繫觀看者與程序的時鐘,通常以數字式顯示在VCR上。 7.絕對時間 絕對時間表示成ISO 8601時標,採用UTC(GMT)。 8.可選標籤 可選標籤是用於指定RTSP新可選項的惟一標記。這些標記用在請求和代理-請求頭段。當登記新RTSP選項時,需提供下列信息: (1)名稱和描述選項。名稱長度不限,但不應該多於20個字符。名稱不能包括空格、控制字符。 (2)表明誰改變選項的控制。如IETF,ISO,ITU-T,或其他國際標準團體、聯盟或公司。 (3)深入描述的參考,如RFC、論文、專利、技術報告、文檔源碼和計算機手冊。 (4)對專用選項,附上聯繫方式。編輯本段RTSP信息
RTSP是基於文本的協議,採用ISO 10646字符集,使用UTF-8編碼方案。行以CRLF中斷,但接收者本身可將CR和LF解釋成行終止符。基於文本的協議使以自描述方式增加可選參數更容易。由於參數的數量和命令的頻率出現較低,處理效率沒引起注意。文本協議很容易以腳本語言(如:Tcl,Visual Basic與Perl)實現研究原型。 ISO 10646字符集避免敏感字符集切換,但對應用來說不可見。RTCP也採用這種編碼方案。帶有重要意義位的ISO 8859-1字符表示如100001x 10x x x x x x。RTSP信息可通過任何低層傳輸協議攜帶。 請求包括方法、方法作用於其上的對象以及進一步描述方法的參數。方法也可設計爲在服務器端只需要少量或不需要狀態維護。當信息體包含在信息中,信息體長度由如下因素決定: (1)不管實體頭段是否出現在信息中,不包括信息體的響應,信息總以頭段後第一個空行結束。 (2)如出現內容長度頭段,其值以字節計,表示信息體長度。如未出現頭段,其值爲零。 (3)服務器關閉連接。 注意,RTSP目前並不支持HTTP 1.1“塊”傳輸編碼,需要有內容長度頭。假如返回適度演示描述長度,即使動態產生,使塊傳輸編碼沒有必要,服務器也應該能決定其長度。如有實體,即使必須有內容長度,且長度沒顯式給出,規則可確保行爲合理。 從用戶到服務器端的請求信息在第一行內包括源採用的方法、源標識和所用協議版本。RTSP定義了附加狀態代碼,但沒有定義任何HTTP代碼。編輯本段RTSP實體
如不受請求方法或響應狀態編碼限制,請求和響應信息可傳輸實體,實體則由實體頭文件和實體體組成,有些響應僅包括實體頭。在此,根據誰發送實體、誰接收實體,發送者和接收者可分別指用戶和服務器。 實體頭定義實體體可選元信息,如沒有實體體,指請求標識的資源。擴展頭機制允許定義附加實體頭段,而不用改變協議,但這些段不能假定接收者能識別。不可識別頭段應被接收者忽略,而讓代理轉發。編輯本段連接
RTSP請求可以幾種不同方式傳送: · 持久傳輸連接,用於多個請求/響應傳輸。 · 每個請求/響應傳輸一個連接。 · 無連接模式。 傳輸連接類型由RTSP URL來定義。對“rtsp'’方案,需要持續連接;而"rtspu"方案,調用RTSP請求發送,而不用建立連接。 不像HTTP,RTSP允許媒體服務器給媒體用戶發送請求。然而,這僅在持久連接時才支持,否則媒體服務器沒有可靠途徑到達用戶,這也是請求通過防火牆從媒體服務器傳到用戶的惟一途徑。編輯本段方法定義
方法記號表示資源上執行的方法,它區分大小寫。新方法可在將來定義,但不能以$開頭。已定義方法如下表所示。 RTSP方法方法 | 方向 | 對象 | 要求 | 含義 |
DESCRIBE | C->S | P,S | 推薦 | 檢查演示或媒體對象的描述,也允許使用接收頭指定用戶理解的描述格式。DESCRIBE的答覆-響應組成媒體RTSP初始階段 |
ANNOUNCE |
C->S S->C |
P,S | 可選 | 當從用戶發往服務器時,ANNOUNCE將請求URL識別的演示或媒體對象描述發送給服務器;反之,ANNOUNCE實時更新連接描述。如新媒體流加入演示,整個演示描述再次發送,而不僅僅是附加組件,使組件能被刪除 |
GET_PARAMETER |
C->S S->C |
P,S | 可選 | GET_PARAMETER請求檢查RUL指定的演示與媒體的參數值。沒有實體體時,GET_PARAMETER也許能用來測試用戶與服務器的連通情況 |
OPTIONS |
C->S S->C |
P,S | 要求 | 可在任意時刻發出OPTIONS請求,如用戶打算嘗試非標準請求,並不影響服務器狀態 |
PAUSE | C->S | P,S | 推薦 | PAUSE請求引起流發送臨時中斷。如請求URL命名一個流,僅回放和記錄被停止;如請求URL命名一個演示或流組,演示或組中所有當前活動的流發送都停止。恢復回放或記錄後,必須維持同步。在SETUP消息中連接頭超時參數所指定時段期間被暫停後,儘管服務器可能關閉連接並釋放資源,但服務器資源會被預訂 |
PLAY | C->S | P,S | 要求 | PLAY告訴服務器以SETUP指定的機制開始發送數據;直到一些SETUP請求被成功響應,客戶端纔可發佈PLAY請求。PLAY請求將正常播放時間設置在所指定範圍的起始處,發送流數據直到範圍的結束處。PLAY請求可排成隊列,服務器將PLAY請求排成隊列,順序執行 |
RECORD | C->S | P,S | 可選 | 該方法根據演示描述初始化媒體數據記錄範圍,時標反映開始和結束時間;如沒有給出時間範圍,使用演示描述提供的開始和結束時間。如連接已經啓動,立即開始記錄,服務器數據請求URL或其他URL決定是否存儲記錄的數據;如服務器沒有使用URL請求,響應應爲201(創建),幷包含描述請求狀態和參考新資源的實體與位置頭。支持現場演示記錄的媒體服務器必須支持時鐘範圍格式,smpte格式沒有意義 |
REDIRECT | S->C | P,S | 可選 | 重定向請求通知客戶端連接到另一服務器地址。它包含強制頭地址,指示客戶端發佈URL請求;也可能包括參數範圍,以指明重定向何時生效。若客戶端要繼續發送或接收URL媒體,客戶端必須對當前連接發送TEARDOWN請求,而對指定主執新連接發送SETUP請求 |
SETUP | C->S | S | 要求 | 對URL的SETUP請求指定用於流媒體的傳輸機制。客戶端對正播放的流發佈一個SETUP請求,以改變服務器允許的傳輸參數。如不允許這樣做,響應錯誤爲"455 Method Not Valid In This State”。爲了透過防火牆,客戶端必須指明傳輸參數,即使對這些參數沒有影響 |
SET_PARAMETER |
C->S S->C |
P,S | 可選 | 這個方法請求設置演示或URL指定流的參數值。請求僅應包含單個參數,允許客戶端決定某個特殊請求爲何失敗。如請求包含多個參數,所有參數可成功設置,服務器必須只對該請求起作用。服務器必須允許參數可重複設置成同一值,但不讓改變參數值。注意:媒體流傳輸參數必須用SETUP命令設置。將設置傳輸參數限制爲SETUP有利於防火牆。將參數劃分成規則排列形式,結果有更多有意義的錯誤指示 |
TEARDOWN | C->S | P,S | 要求 | TEARDOWN請求停止給定URL流發送,釋放相關資源。如URL是此演示URL,任何RTSP連接標識不再有效。除非全部傳輸參數是連接描述定義的,SETUP請求必須在連接可再次播放前發佈 |