當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]1 緒論1.1 目的實(shí)時(shí)流協(xié)議(RTSP)建立并控制一個(gè)或幾個(gè)時(shí)間同步的連續(xù)流媒體。盡管連續(xù)媒體流與控制流有可能交叉,但RTSP本身通常并不發(fā)送連續(xù)媒體流。換言之,RTSP充當(dāng)多媒體服務(wù)器的網(wǎng)絡(luò)遠(yuǎn)程控

1 緒論

1.1 目的
實(shí)時(shí)流協(xié)議(RTSP)建立并控制一個(gè)或幾個(gè)時(shí)間同步的連續(xù)流媒體。盡管連續(xù)媒體流與控制流有可能交叉,但RTSP本身通常并不發(fā)送連續(xù)媒體流。換言之,RTSP充當(dāng)多媒體服務(wù)器的網(wǎng)絡(luò)遠(yuǎn)程控制。

表示描述(presentation description)定義了被控流,但本文并沒有定義表示描述的格式。

這里沒有使用RTSP連接的概念,而由RTSP會話(session)代替(每次服務(wù)由服務(wù)器端保持一個(gè)帶標(biāo)簽的會話)。RTSP會話沒有綁定到傳輸層連接(如TCP連接)。因?yàn)殡m然在RTSP會話期間,RTSP客戶端可打開或關(guān)閉多個(gè)對服務(wù)器端的可靠傳輸連接以發(fā)出RTSP 請求。但此外,也可能使用無連接傳輸協(xié)議,比如用UDP發(fā)送RTSP請求。

RTSP控制的流可能用到RTP,但RTSP操作并不依賴用于攜帶連續(xù)媒體的傳輸機(jī)制。實(shí)時(shí)流協(xié)議在語法和操作上與HTTP/1.1類似,因此HTTP的擴(kuò)展機(jī)制大都可加入RTSP。盡管如此,RTSP在很多方面還是和HTTP有很大的不同:

2 RTSP引入了很多新方法并且有不同的協(xié)議標(biāo)識符。
2 RTSP服務(wù)器在大多數(shù)默認(rèn)情況下需要維持一個(gè)狀態(tài),但HTTP是無狀態(tài)協(xié)議。
2 RTSP客戶機(jī)和服務(wù)器都可以發(fā)出請求。
2 數(shù)據(jù)由另一個(gè)協(xié)議傳送(有一特例除外)。
2 RTSP使用ISO 10646(UTF-8) 而不是ISO 8859-1,以配合當(dāng)前HTML的國際化。
2 RTSP使用URI請求時(shí)包含絕對URI。而由于歷史原因造成的向后兼容性問題,HTTP/1.1只在請求中包含絕對路徑,把主機(jī)名放入單獨(dú)的標(biāo)題域中。
這使得“虛擬主機(jī)”實(shí)現(xiàn)更為簡便,一個(gè)單獨(dú)IP地址的主機(jī)可虛擬為幾個(gè)文件樹主機(jī)。

協(xié)議支持的操作如下:

從媒體服務(wù)器上檢索媒體:
用戶可通過HTTP或其它方法請求一個(gè)表示描述。如表示是組播,表示描述就包含用于連續(xù)媒體的的組播地址和端口。如表示僅通過單播發(fā)送給用戶,用戶為了安全應(yīng)提供目的地址。

媒體服務(wù)器邀請進(jìn)入會議:
媒體服務(wù)器可被邀請參加正進(jìn)行的會議,或回放媒體,或記錄其中一部分,或全部。這種模式在分布式教育應(yīng)用上很有用,會議中幾方可輪流按遠(yuǎn)程控制按鈕。

將媒體加到現(xiàn)成講座中:
  如服務(wù)器告訴用戶可獲得附加媒體內(nèi)容,對現(xiàn)場講座顯得尤其有用。

如HTTP/1.1中類似,RTSP請求可由代理、通道與緩存處理。
1.2 要求
在本文檔中的關(guān)鍵字“必須”,“一定不能”,“要求”,“會”,“不會”,“應(yīng)該”,“不應(yīng)該”,“被推薦的”,“可以”,和“可選擇的”都在RFC2119中解釋。
1.3 術(shù)語
一些術(shù)語原由HTTP/1.1采用。在HTTP/1.1中定義的術(shù)語這里不再列舉。

合控制:
服務(wù)器使用單條時(shí)間線對多個(gè)流的控制。對音頻/視頻回饋來講,這就意味著客戶端僅需發(fā)送一條播放或者暫停消息就可同時(shí)控制音頻和視頻的回饋。
會議:
多方參與的多媒體表示,這里的多方意味著大于或者等于一方。
客戶端:
?,V刚埱竺襟w服務(wù)器上連續(xù)流媒體數(shù)據(jù)的客戶端。
連接:
 兩個(gè)應(yīng)用程序以通訊為目的在傳輸層建立虛擬電路。
容器文件:
 可以容納多個(gè)共同播放時(shí)包含表示(presentation)的媒體流的文件。RTSP服務(wù)器可以為這 些容器文件提供合控制,但容器文件的概念本身并不是本協(xié)議內(nèi)容。
