張功國(guó),陳瑩星
(1.重慶郵電大學(xué),重慶400065;2.重慶信科設(shè)計(jì)有限公司,重慶401121)
隨著Internet日益發(fā)展,網(wǎng)絡(luò)的傳輸數(shù)據(jù)不僅限制于文字與圖形,語音與視頻也成為了主流,在現(xiàn)有的網(wǎng)絡(luò)資源下,帶寬的限制影響了多媒體的傳輸質(zhì)量。實(shí)現(xiàn)傳統(tǒng)的下載播放也較為困難,而流媒體技術(shù)的產(chǎn)生很好地解決了這個(gè)問題。
流媒體技術(shù)[1]是指將語音、視頻形成一種穩(wěn)定、連續(xù)的傳輸流或回放流,能夠支持視頻流的實(shí)時(shí)傳輸與實(shí)時(shí)播放功能,在用戶發(fā)出視頻請(qǐng)求時(shí),在流媒體的服務(wù)器端會(huì)將連續(xù)且穩(wěn)定的數(shù)據(jù)流發(fā)往客戶端,一旦客戶端接收到數(shù)據(jù),不需等到數(shù)據(jù)下載完畢后才能進(jìn)行播放,而是實(shí)時(shí)地進(jìn)行數(shù)據(jù)流的穩(wěn)定播放。
在無線視頻監(jiān)控系統(tǒng)中為滿足用戶能實(shí)時(shí)控制流媒體的播放,實(shí)現(xiàn)點(diǎn)播用于遠(yuǎn)程控制流媒體如暫停、快進(jìn)、快退等。在本方案中采用SIP協(xié)議來控制會(huì)話,RTSP協(xié)議來控制實(shí)時(shí)流的VCR功能。
SIP協(xié)議[2]與RTSP協(xié)議[3]的共同點(diǎn)在于它們都是應(yīng)用層的用來建立、終止流媒體會(huì)話的雙向交互的信令控制協(xié)議,利用文本協(xié)議進(jìn)行編碼,SIP與RTSP的操作模式都是通過客戶端/服務(wù)器的請(qǐng)求/響應(yīng)模式來完成信令的交互過程。RTSP與SIP均用SDP來描述會(huì)話。
SIP協(xié)議與RTSP協(xié)議的區(qū)別:SIP主要采用三次握手機(jī)制應(yīng)用于傳輸層上,保證信令可靠穩(wěn)定的交互過程,SIP獨(dú)立于媒體,通過代理服務(wù)器、注冊(cè)服務(wù)器、重定向服務(wù)器的作用來完成信令的交互過程。SIP優(yōu)點(diǎn)是將建立一個(gè)會(huì)話和描述一個(gè)會(huì)話相分離,具有良好的互操作性,同時(shí)利用SIP服務(wù)器來完成基于Request—URL的SIP請(qǐng)求和基于報(bào)文頭內(nèi)容的SIP應(yīng)答尋找路由的服務(wù)。利用這個(gè)優(yōu)勢(shì)使得SIP成為端到端的協(xié)議,并且這樣的協(xié)議良好地體現(xiàn)了端到端的智能化,這是由于SIP消息自身存在用于路由的消息。由RealNetworks和Netscape共同提出的實(shí)時(shí)流協(xié)議RTSP[4](RealTimeStreamingProtocol),該協(xié)議的主要作用是將一對(duì)多應(yīng)用程序通過IP網(wǎng)絡(luò)有效地傳送多媒體數(shù)據(jù),RTSP[4]主要架接在TCP協(xié)議上的信令控制傳輸層對(duì)稱的有狀態(tài)的協(xié)議。它允許客戶端/服務(wù)器端相互發(fā)送請(qǐng)求,同時(shí)保持用戶的狀態(tài)。而RTSP則側(cè)重于完成流媒體的控制如暫停、播放、快進(jìn)、快退等。RTSP的優(yōu)點(diǎn)是多服務(wù)器支持每個(gè)流放在不同服務(wù)器上,用戶端自動(dòng)與不同服務(wù)器建立幾個(gè)并發(fā)控制連接,媒體同步在傳輸層執(zhí)行。RTSP控制通過單獨(dú)協(xié)議發(fā)送的流,與控制通道無關(guān)。例如,RTSP控制可通過TCP連接,而數(shù)據(jù)流通過UDP。因此,即使媒體服務(wù)器沒有收到請(qǐng)求,數(shù)據(jù)也會(huì)繼續(xù)發(fā)送。在連接生命期,單個(gè)媒體流可通過不同TCP連接順序發(fā)出請(qǐng)求來控制。所以,服務(wù)器需要維持能聯(lián)系流與RTSP請(qǐng)求的連接狀態(tài)基于流媒體服務(wù)器的結(jié)構(gòu)。
RTSP主要在多媒體流傳輸過程中,利用播放器與服務(wù)器之間通過交換RTSP消息來實(shí)現(xiàn)資源描述信息的獲取、建立連接、播放等功能。利用SIP來完成會(huì)話的建立,并建立起視頻流。在一次信令的交互過程中主要用到的方法如表1所示。
表1 SIP與RTSP的主要方法
在實(shí)時(shí)視頻請(qǐng)求的過程中,利用SDP描述符來完成請(qǐng)求過程,具體的流程如圖1所示。
圖1 SIP實(shí)現(xiàn)實(shí)時(shí)視頻建立過程
用戶將請(qǐng)求的實(shí)時(shí)視頻的信息,通過流媒體服務(wù)器的客戶端來接收用戶請(qǐng)求消息,并向SIP服務(wù)器發(fā)送一個(gè)INVITE請(qǐng)求,其中包含目的用戶、端口號(hào)等信息,SIP服務(wù)器收到該請(qǐng)求消息后,先向流媒體服務(wù)器回送一個(gè)100 Trying,表示正在嘗試連接,繼而將消息轉(zhuǎn)發(fā)到前端,如果前端收到了該請(qǐng)求,就會(huì)向SIP服務(wù)器發(fā)送101 Dialog Establishement的消息給服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)給流媒體服務(wù)器,直到前端分別發(fā)送180 Ring和200 OK并得到流媒體服務(wù)器的ACK確認(rèn)后,表示該請(qǐng)求建立成功[5]。具體的流程如圖2所示。
圖2 客戶端向流媒體服務(wù)器請(qǐng)求播放視頻
在流媒體服務(wù)器的客戶端中利用socket對(duì)用戶端口進(jìn)行監(jiān)聽,如果用戶輸入的流媒體服務(wù)器的地址、端口以及流媒體服務(wù)器的地址、端口和RTSP的端口、用戶名、密碼等信息符合,則用戶就可以向流媒體服務(wù)器發(fā)起請(qǐng)求。首先,客戶端向服務(wù)器端發(fā)送帶有OPTION請(qǐng)求,如果請(qǐng)求成功,服務(wù)器端就會(huì)發(fā)送允許請(qǐng)求的方法給客戶端;其次,客戶端繼續(xù)發(fā)送DESCRIBE請(qǐng)求給服務(wù)器端,并回應(yīng)200 OK表示請(qǐng)求成功;然后,客戶端發(fā)送SETUP用以建立傳輸機(jī)制,服務(wù)器為其建立一個(gè)視頻服務(wù);最后客戶端發(fā)送PLAY請(qǐng)求,一旦PLAY請(qǐng)求成功,則用戶就可以獲得該視頻資源。
在SIP模塊中主要負(fù)責(zé)信令會(huì)話的呼叫與建立過程,而RTSP模塊負(fù)責(zé)流媒體的控制。利用各自的特點(diǎn)共同完成視頻播放的過程,信令模塊的設(shè)計(jì)過程如圖3所示。
圖3 SIP模塊處理過程
在RTSP模塊主要由編碼器、解碼器、播放器和服務(wù)器組成。RTSP作為會(huì)話控制的協(xié)議,跨接于RTP與RTCP協(xié)議之上,能夠?qū)⒍嗝襟w文件切割成多個(gè)適合于網(wǎng)絡(luò)傳輸?shù)钠?,?jīng)過封裝后送往客戶端,客戶端可以隨時(shí)進(jìn)行解碼播放,具體的處理模塊如圖4所示[6]。
圖4 RTSP模塊處理過程
客戶端主要完成與服務(wù)器端的呼叫建立過程以及流媒體控制過程,利用RTP協(xié)議來接收數(shù)據(jù)流,接收到的數(shù)據(jù)流通過解碼后,還原成原始圖像,通過播放器在本地實(shí)時(shí)播放數(shù)據(jù)[7]。為了讓服務(wù)器端更好地了解客戶端的播放情況,需要利用RTCP協(xié)議來完成數(shù)據(jù)包的發(fā)送。服務(wù)器端根據(jù)RTCP包來動(dòng)態(tài)調(diào)整傳輸速率,節(jié)省帶寬資源,提高視頻質(zhì)量。
服務(wù)器端收到請(qǐng)求后,將前端采集到的音、視頻數(shù)據(jù)進(jìn)行分離,利用RTP協(xié)議將數(shù)據(jù)打包通過UDP端口傳遞到客戶端,RTP協(xié)議能夠提供時(shí)間信息,反映RTP數(shù)據(jù)幀中的數(shù)據(jù)采用時(shí)間,客戶端可以依據(jù)這個(gè)時(shí)間來重建數(shù)據(jù)的時(shí)序關(guān)系,用于正常播放媒體流[8]。由于RTP是作為傳輸層的協(xié)議建立在UDP協(xié)議上,所以它沒有可靠的機(jī)制來保證數(shù)據(jù)正確到達(dá)目的地,而且也不支持流量控制與擁塞控制。鑒于網(wǎng)絡(luò)不穩(wěn)定等原因,需要適當(dāng)調(diào)整傳輸速率,改變載荷類型等內(nèi)容,在數(shù)據(jù)的傳輸過程中需要依靠RTCP來周期性地向RTP反應(yīng)當(dāng)前情況,繼而,服務(wù)器端根據(jù)反饋回來的信息改變發(fā)送的速度,提高實(shí)時(shí)傳輸質(zhì)量。
服務(wù)器端接收到RTSP請(qǐng)求后,產(chǎn)生RTSP請(qǐng)求對(duì)象,利用流會(huì)話的形式描述應(yīng)答消息,并且解析請(qǐng)求內(nèi)容,將相應(yīng)的流媒體文件調(diào)入,利用RTP包來發(fā)送數(shù)據(jù)流。
基于SIP的監(jiān)控系統(tǒng)具有良好的靈活性與可擴(kuò)展性,能夠支持各種主流接入方式,利用RTSP協(xié)議,能夠?qū)?shí)時(shí)數(shù)據(jù)流進(jìn)行控制,一旦客戶端與服務(wù)器端建立起視頻流,可以將媒體流放在不同的服務(wù)器上,用戶訪問并發(fā)量的產(chǎn)生,滿足用戶的需求。
[1]呂雪花.流媒體視頻服務(wù)器系統(tǒng)[D].上海:復(fù)旦大學(xué),2007.
[2]沈波.SIP的分析和研究[J].數(shù)據(jù)通信,2001,4(8):56-58.
[3]茅炎菲,黃忠東.基于RTSP協(xié)議網(wǎng)絡(luò)監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(7):315-318.
[4]李校林,劉海波.RTP/RTCP,RTSP在無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2011,35(19):89-92.
[5]高建水,陳耀武,李嵐嵐.基于RTSP協(xié)議的視頻點(diǎn)播系統(tǒng)設(shè)計(jì)[J].電子器件,2006,29(4):161-164.
[6]孟懷軍,朱義勝.實(shí)時(shí)流協(xié)議RTSP的淺析[J].鹽城工學(xué)院學(xué)報(bào):自然科學(xué)版,2003,16(3):29-31.
[7]方群,王敏,吉逸.基于RTSP/RTP的媒體點(diǎn)播服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(1):10-12.
[8]楊豐瑞,蔣培健,張杰.基于SIP的無線視頻監(jiān)控系統(tǒng)信令的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2011,35(19):102-104.