轉(zhuǎn)載自:http://www.blogjava.net/AlanLiu/archive/2012/04/16/374775.html
1. 實時流協(xié)議RTSP
RTSP[3]協(xié)議以客戶服務(wù)器方式工作,它是一個多媒體播放控制協(xié)議,用來使用戶在播放從因特網(wǎng)下載的實時數(shù)據(jù)時能夠進(jìn)行控制,如:暫停/繼續(xù)、后退、前進(jìn)等。因此 RTSP 又稱為“因特網(wǎng)錄像機(jī)遙控協(xié)議”。
1.1. RTSP協(xié)議簡介
要實現(xiàn) RTSP 的控制功能,不僅要有協(xié)議,而且要有專門的媒體播放器(media player)和媒體服務(wù)器(media server)。媒體服務(wù)器與媒體播放器的關(guān)系是服務(wù)器與客戶的關(guān)系。
媒體服務(wù)器與普通的萬維網(wǎng)服務(wù)器的最大區(qū)別就是媒體服務(wù)器支持流式音頻和視頻的傳送,因而在客戶端的媒體播放器可以邊下載邊播放(需要先緩存一小段時間的節(jié)目)。但從普通萬維網(wǎng)服務(wù)器下載多媒體節(jié)目時,是先將整個文件下載完畢,然后再進(jìn)行播放。

圖1 RTSP與RTP和RTCP的關(guān)系
RTSP 僅僅是使媒體播放器能控制多媒體流的傳送。因此,RTSP 又稱為帶外協(xié)議,而多媒體流是使用 RTP 在帶內(nèi)傳送的。
1.2. RTSP的報文結(jié)構(gòu)
RTSP有兩類報文:請求報文和響應(yīng)報文。請求報文是指從客戶向服務(wù)器發(fā)送請求報文,響應(yīng)報文是指從服務(wù)器到客戶的回答。
由于 RTSP 是面向正文的(text-oriented),因此在報文中的每一個字段都是一些 ASCII 碼串,因而每個字段的長度都是不確定的。
RTSP報文由三部分組成,即開始行、首部行和實體主體。在請求報文中,開始行就是請求行,RTSP請求報文的結(jié)構(gòu)如圖2所示。

圖2 RTSP請求報文的結(jié)構(gòu)
RTSP請求報文的方法包括:OPTIONS、DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、GET_PARAMETER和SET_PARAMETER。RTSP請求報文的常用方法及作用如表1所示。
表1 RTSP請求報文的常用方法及作用
方法 |
作用 |
OPTIONS |
獲得服務(wù)器提供的可用方法 |
DESCRIBE |
得到會話描述信息 |
SETUP |
客戶端提醒服務(wù)器建立會話,并確定傳輸模式 |
TEARDOWN |
客戶端發(fā)起關(guān)閉請求 |
PLAY |
客戶端發(fā)送播放請求 |
響應(yīng)報文的開始行是狀態(tài)行,RTSP響應(yīng)報文的結(jié)構(gòu)如圖3所示。
圖3 RTSP響應(yīng)報文的結(jié)構(gòu)
1.3. RTSP交互過程
C表示RTSP客戶端,S表示RTSP服務(wù)端
① C->S: OPTION request //詢問S有哪些方法可用
S->C: OPTION response //S回應(yīng)信息中包括提供的所有可用方法
② C->S: DESCRIBE request //要求得到S提供的媒體初始化描述信息
S->C: DESCRIBE response //S回應(yīng)媒體初始化描述信息,主要是sdp
③ C->S: SETUP request //設(shè)置會話屬性,以及傳輸模式,提醒S建立會話
S->C: SETUP response //S建立會話,返回會話標(biāo)識符及會話相關(guān)信息
④ C->S: PLAY request //C請求播放
S->C: PLAY response //S回應(yīng)請求信息
S->C: 發(fā)送流媒體數(shù)據(jù)
⑤ C->S: TEARDOWN request //C請求關(guān)閉會話
S->C: TEARDOWN response //S回應(yīng)請求
上述的過程是標(biāo)準(zhǔn)的RTSP流程,其中第3步和第4步是必需的。