連續(xù)媒體:
 接受器和數(shù)據(jù)源之間存在時(shí)序關(guān)系的數(shù)據(jù)。也就是說,接受器需要重新產(chǎn)生存在于源數(shù)據(jù)中的時(shí)序關(guān)系。最普通的連續(xù)媒體的例子是音頻和動(dòng)畫視頻。連續(xù)媒體可以是實(shí)時(shí)的(但是不交互的),它們在源和接受器之間是一種緊密的時(shí)序關(guān)系;或者是流的形式,這種關(guān)系就沒有那么嚴(yán)格了。
實(shí)體:
作為請求或者回應(yīng)的有效負(fù)荷傳輸?shù)男畔ⅰS梢詫?shí)體標(biāo)題域(entity-header field)形式存在的元信息和以實(shí)體主體(entity body)形式存在的內(nèi)容組成,如第八章所述。
媒體的初始化:
數(shù)據(jù)類型/編碼的具體初始化,這些包括時(shí)鐘輸率,顏色表等。用戶請求媒體回放的任何獨(dú)立傳輸信息,是在創(chuàng)建流時(shí)初始化媒體流相位時(shí)產(chǎn)生的。
媒體參數(shù):
針對回放前或回放過程中有可能改變的媒體類型而專門設(shè)定的參數(shù)。
媒體服務(wù)器:
可對一個(gè)或多個(gè)媒體流提供回放和錄制服務(wù)的服務(wù)器。同一個(gè)表示(presentation)中不同的媒體流可能來自于不同的媒體服務(wù)器。媒體服務(wù)器可以建立在作為傳送請求表示(presentation)的Web服務(wù)器的主機(jī)上,也可以建立在不同的主機(jī)上。
媒體服務(wù)器重定向:
 重新定向媒體客戶端到另外一個(gè)媒體服務(wù)器。
(媒體)流:
 單個(gè)媒體實(shí)例,比如,在應(yīng)用中共用音頻流或視頻流。當(dāng)使用RTP時(shí),流包括由RTP 會話(session)中源所創(chuàng)建的所有RTP和RTCP包。這和定義DSM-CC流時(shí)相同。
消息:
RTSP通訊的基本單元。由15章語法定義的一串八位位組組成,并通過連接或者無連接協(xié)議傳送。
參與者:
?,R粋€(gè)會議成員。參與者可以是機(jī)器,比如是媒體記錄或回放服務(wù)器。
表示(presentation):
對用戶請求所回饋的一組流,其使用下面的表示描述(presentation description)形式。在本文中的多數(shù)情況下,其意味著對流進(jìn)行總體控制,但這并不是必須的。
表示描述(presentation description):
表示描述包含在表示(presentation)中一個(gè)或者多個(gè)媒體流的信息。比如,編碼,網(wǎng)絡(luò)地址和內(nèi)容的信息。另外,其他IETF協(xié)議,如SDP協(xié)議使用會話(session)代替現(xiàn)場presentation。表示描述可以采用包括會話描述(session description)SDP在內(nèi)的多種格式。
回Γ?br />?,TSP回應(yīng)。如果能理解HTTP回應(yīng),就能清楚的理解RTSP回應(yīng)。
請求;
?,TSP請求。如果能理解HTTP請求,就能清楚的理解RTSP請求。
RTSP會話(session):
RTSP交互的全過程。比如,一個(gè)電影的觀看過程。會話(session)包括由客戶端建立連續(xù)媒體流傳輸機(jī)制(SETUP),使用播放(PLAY)或錄制(RECORD)開始傳送流,用停止(TEARDOWN)關(guān)閉流。
傳輸初始化:
客戶端和服務(wù)器端之間傳輸信息(端口號,傳輸協(xié)議等)的交互。
1.4 協(xié)議特點(diǎn)
RTSP 特性如下:
可擴(kuò)展性:
  RTSP中很容易加入新方法和參數(shù)。
易解析:
  RTSP可由標(biāo)準(zhǔn) HTTP或MIME解析器解析。
安全:
RTSP使用網(wǎng)頁安全機(jī)制。所有HTTP授權(quán)機(jī)制如basic和digest授權(quán)都可直接使用。也可以傳輸層或網(wǎng)絡(luò)層安全機(jī)制。
獨(dú)立于傳輸:
RTSP可使用不可靠數(shù)據(jù)報(bào)協(xié)議(UDP)、可靠數(shù)據(jù)報(bào)協(xié)議(RDP),如要實(shí)現(xiàn)應(yīng)用級可靠,可使用可靠流協(xié)議。
多服務(wù)器支持:
表示(presentation)中的每個(gè)流可放在不同服務(wù)器上,用戶端自動(dòng)同不同服務(wù)器建立幾個(gè)并發(fā)控制連接,媒體同步在傳輸層執(zhí)行。
記錄設(shè)備控制:
  協(xié)議可控制記錄和回放設(shè)備,也可控制可在記錄和回放切換的設(shè)備。
