RTSP協(xié)議
RTSP(Real Time Stream Protocol,,實(shí)時(shí)流協(xié)議)是應(yīng)用級(jí)協(xié)議,,控制實(shí)時(shí)數(shù)據(jù)的發(fā)送。RTSP提供了一個(gè)可擴(kuò)展框架,,使實(shí)時(shí)數(shù)據(jù),,如音頻與視頻的受控、點(diǎn)播成為可能,。數(shù)據(jù) 源包括現(xiàn)插數(shù)據(jù)與存儲(chǔ)在剪輯中的數(shù)據(jù),。該協(xié)議目的在于控制多個(gè)數(shù)據(jù)發(fā)送連接,為選擇發(fā)送通道如UDP,、多播UDP與TCP等提供途徑,,并為選擇基于RTP 上發(fā)送機(jī)制提供方法。 一.簡(jiǎn)介 1.目的 實(shí)時(shí)流協(xié)議建立并控制一個(gè)或幾個(gè)時(shí)間同步的連續(xù)流媒體,。盡管連續(xù)媒體流與控制流交叉是可能的,,通常它本身并不發(fā)送連續(xù)流。換言之,,RTSP充當(dāng)多媒 體服務(wù)器的網(wǎng)絡(luò)遠(yuǎn)程控制,。RTSP連接沒(méi)有綁定到傳輸層連接,如TCP,。在RTSP連接期間,,RTSP用戶(hù)可打開(kāi)或關(guān)閉多個(gè)對(duì)服務(wù)器的可靠傳輸連接以發(fā)出 RTSP請(qǐng)求。此外,,可使用無(wú)連接傳輸協(xié)議,,如UDP。RTSP流控制的流可能用到RTP,,但RTSP操作并不依賴(lài)用于攜帶連續(xù)媒體的傳輸機(jī)制,。實(shí)時(shí)流協(xié) 議在語(yǔ)法和操作上與HTTP 1.1類(lèi)似,因此HTTP的擴(kuò)展機(jī)制大都可加入RTSP,。協(xié)議支持的操作如下: (1)從媒體服務(wù)器上檢索媒體 用戶(hù)可通過(guò)HTTP或其他方法提交一個(gè)演示描述,。如演示是多播,,演示時(shí)就包含用于連續(xù)媒體的多播地址和端口。如演示僅通過(guò)單播發(fā)送給用戶(hù),,用戶(hù)為了安全應(yīng)提供目的地址,。 (2)媒體服務(wù)器邀請(qǐng)進(jìn)入會(huì)議 媒體服務(wù)器可被邀請(qǐng)參加正進(jìn)行的會(huì)議,或回放媒體,,或記錄其中一部分或全部,。這種模式在分布式教育應(yīng)用上很有用,會(huì)議中幾方可輪流按遠(yuǎn)程控制按鈕,。 (3)將媒體加到現(xiàn)成講座中 例如,服務(wù)器告訴用戶(hù)可獲得附加媒體內(nèi)容,。這對(duì)現(xiàn)場(chǎng)講座顯得尤其有用,。如HTTP 1.1中類(lèi)似,RTSP請(qǐng)求可由代理,、通道與緩存處理,。 2.協(xié)議特點(diǎn) RTSP有如下特性。 (1) 可擴(kuò)展性:新方法和參數(shù)很容易加入RTSP,。 (2) 易解析:RTSP可由標(biāo)準(zhǔn)HTTP或MIME解析器解析,。 (3) 安全:RTSP使用網(wǎng)頁(yè)安全機(jī)制。 (4) 獨(dú)立于傳輸:RTSP可使用不可靠數(shù)據(jù)報(bào)協(xié)議(EDP),、可靠數(shù)據(jù)報(bào)協(xié)議(RDP),;如要實(shí)現(xiàn)應(yīng)用級(jí)可靠,可使用可靠流協(xié)議,。 (5) 多服務(wù)器支持:每個(gè)流可放在不同服務(wù)器上,,用戶(hù)端自動(dòng)與不同服務(wù)器建立幾個(gè)并發(fā)控制連接,媒體同步在傳輸層執(zhí)行,。 (6) 記錄設(shè)備控制:協(xié)議可控制記錄和回放設(shè)備,。 (7) 流控與會(huì)議開(kāi)始分離:僅要求會(huì)議初始化協(xié)議提供,或可用來(lái)創(chuàng)建惟一會(huì)議標(biāo)識(shí)號(hào),。特殊情況下,可用SIP或H.323來(lái)邀請(qǐng)服務(wù)器入會(huì),。 (8) 適合專(zhuān)業(yè)應(yīng)用:通過(guò)SMPTE時(shí)標(biāo),,RTSP支持幀級(jí)精度,允許遠(yuǎn)程數(shù)字編輯,。 (9) 演示描述中立:協(xié)議沒(méi)強(qiáng)加特殊演示或元文件,,可傳送所用格式類(lèi)型;然而,,演示描述至少必須包括一個(gè)RTSP URL,。 (10) 代理與防火墻友好:協(xié)議可由應(yīng)用和傳輸層防火墻處理,。防火墻需要理解SETUP方法,為UDP媒體流打開(kāi)一個(gè)“缺口”,。 (11) HTTP友好:此處,,RTSP明智地采用HTTP觀念,使現(xiàn)在結(jié)構(gòu)都可重用,。結(jié)構(gòu)包括Internet內(nèi)容選擇平臺(tái)(PICS),。由于在大多數(shù)情況下控制連續(xù)媒體需要服務(wù)器狀態(tài),RTSP不僅僅向HTFP添加方法,。 (12) 適當(dāng)?shù)姆?wù)器控制:如用戶(hù)啟動(dòng)一個(gè)流,,必須也可以停止一個(gè)流。 (13) 傳輸協(xié)調(diào):實(shí)際處理連續(xù)媒體流前,,用戶(hù)可協(xié)調(diào)傳輸方法,。 (14) 性能協(xié)調(diào):如基本特征無(wú)效,必須有一些清理機(jī)制讓用戶(hù)決定哪種方法沒(méi)生效,。這允許用戶(hù)提出適合的用戶(hù)界面,。 3.?dāng)U展RTSP 由于不是所有媒體服務(wù)器有著相同的功能,媒體服務(wù)器有必要支持不同請(qǐng)求集,。RTSP可以如下三種方式擴(kuò)展: (1) 以新參數(shù)擴(kuò)展,。如用戶(hù)需要拒絕通知,而方法擴(kuò)展不支持,,相應(yīng)標(biāo)記就加人要求的段中,。 (2) 加入新方法。如信息接收者不理解請(qǐng)求,,返回501錯(cuò)誤代碼,,發(fā)送者不應(yīng)再次嘗試這種方法。用戶(hù)可使用OPTIONS方法查詢(xún)服務(wù)器支持的方法,。服務(wù)器使用公共響應(yīng)頭列出支持的方法,。 (3) 定義新版本協(xié)議,允許改變所有部分(協(xié)議版本號(hào)位置除外),。 4.操作模式 每個(gè)演示和媒體流可用RTSP URL識(shí)別,。演示組成的整個(gè)演示與媒體屬性由演示描述文件定義。使用HTTP或其他途徑用戶(hù)可獲得這個(gè)文件,,它沒(méi)有必要保存在媒體服務(wù)器上,。為了說(shuō)明這個(gè) 問(wèn)題,假設(shè)演示描述了多個(gè)演示,,其中每個(gè)演示維持了一個(gè)公共時(shí)間軸,。為簡(jiǎn)化說(shuō)明,且不失一般性,,假定演示描述的確包含這樣一個(gè)演示,。演示可包含多個(gè)媒體 流,。除媒體參數(shù)外,網(wǎng)絡(luò)目標(biāo)地址和端口也需要決定,。 下面區(qū)分幾種操作模式,。 (1)單播:用戶(hù)選擇的端口號(hào)將媒體發(fā)送到RTSP請(qǐng)求源。 (2)服務(wù)器選擇地址多播:媒體服務(wù)器選擇多播地址和端口,,這是現(xiàn)場(chǎng)直播或準(zhǔn)點(diǎn)播常用的方式,。 (3)用戶(hù)選擇地址多播:如服務(wù)器加入正在進(jìn)行的多播會(huì)議,多播地址,、端口和密鑰由會(huì)議描述給出,。 5.RTSP狀態(tài) RTSP控制通過(guò)單獨(dú)協(xié)議發(fā)送的流,與控制通道無(wú)關(guān),。例如,,RTSP控制可通過(guò)TCP連接,而數(shù)據(jù)流通過(guò)UDP,。因此,即使媒體服務(wù)器沒(méi)有收到請(qǐng) 求,,數(shù)據(jù)也會(huì)繼續(xù)發(fā)送,。在連接生命期,單個(gè)媒體流可通過(guò)不同TCP連接順序發(fā)出請(qǐng)求來(lái)控制,。所以,,服務(wù)器需要維持能聯(lián)系流與RTSP請(qǐng)求的連接狀態(tài)。 RTSP中很多方法與狀態(tài)無(wú)關(guān),,但下列方法在定義服務(wù)器流資源的分配與應(yīng)用上起著重要的作用: (1) SETUP:讓服務(wù)器給流分配資源,,啟動(dòng)RTSP連接。 (2) PLAY與RECORD:?jiǎn)?dòng)SETUP分配流的數(shù)據(jù)傳輸,。 (3) PAUSE:臨時(shí)停止流,,而不釋放服務(wù)器資源。 (4) TEARDOWN:釋放流的資源,,RTSP連接停止,。 標(biāo)識(shí)狀態(tài)的RTSP方法使用連接頭段識(shí)別RTSP連接,為響應(yīng)SETUP請(qǐng)求,,服務(wù)器連接產(chǎn)生連接標(biāo)識(shí),。 6.與其他協(xié)議的關(guān)系 RTSP在功能上與HTTP有重疊,與HTTP相互作用體現(xiàn)在與流內(nèi)容的初始接觸是通過(guò)網(wǎng)頁(yè)的,。目前的協(xié)議規(guī)范目的在于允許在網(wǎng)頁(yè)服務(wù)器與實(shí)現(xiàn) RTSP媒體服務(wù)器之間存在不同傳遞點(diǎn),。例如,演示描述可通過(guò)HTTP和RTSP檢索,,這降低了瀏覽器的往返傳遞,,也允許獨(dú)立RTSP服務(wù)器與用戶(hù)不全依 靠HTTP,。 但是,RTSP與HTTP的本質(zhì)差別在于數(shù)據(jù)發(fā)送以不同協(xié)議進(jìn)行,。HTTP是不對(duì)稱(chēng)協(xié)議,,用戶(hù)發(fā)出請(qǐng)求,服務(wù)器作出響應(yīng),。RTSP中,,媒體用戶(hù)和服 務(wù)器都可發(fā)出請(qǐng)求,且其請(qǐng)求都是無(wú)狀態(tài)的,;在請(qǐng)求確認(rèn)后很長(zhǎng)時(shí)間內(nèi),,仍可設(shè)置參數(shù),控制媒體流,。重用HTTP功能至少在兩個(gè)方面有好處,,即安全和代理。要 求非常接近時(shí),,在緩存,、代理和授權(quán)上采用HTTP功能是有價(jià)值的。 當(dāng)大多數(shù)實(shí)時(shí)媒體使用RTP作為傳輸協(xié)議時(shí),,RTSP沒(méi)有綁定到RTP,。RTSP假設(shè)存在演示描述格式可表示包含幾個(gè)媒體流的演示的靜態(tài)與臨時(shí)屬性。 二. 協(xié)議參數(shù) 1.RTSP版本 H.321采用,,用RTSP代替HTTP,。 2.RTSPURL “rksp"和“rtspu"方案用于指RTSP協(xié)議使用的網(wǎng)絡(luò)資源,為RTSP URL定義方案特定的語(yǔ)法和語(yǔ)義,。 3.會(huì)議標(biāo)識(shí) 會(huì)議標(biāo)識(shí)對(duì)RTSP來(lái)說(shuō)是模糊的,,采用標(biāo)準(zhǔn)URI編碼方法編碼,可包含任何八位組數(shù)值,。會(huì)議標(biāo)識(shí)必須全局惟一,。 4.連接標(biāo)識(shí) 連接標(biāo)識(shí)是長(zhǎng)度不確定的字符串,必須隨機(jī)選擇,,至少要8個(gè)八位組長(zhǎng),,使其很難被猜出。 5.SMPTE相關(guān)時(shí)標(biāo) SMPTE相關(guān)時(shí)標(biāo)表示相對(duì)剪輯開(kāi)始的時(shí)間,,相關(guān)時(shí)標(biāo)表示成SMPTE時(shí)間代碼,,精確到幀級(jí)。時(shí)間代碼格式為小時(shí):分鐘:秒:幀,。缺省smpte格 式是"SMPTE 30",,幀速率為每秒29.97幀。其他SMPTE代碼可選擇使用smpte時(shí)間獲得支持(如"SMPIE 25")。時(shí)間數(shù)值中幀段值可從0到29,。每秒30與29.97幀的差別可將每分鐘的頭兩幀丟掉來(lái)實(shí)現(xiàn),。如幀值為零,就可刪除,。 6.正常播放時(shí)間 正常播放時(shí)間(NPT)表示相對(duì)演示開(kāi)始的流絕對(duì)位置,。時(shí)標(biāo)由十進(jìn)制分?jǐn)?shù)組成。左邊部分用秒或小時(shí),、分鐘,、秒表示;小數(shù)點(diǎn)右邊部分表示秒的部分,。演 示的開(kāi)始對(duì)應(yīng)0.0秒,,負(fù)數(shù)沒(méi)有定義。特殊常數(shù)定義成現(xiàn)場(chǎng)事件的當(dāng)前時(shí)刻,,這也許只用于現(xiàn)場(chǎng)事件,。直觀上,NPT是聯(lián)系觀看者與程序的時(shí)鐘,,通常以數(shù)字式 顯示在VCR上,。 7.絕對(duì)時(shí)間 絕對(duì)時(shí)間表示成ISO 8601時(shí)標(biāo),采用UTC(GMT),。 8.可選標(biāo)簽 可選標(biāo)簽是用于指定RTSP新可選項(xiàng)的惟一標(biāo)記,。這些標(biāo)記用在請(qǐng)求和代理-請(qǐng)求頭段。當(dāng)?shù)怯浶翿TSP選項(xiàng)時(shí),,需提供下列信息: (1)名稱(chēng)和描述選項(xiàng)。名稱(chēng)長(zhǎng)度不限,,但不應(yīng)該多于20個(gè)字符,。名稱(chēng)不能包括空格、控制字符,。 (2)表明誰(shuí)改變選項(xiàng)的控制,。如IETF,ISO,,ITU-T,,或其他國(guó)際標(biāo)準(zhǔn)團(tuán)體、聯(lián)盟或公司,。 (3)深入描述的參考,,如RFC、論文,、專(zhuān)利,、技術(shù)報(bào)告、文檔源碼和計(jì)算機(jī)手冊(cè)。 (4)對(duì)專(zhuān)用選項(xiàng),,附上聯(lián)系方式,。 三. RTSP信息 RTSP是基于文本的協(xié)議,采用ISO 10646字符集,,使用UTF-8編碼方案,。行以CRLF中斷,但接收者本身可將CR和LF解釋成行終止符,?;谖谋镜膮f(xié)議使以自描述方式增加可選參數(shù)更 容易。由于參數(shù)的數(shù)量和命令的頻率出現(xiàn)較低,,處理效率沒(méi)引起注意,。文本協(xié)議很容易以腳本語(yǔ)言(如:Tcl,Visual Basic與Perl)實(shí)現(xiàn)研究原型,。 ISO 10646字符集避免敏感字符集切換,,但對(duì)應(yīng)用來(lái)說(shuō)不可見(jiàn)。RTCP也采用這種編碼方案,。帶有重要意義位的ISO 8859-1字符表示如100001x 10x x x x x x,。RTSP信息可通過(guò)任何低層傳輸協(xié)議攜帶。 請(qǐng)求包括方法,、方法作用于其上的對(duì)象以及進(jìn)一步描述方法的參數(shù),。方法也可設(shè)計(jì)為在服務(wù)器端只需要少量或不需要狀態(tài)維護(hù)。當(dāng)信息體包含在信息中,,信息體長(zhǎng)度由如下因素決定: (1)不管實(shí)體頭段是否出現(xiàn)在信息中,,不包括信息體的響應(yīng),信息總以頭段后第一個(gè)空行結(jié)束,。 (2)如出現(xiàn)內(nèi)容長(zhǎng)度頭段,,其值以字節(jié)計(jì),表示信息體長(zhǎng)度,。如未出現(xiàn)頭段,,其值為零。 (3)服務(wù)器關(guān)閉連接,。 注意,,RTSP目前并不支持HTTP 1.1“塊”傳輸編碼,需要有內(nèi)容長(zhǎng)度頭,。假如返回適度演示描述長(zhǎng)度,,即使動(dòng)態(tài)產(chǎn)生,使塊傳輸編碼沒(méi)有必要,,服務(wù)器也應(yīng)該能決定其長(zhǎng)度,。如有實(shí)體,即使必須有內(nèi)容長(zhǎng)度,且長(zhǎng)度沒(méi)顯式給出,,規(guī)則可確保行為合理,。 從用戶(hù)到服務(wù)器端的請(qǐng)求信息在第一行內(nèi)包括源采用的方法、源標(biāo)識(shí)和所用協(xié)議版本,。RTSP定義了附加狀態(tài)代碼,,但沒(méi)有定義任何HTTP代碼。 四. 實(shí)體 如不受請(qǐng)求方法或響應(yīng)狀態(tài)編碼限制,,請(qǐng)求和響應(yīng)信息可傳輸實(shí)體,,實(shí)體則由實(shí)體頭文件和實(shí)體體組成,有些響應(yīng)僅包括實(shí)體頭,。在此,,根據(jù)誰(shuí)發(fā)送實(shí)體、誰(shuí)接收實(shí)體,,發(fā)送者和接收者可分別指用戶(hù)和服務(wù)器,。 實(shí)體頭定義實(shí)體體可選元信息,如沒(méi)有實(shí)體體,,指請(qǐng)求標(biāo)識(shí)的資源,。擴(kuò)展頭機(jī)制允許定義附加實(shí)體頭段,而不用改變協(xié)議,,但這些段不能假定接收者能識(shí)別,。不可識(shí)別頭段應(yīng)被接收者忽略,而讓代理轉(zhuǎn)發(fā),。 五. 連接 RTSP請(qǐng)求可以幾種不同方式傳送: · 持久傳輸連接,,用于多個(gè)請(qǐng)求/響應(yīng)傳輸。 · 每個(gè)請(qǐng)求/響應(yīng)傳輸一個(gè)連接,。 · 無(wú)連接模式,。 傳輸連接類(lèi)型由RTSP URL來(lái)定義。對(duì)“rtsp'’方案,,需要持續(xù)連接,;而"rtspu"方案,,調(diào)用RTSP請(qǐng)求發(fā)送,,而不用建立連接。 不像HTTP,,RTSP允許媒體服務(wù)器給媒體用戶(hù)發(fā)送請(qǐng)求,。然而,這僅在持久連接時(shí)才支持,,否則媒體服務(wù)器沒(méi)有可靠途徑到達(dá)用戶(hù),,這也是請(qǐng)求通過(guò)防火墻從媒體服務(wù)器傳到用戶(hù)的惟一途徑。 六. 方法定義 方法記號(hào)表示資源上執(zhí)行的方法,它區(qū)分大小寫(xiě),。新方法可在將來(lái)定義,,但不能以$開(kāi)頭。已定義方法如表14-03-1所示,。 表14-03-1 RTSP方法
注:P----演示,,S----流,,C----用戶(hù)端,S----服務(wù)器端
某些防火墻設(shè)計(jì)與其他環(huán)境可能要求服務(wù)器插入RTSP方法和流數(shù)據(jù),。由于插入將使客戶(hù)端和服務(wù)器操作復(fù)雜,,并增加附加開(kāi)銷(xiāo),除非有必要,,應(yīng)避免這樣 做,。插入二進(jìn)制數(shù)據(jù)僅在RTSP通過(guò)TCP傳輸時(shí)才可使用。流數(shù)據(jù)(如RTP包)用一個(gè)ASCII字符$封裝,,后跟一個(gè)一字節(jié)通道標(biāo)識(shí),,其后是封裝二進(jìn)制 數(shù)據(jù)的長(zhǎng)度,兩字節(jié)整數(shù),。流數(shù)據(jù)緊跟其后,,沒(méi)有CRLF,但包括高層協(xié)議頭,。每個(gè)$塊包含一個(gè)高層協(xié)議數(shù)據(jù)單元,。 當(dāng)傳輸選擇為RTP,RTCP信息也被服務(wù)器通過(guò)TCP連接插入,。缺省情況下,,RTCP包在比RTP通道高的第一個(gè)可用通道上發(fā)送??蛻?hù)端可能在另 一通道顯式請(qǐng)求RTCP包,,這可通過(guò)指定傳輸頭插入?yún)?shù)中的兩個(gè)通道來(lái)做到。當(dāng)兩個(gè)或更多流交叉時(shí),,為取得同步,,需要RTCP。而且,,這為當(dāng)網(wǎng)絡(luò)設(shè)置需要 通過(guò)TCP控制連接透過(guò)RTP/RTCP提供了一條方便的途徑,,可能時(shí),在UDP上進(jìn)行傳輸,。 七. 流水線操作 支持持久連接或無(wú)連接的客戶(hù)端可能給其請(qǐng)求排隊(duì),。服務(wù)器必須以收到請(qǐng)求的同樣順序發(fā)出響應(yīng)。如果請(qǐng)求不是發(fā)送給多播組,,接收者就確認(rèn)請(qǐng)求,,如沒(méi)有確認(rèn)信息,發(fā)送者可在超過(guò)一個(gè)來(lái)回時(shí)間(RTT)后重發(fā)同一信息,。 在TCP中RTT估計(jì)的初始值為500ms,。應(yīng)用緩存最后所測(cè)量的RTT,作為將來(lái)連接的初始值,。如使用一個(gè)可靠傳輸協(xié)議傳輸RTSP,,請(qǐng)求不允許 重發(fā),,RTSP應(yīng)用反過(guò)來(lái)依賴(lài)低層傳輸提供可靠性。如兩個(gè)低層可靠傳輸(如TCP和RTSP)應(yīng)用重發(fā)請(qǐng)求,,有可能每個(gè)包損失導(dǎo)致兩次重傳,。由于傳輸棧在 第一次嘗試到達(dá)接收者前不會(huì)發(fā)送應(yīng)用層重傳,接收者也不能充分利用應(yīng)用層重傳,。如包損失由阻塞引起,,不同層的重發(fā)將使阻塞進(jìn)一步惡化。時(shí)標(biāo)頭用來(lái)避免重發(fā) 模糊性問(wèn)題,,避免對(duì)圓錐算法的依賴(lài),。每個(gè)請(qǐng)求在CSeq頭中攜帶一個(gè)系列號(hào),每發(fā)送一個(gè)不同請(qǐng)求,,它就加一,。如由于沒(méi)有確認(rèn)而重發(fā)請(qǐng)求,請(qǐng)求必須攜帶初始 系列號(hào),。 實(shí)現(xiàn)RTSP的系統(tǒng)必須支持通過(guò)TCP傳輸RTSP,,并支持UDP。對(duì)UDP和TCP,,RTSP服務(wù)器的缺省端口都是554,。許多目的一致的 RTSP包被打包成單個(gè)低層PDU或TCP流。RTSP數(shù)據(jù)可與RTP和RTCP包交叉,。不像HTTP,,RTSP信息必須包含一個(gè)內(nèi)容長(zhǎng)度頭,無(wú)論信息何 時(shí)包含負(fù)載,。否則,,RTSP包以空行結(jié)束,后跟最后一個(gè)信息頭,。 |
|
來(lái)自: 燮羽 > 《RTSP/RTP/RTCP》