流控與會議開始分離:
流控與邀請媒體服務(wù)器入會分離;僅要求會議初始化協(xié)議提供,或可用來創(chuàng)建唯一會議標(biāo)識號。特殊情況下, SIP或H.323 可用來邀請服務(wù)器入會。
適合專業(yè)應(yīng)用:
  通過SMPTE 時(shí)標(biāo),RTSP支持幀級精度,允許遠(yuǎn)程數(shù)字編輯。
表示描述中立:
協(xié)議沒強(qiáng)加特殊表示或元文件,可傳達(dá)所用格式類型;然而,表示描述至少必須包含一個(gè)RTSP URI。
代理與防火墻友好:
協(xié)議可由應(yīng)用和傳輸層防火墻處理。防火墻需要理解SETUP方法,為UDP媒體流打開一個(gè)/"缺口/"。
HTTP友好:
此處,RTSP明智的采用HTTP觀念,使現(xiàn)在結(jié)構(gòu)都可重用。結(jié)構(gòu)包括Internet 內(nèi)容選擇平臺(PICS)。由于在大多數(shù)情況下控制連續(xù)媒體需要服務(wù)器狀態(tài), RTSP不僅僅向HTTP 添加方法。
適當(dāng)?shù)姆?wù)器控制:
  如用戶能啟動(dòng)一個(gè)流,它必須也能停止一個(gè)流。 服務(wù)器不能啟動(dòng)一個(gè)用戶不能停止的流。
傳輸協(xié)調(diào):
  實(shí)際處理連續(xù)媒體流前,用戶可協(xié)調(diào)傳輸方法。
性能協(xié)調(diào):
如基本特征無效,必須有一些清理機(jī)制讓用戶決定那種方法沒生效。這允許用戶提出適合的用戶界面。 例如,如果不允許尋找,用戶界面必定能禁止位置條滑動(dòng)。
以前要求RTSP必須能支持多用戶,但現(xiàn)在得出一個(gè)更好的方法就是保證RTSP能很容易擴(kuò)展成支持多用戶即可。因?yàn)榱鞯臉?biāo)志可以被多個(gè)控制流使用,因此”遠(yuǎn)程通過”成為可能。協(xié)議不涉及到多個(gè)客戶端如何協(xié)調(diào)入口,其由下層“社會協(xié)議”或其他下層控制機(jī)制提供。
1.5 RTSP擴(kuò)展
由于不是所有媒體服務(wù)器有著相同的功能,媒體服務(wù)器有必要支持不同請求集。例如:
? 服務(wù)器可能只須支持回放,因此不必不支持錄制功能。
? 對于支持現(xiàn)場播放的服務(wù)器可能不支持尋找功能。
? 一些服務(wù)器可能不支持設(shè)置流參數(shù),因此不支持GET_PARAMETER和SET_PARAMETER。
但服務(wù)器應(yīng)該實(shí)現(xiàn)所有12章中要求的標(biāo)題域。
表示描述(presentation description)應(yīng)當(dāng)保證不提出服務(wù)器不支持的功能,這種情形和HTTP/1.1中[H19.6]描述方法不支持across server的情形一致。
RTSP 可以如下三種方式擴(kuò)展,這里以改變大小排序:
? 以新參數(shù)擴(kuò)展。如用戶需要拒絕通知,而方法擴(kuò)展不支持,相應(yīng)標(biāo)記就加入要求的段中。
? 加入新方法。如信息接收者不理解請求,返回501錯(cuò)誤代碼(還未實(shí)現(xiàn)),發(fā)送者不應(yīng)再次嘗試這種方法。用戶可使用OPTIONS方法查詢服務(wù)器支持的方法。服務(wù)器使用公共回應(yīng)標(biāo)題列出支持的方法。
? 定義新版本協(xié)議,允許改變所有部分。(除了協(xié)議版本號位置)
1.6 操作模式
  每個(gè)表示和媒體流可用RTSP URL識別。表示組成的整個(gè)表示與媒體屬性由表示描述(presentation description)文件定義,表示描述格式不在本協(xié)議中定義。使用HTTP或其它途徑用戶可獲得這個(gè)文件,它沒有必要保存在媒體服務(wù)器上。
  為了說明,假設(shè)表示描述(presentation description)描述了多個(gè)表示(presentation),其中每個(gè)表示(presentation)維持了一個(gè)公共時(shí)間軸。為簡化說明,且不失一般性,假定表示描述(presentation description)的確包含這樣一個(gè)表示(presentation)。表示(presentation)可包含多個(gè)媒體流。
表示描述(presentation description)即組成表示的流的描述,包括它們的編碼,語言和使用戶可以選擇最符合要求媒體的其他參數(shù)。在表示描述中,被RTSP分別控制的媒體流由RTSP URL表示。RTSP URL指出了處理具體媒體流的服務(wù)器以及存在于該服務(wù)器上流的名字。多個(gè)媒體流可以放到不同的服務(wù)器上,比如音頻和視頻流可以分別放到不同服務(wù)器而負(fù)載共享。描述(description)還列出了服務(wù)器傳輸可使用的方法。
除媒體參數(shù)外,網(wǎng)絡(luò)目標(biāo)地址和端口也需要決定。下面區(qū)分幾種操作模式:
單播:
  以用戶選擇的端口號將媒體發(fā)送到RTSP請求源。
組播,服務(wù)器選擇地址:
  媒體服務(wù)器選擇組播地址和端口,這是現(xiàn)場直播或準(zhǔn)點(diǎn)播常用的方式。
組播,用戶選擇地址:
  如服務(wù)器加入正在進(jìn)行的組播會議,組播地址、端口和密匙由會議描述給出。
1.7 RTSP狀態(tài)
  RTSP控制通過單獨(dú)協(xié)議發(fā)送的流,與控制通道無關(guān)。例如,RTSP控制可通過TCP連接,而數(shù)據(jù)流通過UDP。因此,即使媒體服務(wù)器沒有收到請求,數(shù)據(jù)也會繼續(xù)發(fā)送。在會話生命期,單個(gè)媒體流可通過不同TCP連接順序發(fā)出請求來控制。所以,服務(wù)器需要維持能聯(lián)系流與RTSP請求的會話狀態(tài)。
RTSP中很多方法與狀態(tài)無關(guān),但下列方法在定義服務(wù)器流資源的分配與應(yīng)用上起著重要的用:
SETUP:
  讓服務(wù)器給流分配資源,啟動(dòng)RTSP會話。
PLAY與RECORD:
  啟動(dòng)SETUP 分配流的數(shù)據(jù)傳輸。
PAUSE:
  臨時(shí)停止流,而不釋放服務(wù)器資源。
TEARDOWN:
  釋放流的資源,RTSP會話停止。
  標(biāo)識狀態(tài)的RTSP方法使用會話(session)標(biāo)題域識別RTSP會話,為回應(yīng)SETUP請求,服務(wù)器生成會話標(biāo)識。
1.8 與其他協(xié)議關(guān)系
  RTSP在功能上與HTTP有重疊,與HTTP相互作用體現(xiàn)在與流內(nèi)容的初始接觸是通過網(wǎng)頁的。目前的協(xié)議規(guī)范目的在于允許在網(wǎng)頁服務(wù)器與實(shí)現(xiàn)RTSP媒體服務(wù)器之間存在不同傳遞點(diǎn)。例如,表示描述(presentation description)可通過HTTP和RTSP檢索,這降低了瀏覽器的往返傳遞,也允許獨(dú)立RTSP 服務(wù)器與用戶不全依靠HTTP。
  但是,RTSP與HTTP 的本質(zhì)差別在于數(shù)據(jù)發(fā)送以不同協(xié)議進(jìn)行。HTTP是不對稱協(xié)議,用戶發(fā)出請求,服務(wù)器作出回應(yīng)。RTSP中,媒體用戶和服務(wù)器都可發(fā)出請求,且其請求都是無狀態(tài)的;在請求確認(rèn)后很長時(shí)間內(nèi),仍可設(shè)置參數(shù),控制媒體流。
重用HTTP功能至少在兩個(gè)方面有好處,即安全和代理。要求非常接近,在緩存、代理和授權(quán)上采用HTTP功能是有價(jià)值的。
  當(dāng)大多數(shù)實(shí)時(shí)媒體使用RTP作為傳輸協(xié)議時(shí),RTSP沒有綁定到RTP。
RTSP假設(shè)存在表示描述格式可表示包含幾個(gè)媒體流的表示的靜態(tài)與臨時(shí)屬性。


2 符號協(xié)定
既然很多定義和語法與HTTP/1.1中相同,這里僅指出它們在HTTP/1.1中定義的位置而并沒有拷貝它們到本文檔。為簡便起見,本文檔中[ HX.Y ]表示對應(yīng)HTTP/1.1(RFC 2068)中的X.Y部分。([譯者注:]為更方便學(xué)習(xí)RTSP,本翻譯文檔將相關(guān)段落完全譯出)

與[H2.1]類似,本文對所有機(jī)制的說明都是以散文和補(bǔ)充反饋的方式來描述的。除RTSP中以”1#”代替”,”為分隔符不同外,其余在RFC 2234中有詳細(xì)的描述。簡單說明補(bǔ)充反饋方式如下:

補(bǔ)充反饋方式(augmented BNF)包括下面的結(jié)構(gòu):

要解釋的名詞=名詞解釋(name = definition)
規(guī)則的名字(name)就是它本身(不帶任何尖括號,“

字面意思("literal")
文字的字面意思放在引號中間,除非特別指定,該段文字是大小寫敏感的。

規(guī)則1|規(guī)則2(rule1 | rule2)
“|”表示其分隔的元素是可選的,比如,“是|否”要選擇‘是’或‘否’。

(規(guī)則1 規(guī)則2)((rule1 rule2))
在圓括號中的元素表明必選其一。如(元素1(元素2|元素3)元素4)可表明兩
種意思,即“元素1 元素2 元素4”和“元素1 元素3 元素4”

*規(guī)則(*rule)
在元素前加星號“*”表示循環(huán),其完整形式是“

〔規(guī)則〕([rule])
方括號內(nèi)是可選元素。如“〔元素1 元素2〕”與“*1(元素1 元素2)”是一回事。

N 規(guī)則(N rule)
表明循環(huán)的次數(shù):“

#規(guī)則(#rule)
“#”與“*”類似,用于定義元素列表。

完整形式是“

空元素在結(jié)構(gòu)中可被任意使用,但不參與元素個(gè)數(shù)的計(jì)數(shù)。也就是說,“(元素1),,
(元素2)”僅表示2個(gè)元素。但在結(jié)構(gòu)中,應(yīng)至少有一個(gè)非空的元素存在。缺省
值是0到無限,即“#(元素)”表示可取任何數(shù)值,包括0;而“1#元素”表示至
少有1個(gè);而“1#2元素”表示有1個(gè)或2個(gè)。

;注釋(; comment)
分號后面是注釋,僅在單行使用。

隱含*LWS(implied *LWS)
本文的語法描述是基于單詞的。除非另有指定,線性空格(LWS)可以兩個(gè)鄰近符
號或分隔符(tspecials)之間任意使用,而不會對整句的意思造成影響。在兩個(gè)符號之
間必須有至少一個(gè)分隔符,因?yàn)樗鼈円惨鰹閱为?dú)的符號來解釋。實(shí)際上,應(yīng)用程序在
產(chǎn)生HTTP結(jié)構(gòu)時(shí),應(yīng)當(dāng)試圖遵照“通常方式”,因?yàn)楝F(xiàn)在的確有些實(shí)現(xiàn)方式在通常方
式下無法正常工作。

在本備忘錄中,我們用縮進(jìn)的小型段落來提供動(dòng)機(jī)和背景資料。這將使沒有參與制定RTSP規(guī)范的讀者更容易理解RTSP中各部分為什么要以該方式來實(shí)現(xiàn)。

3 協(xié)議參數(shù)
3.1 RTSP版本
同[H3.1]定義,僅用RTSP代替HTTP即可。如下:
RTSP采用主從(

本文檔定義了RTSP協(xié)議的1.0版本。發(fā)送本規(guī)范定義的請求(Request)或回應(yīng)(Response)消息的應(yīng)用必須指明RTSP的版本為“RTSP/1.0”。使用該版本號意味著發(fā)送消息的應(yīng)用至少有條件的遵循本規(guī)范。應(yīng)用的RTSP版本即為應(yīng)用至少能有條件遵循的RTSP版本中的最高版本。

當(dāng)代理及網(wǎng)關(guān)收到與其自身版本不同的RTSP請求時(shí),必須小心處理請求的推送,因?yàn)?br />協(xié)議版本表明發(fā)送方的能力,代理或網(wǎng)關(guān)不應(yīng)發(fā)出高于自身版本的消息。如果收到高版本的請求,代理或網(wǎng)關(guān)必須降低該請求的版本,并回應(yīng)一個(gè)錯(cuò)誤。而低版本的請求也應(yīng)在被推送前升級。代理或網(wǎng)關(guān)回應(yīng)請求時(shí)必須和請求的版本相同。

3.2 RTSP URL
“rtsp”和“rtspu”表示要通過RTSP協(xié)議來定位網(wǎng)絡(luò)資源。本節(jié)詳細(xì)定義了RTSP URL的語法和語義。
rtsp_URL= ( "rtsp:" | "rtspu:" ) "http://" host [ ":" port ] [ abs_path ]
host?,?


9 連接
  RTSP請求可以幾種不同方式傳送:
  1、持久傳輸連接,用于多個(gè)請求/回應(yīng)傳輸。
  2、每個(gè)請求/回應(yīng)傳輸一個(gè)連接。
  3、無連接模式。
  傳輸連接類型由RTSP URI來定義。對 /"rtsp/" 方案,需要持續(xù)連接;而/"rtspu/"方案,調(diào)用RTSP 請求發(fā)送,而不用建立連接。
  不象HTTP,RTSP允許媒體服務(wù)器給媒體用戶發(fā)送請求。然而,這僅在持久連接時(shí)才支持,否則媒體服務(wù)器沒有可靠途徑到達(dá)用戶,這也是請求通過防火墻從媒體服務(wù)器傳到用戶的唯一途徑。

9.1 流水線操作
  支持持久連接或無連接的客戶端可能給其請求排隊(duì)。服務(wù)器必須以收到請求的同樣順序發(fā)出回應(yīng)。
9.2 可靠性及確認(rèn)
如果請求不是發(fā)送給組播組,接收者就確認(rèn)請求,如沒有確認(rèn)信息,發(fā)送者可在超過一個(gè)來回時(shí)間(RTT)后重發(fā)同一信息。 RTT在TCP中估計(jì),初始值為500 ms。應(yīng)用緩存最后所測量的RTT,作為將來連接的初始值。如使用一個(gè)可靠傳輸協(xié)議傳輸RTSP,請求不允許重發(fā),RTSP應(yīng)用反過來依賴低層傳輸提供可靠性。如兩個(gè)低層可靠傳輸(如TCP 和RTSP)應(yīng)用重發(fā)請求,有可能每個(gè)包損失導(dǎo)致兩次重傳。由于傳輸棧在第一次嘗試到達(dá)接收著者前不會發(fā)送應(yīng)用層重傳,接收者也不能充分利用應(yīng)用層重傳。如包損失由阻塞引起,不同層的重發(fā)將使阻塞進(jìn)一步惡化。時(shí)標(biāo)頭用來避免重發(fā)模糊性問題,避免對圓錐算法的依賴。每個(gè)請求在CSeq頭中攜帶一個(gè)系列號,每發(fā)送一個(gè)不同請求,它就加一。如由于沒有確認(rèn)而重發(fā)請求,請求必須攜帶初始系列號。
  實(shí)現(xiàn)RTSP的系統(tǒng)必須支持通過TCP傳輸RTSP ,并支持UDP。對UDP和TCP,RTSP服務(wù)器的缺省端口都是554。許多目的一致的RTSP包被打包成單個(gè)低層PDU或TCP流。RTSP數(shù)據(jù)可與RTP和RTCP包交叉。不象HTTP,RTSP信息必須包含一個(gè)內(nèi)容長度頭,無論信息何時(shí)包含負(fù)載。否則,RTSP包以空行結(jié)束,后跟最后一個(gè)信息頭。

10 方法定義(method token)表示了對請求統(tǒng)一資源標(biāo)志符(Request-URI)識別的資源所執(zhí)行的操作。方法名區(qū)分大小寫。將來可能定義新的方法。方法名可能不以美元符'$'(十進(jìn)制數(shù)24)開頭,但必須具有表征意義(must be a token)。

表格2是對方法的一個(gè)小結(jié)。

method direction object requirement

DESCRIBE C -> S P,S recommended

ANNOUNCE C -> S,S ->C P,S optional

GET PARAMETER C -> S,S ->C P,S optional

OPTIONS C -> S,S ->C P,S required(S ! C: optional)

PAUSE C -> S P,S recommended

PLAY C -> S P,S required

RECORD C -> S P,S optional

REDIRECT S ->C P,S optional

SETUP C -> S S required

SET PARAMETER C -> S,S ->C P,S optional

TEARDOWN C -> S P,S required

表2:對RTSP方法,和其操作方向及所操作對象(P: 表示, S: 媒體流)的一個(gè)概覽

注意:PAUSE方法是推薦的, 但在構(gòu)建一個(gè)全功能的服務(wù)器(fully functional server)

時(shí)可能不支持此方法,這時(shí)就不需要它,比如對于live feeds。如果服務(wù)器不支持某個(gè)特殊

方法,它必將返回"501 Not Implemented",并且客戶端應(yīng)該不再向該服務(wù)器請求該方法。

(注:Presentation是一個(gè)以完整的media feed呈現(xiàn)給client的一個(gè)或多個(gè)媒體流的集合,

暫且翻譯成表示)

10.1 OPTIONS

其行為與[H9.2]中描述的等同。OPTIONS請求可能在任何時(shí)候發(fā)出,例如客戶端將要發(fā)

出一個(gè)非標(biāo)準(zhǔn)的請求時(shí)。它不影響服務(wù)器狀態(tài)。

示例:

C->S: OPTIONS * RTSP/1.0

CSeq: 1

Require: implicit-play

Proxy-Require: gzipped-messages

S->C: RTSP/1.0 200 OK

CSeq: 1

Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

注意:這些都是必要的構(gòu)造特征(necessarily fictional features)。 (你可能不希望我

們?nèi)ビ幸夂雎阅切?shí)際上有用的特征,因此在這一部分中我們將給出一個(gè)詳細(xì)的例子)。

10.2 DESCRIBE

DESCRIBE方法從服務(wù)器檢索表示的描述或媒體對象,這些資源通過請求統(tǒng)一資源定位符(the request URL)識別。此方法可能結(jié)合使用Accept首部域來指定客戶端理解的描述格式。服務(wù)器端用被請求資源的描述對客戶端作出響應(yīng)。DESCRIBE的答復(fù)-響應(yīng)對(reply-response pair)組成了RTSP的媒體初始化階段。

示例:

C->S: DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0

CSeq: 312

Accept: application/sdp, application/rtsl, application/mheg

S->C: RTSP/1.0 200 OK

CSeq: 312

Date: 23 Jan 1997 15:35:06 GMT

Content-Type: application/sdp

Content-Length: 376

v=0

o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4

s=SDP Seminar

i=A Seminar on the session description protocol

u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps

e=mjh@isi.edu (Mark Handley)

c=IN IP4 224.2.17.12/127

t=2873397496 2873404696

a=recvonly

m=audio 3456 RTP/AVP 0

m=video 2232 RTP/AVP 31

m=whiteboard 32416 UDP WB

a=orient:portrait

DESCRIBE響應(yīng)必須包含它所描述資源的所有媒體初始化信息。如果媒體客戶端從一個(gè)數(shù)據(jù)源獲得表示描述,而非通過DESCRIBE,并且該描述包含了一個(gè)媒體初始化參數(shù)的全集,那么客戶端就應(yīng)該使用這些參數(shù),而不是再通過RTSP請求相同媒體的描述。

再有,服務(wù)器不應(yīng)該(SHOULD NOT)使用DESCRIBE響應(yīng)作為media indirection的方法。

需要建立基本的規(guī)則,使得客戶端有明確的方法了解何時(shí)通過DESCRIBE請求媒體初始化信息,何時(shí)不請求。強(qiáng)制DESCRIBE響應(yīng)包含它所描述媒體流集合的所有初始化信息,不鼓勵(lì)將DESCRIBE用作media indirection的方法,通過這兩點(diǎn)避免了使用其他方法可能會引起的循環(huán)問題(looping problems)

媒體初始化是任何基于RTSP系統(tǒng)的必要條件,但RTSP規(guī)范并沒有規(guī)定它必須通過DESCRIBE方法完成。RTSP客戶端可以通過3種方法來接收媒體初始化信息:

. DESCRIBE方法;

.其它一些協(xié)議(HTTP,email附件,等);

.命令行或標(biāo)準(zhǔn)輸入(同一個(gè)SDP或其它媒體初始化格式的文件一起啟動(dòng),工作方式類似于瀏覽器的幫助程序)。

為了實(shí)際協(xié)同工作,嚴(yán)重()推薦最精簡的服務(wù)器也支持DESCRIBE方法,最精簡的客戶端也支持從標(biāo)準(zhǔn)輸入,命令行和/或其它對于客戶端操作環(huán)境合適的方法來接收媒體初始化文件的能力。

10.3 ANNOUNCE

ANNOUNCE方法有兩個(gè)用途:

當(dāng)客戶端向服務(wù)器發(fā)送時(shí),ANNOUNCE將通過請求URL識別的表示描述或者媒體對象提交給服務(wù)器;

當(dāng)服務(wù)器相客戶端發(fā)送時(shí),ANNOUNCE實(shí)時(shí)更新會話描述。

如果有新的媒體流加到表示中(比如在一個(gè)現(xiàn)場表示中),整個(gè)表示描述應(yīng)該重發(fā);而不只是增加組件,如果這樣做的話,組件也可以被刪除了。

示例:

C->S: ANNOUNCE rtsp://server.example.com/fizzle/foo RTSP/1.0

CSeq: 312

Date: 23 Jan 1997 15:35:06 GMT

Session: 47112344

Content-Type: application/sdp

Content-Length: 332

v=0

o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4

s=SDP Seminar

i=A Seminar on the session description protocol

u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps

e=mjh@isi.edu (Mark Handley)

c=IN IP4 224.2.17.12/127

t=2873397496 2873404696

a=recvonly

m=audio 3456 RTP/AVP 0

m=video 2232 RTP/AVP 31

S->C: RTSP/1.0 200 OK

CSeq: 312

10.4 SETUP

SETUP請求為URI指定流式媒體的傳輸機(jī)制。客戶端能夠發(fā)出一個(gè)SETUP請求為正在播放的媒體流改變傳輸參數(shù),服務(wù)器可能同意這些參數(shù)的改變。若是不同意,它必須響應(yīng)錯(cuò)誤"455 Method Not Valid In This State"。 為了盡量繞開防火墻干涉,即使它不會影響參數(shù),客戶端也必須指出傳輸參數(shù),例如,指出服務(wù)器向外發(fā)布的固定的廣播地址。

由于SETUP包括了所有傳輸初始化信息,防火墻和其他中間的網(wǎng)絡(luò)設(shè)備(它們需要這些信息)分讓了解析DESCRIBE響應(yīng)的繁瑣任務(wù),這些任務(wù)留給了媒體初始化。

Transport首部域指定了客戶端數(shù)據(jù)傳輸時(shí)可接受的傳輸參數(shù);響應(yīng)包含了由服務(wù)器選出的傳輸參數(shù)。

C->S: SETUP rtsp://example.com/foo/bar/baz.rm RTSP/1.0

CSeq: 302

Transport: RTP/AVP;unicast;client_port=4588-4589

S->C: RTSP/1.0 200 OK

CSeq: 302

Date: 23 Jan 1997 15:35:06 GMT

Session: 47112344

Transport: RTP/AVP;unicast;

client_port=4588-4589;server_port=6256-6257

作為對SETUP請求的響應(yīng),服務(wù)器產(chǎn)生了會話標(biāo)志符。如果對服務(wù)器的請求中包含了會話標(biāo)志符,服務(wù)器必須將此setup請求捆綁到一個(gè)存在的會話,或者返回"459 Aggregate Operation Not Allowed"。

10.5 PLAY

PLAY方法告知服務(wù)器通過SETUP中指定的機(jī)制開始發(fā)送數(shù)據(jù) 。在尚未收到SETUP請求的成功應(yīng)答之前,客戶端不可以發(fā)出PLAY請求。PLAY請求將正常播放時(shí)間(normal play time)定位到指定范圍的起始處,并且傳輸數(shù)據(jù)流直到播放范圍結(jié)束。PLAY請求可能被管道化(pipelined),即放入隊(duì)列中(queued);服務(wù)器必須將PLAY請求放到隊(duì)列中有序執(zhí)行。也就是說,后一個(gè)PLAY請求需要等待前一個(gè)PLAY請求完成才能得到執(zhí)行。

比如,在下例中,不管到達(dá)的兩個(gè)PLAY請求之間有多緊湊,服務(wù)器首先play第10到15秒,然后立即第20到25秒,最后是第30秒直到結(jié)束。

C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0

CSeq: 835

Session: 12345678

Range: npt=10-15

C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0

CSeq: 836

Session: 12345678

Range: npt=20-25

C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0

CSeq: 837

Session: 12345678

Range: npt=30-

結(jié)合PAUSE請求的描述,看更深一層的示例。

不含Range首部域的PLAY請求也是合法的。它從媒體流開頭開始播放,直到媒體流被暫停。如果媒體流通過PAUSE暫停,媒體流傳輸將在暫停點(diǎn)(the pause point)重新開始。

如果媒體流正在播放,那么這樣一個(gè)PLAY請求將不起更多的作用,只是客戶端可以用此來測試服務(wù)器是否存活。

Range首部域可能包含一個(gè)時(shí)間參數(shù)。該參數(shù)以UTC格式指定了播放(palayback)開始的時(shí)間。如果在這個(gè)指定時(shí)間后收到消息,那么播放立即開始。時(shí)間參數(shù)可能用來幫助同步從不同數(shù)據(jù)源獲取的數(shù)據(jù)流。

對于一個(gè)點(diǎn)播(On-demand)媒體流,服務(wù)器用播放(play back)的實(shí)際范圍答復(fù)請求。This

may differ from the requested range if alignment of the requested range to valid frame boundaries is required for the media source.如果在請求中沒有指定范圍,當(dāng)前位置將在答復(fù)中返回。答復(fù)中播放范圍的單位與請求中相同。在播放完被要求的范圍后,表示將自動(dòng)暫停,就好像發(fā)出了一個(gè)PAUSE請求。

下面的示例在play整個(gè)表示時(shí)從SMPTE時(shí)間0:10:20直到剪輯(clip)結(jié)束。播放開始于1997年1月23號,15點(diǎn)36分

C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0

CSeq: 833

Session: 12345678

Range: smpte=0:10:20-;time=19970123T153600Z

S->C: RTSP/1.0 200 OK

CSeq: 833

Date: 23 Jan 1997 15:35:06 GMT

Range: smpte=0:10:22-;time=19970123T153600Z

For playing back a recording of a live presentation, it may be desirable to use clock

units:

C->S: PLAY rtsp://audio.example.com/meeting.en RTSP/1.0

CSeq: 835

Session: 12345678

Range: clock=19961108T142300Z-19961108T143520Z

S->C: RTSP/1.0 200 OK

CSeq: 835

Date: 23 Jan 1997 15:35:06 GMT

只有播放的媒體服務(wù)器必須支持npt時(shí)間格式,可能支持clock和smpte格式。

10.6 PAUSE

PAUSE請求引起媒體流傳輸?shù)臅簳r(shí)中斷。如果請求URL中指定了具體的媒體流,那么只有該媒體流的播放和記錄被暫停(halt)。比如,指定暫停音頻,播放將會無聲。如果請求URL指定了一個(gè)表示或者媒體流已成組,那么在該表示或組中的所有當(dāng)前活動(dòng)流的傳輸將被暫停。在重啟播放或記錄后,必須維護(hù)不同媒體軌跡(track)的同步。盡管服務(wù)器可能在暫停后,在timeout的時(shí)間內(nèi)關(guān)閉會話,釋放資源,但是任何資源都必須保存,其中timeout參數(shù)位于SETUP消息的會話頭中。

示例:

C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/1.0

CSeq: 834

Session: 12345678

S->C: RTSP/1.0 200 OK

CSeq: 834

Date: 23 Jan 1997 15:35:06 GMT

PAUSE請求中可能包含一個(gè)Range首部域用來指定何時(shí)媒體流或表示暫停,我們稱這個(gè)時(shí)刻為暫停點(diǎn)(pause point)。該首部域必須包含一個(gè)精確的值,而不是一個(gè)時(shí)間范圍。媒體流的正常播放時(shí)間設(shè)置成暫停點(diǎn)。當(dāng)服務(wù)器遇到在任何當(dāng)前掛起(pending)的PLAY請求中指定的時(shí)間點(diǎn)后,暫停請求生效。如果Range首部域指定了一個(gè)時(shí)間超出了任何一個(gè)當(dāng)前掛起的PLAY請求,將返回錯(cuò)誤"457 Invali

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