楊豐瑞,蔣培健,張杰,
(1.重慶重郵信科(集團(tuán))股份有限公司,重慶 400065;2.重慶郵電大學(xué) 通信新技術(shù)應(yīng)用研究所,重慶 400065;3.重慶郵電大學(xué) 重慶信科設(shè)計(jì)有限公司,重慶 400065)
隨著技術(shù)的進(jìn)步和應(yīng)用的需求,視頻監(jiān)控已經(jīng)服務(wù)于各個(gè)行業(yè)。視頻監(jiān)控經(jīng)歷了模擬視頻監(jiān)控到數(shù)字視頻監(jiān)控,再到遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控幾個(gè)階段,它正朝著數(shù)字化、網(wǎng)絡(luò)化、智能化、多媒體化的方向發(fā)展[1]。本系統(tǒng)由服務(wù)端和客戶端兩部分組成,服務(wù)端采用達(dá)芬奇系列DM6467,它采用ARM+DSP雙核結(jié)構(gòu),采用嵌入式Linux操作系統(tǒng),能夠同時(shí)支持8路D1和1路高清視頻,主要完成視頻壓縮編碼,網(wǎng)絡(luò)傳輸,及相關(guān)控制等功能;客戶端基于Windows系統(tǒng),VC++開(kāi)發(fā),完成對(duì)視頻碼流的接收、管理、存儲(chǔ)、解碼和播放等功能。無(wú)線模塊采用TD-SCDMA制式的TDM330無(wú)線網(wǎng)卡。
目前,視頻監(jiān)控系統(tǒng)的主流技術(shù)標(biāo)準(zhǔn)有2個(gè):H.323和SIP。H.323的視頻系統(tǒng)目前已經(jīng)比較成熟,但由于其體系結(jié)構(gòu)龐大且較為復(fù)雜,限制了其在中小企業(yè)的部署。SIP以其簡(jiǎn)潔、靈活、易于實(shí)現(xiàn)和擴(kuò)展等特性而迅速得到業(yè)界的推崇。不同架構(gòu)的監(jiān)控系統(tǒng)在數(shù)據(jù)互聯(lián)和共享的時(shí)候會(huì)遇到控制信令不統(tǒng)一的問(wèn)題,不同信令實(shí)現(xiàn)的監(jiān)控端、客戶端與系統(tǒng)無(wú)法互聯(lián),有效的手段就是采用統(tǒng)一規(guī)范的信令控制協(xié)議。SIP協(xié)議就是這樣一種信令控制協(xié)議,只要監(jiān)控系統(tǒng)的各個(gè)單元都用它做信令控制,整個(gè)系統(tǒng)就能實(shí)現(xiàn)統(tǒng)一的信令交互[2]。在視頻監(jiān)控行業(yè),將SIP作為其系統(tǒng)的控制信令已經(jīng)慢慢成為共識(shí)。本系統(tǒng)就是用SIP與會(huì)話描述協(xié)議(SDP)、實(shí)時(shí)傳輸協(xié)議(RTP)配合,將視頻監(jiān)控服務(wù)器與客戶端監(jiān)控中心兩個(gè)部分互聯(lián)起來(lái)構(gòu)成了一個(gè)完整的通信系統(tǒng),能夠穿越局域網(wǎng)在廣域網(wǎng)范圍內(nèi)運(yùn)行。
SIP也稱為RFC3261,是一個(gè)應(yīng)用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個(gè)或多個(gè)參與者的會(huì)話。這些會(huì)話可以是Internet多媒體會(huì)議、IP電話或多媒體分發(fā)。會(huì)話的參與者可以通過(guò)組播(multicast)、網(wǎng)狀單播(unicast)或兩者的混合體進(jìn)行通信。SIP模仿HTTP1.1的風(fēng)格,重用HTTP編碼,所有消息基于文本,重用Internet尋址方案,使用RFC2369中定義的URI和URL格式[3]。SIP的另一個(gè)重要特點(diǎn)是會(huì)話雙方的會(huì)話類型可以使用會(huì)話描述協(xié)議(SDP)來(lái)實(shí)現(xiàn),只定義如何管理這些會(huì)話而不定義通信雙方的會(huì)話類型。可以將繁瑣的多媒體類型問(wèn)題從信令控制問(wèn)題中剝離出來(lái),從而大大簡(jiǎn)化了系統(tǒng)的開(kāi)發(fā)難度[4]。
SIP協(xié)議定義了6種基本信令:INVITE,ACK,BYE,OPTIONS,CANCEL,REGISTER。SIP 協(xié)議根據(jù)應(yīng)用的需要還定義了多種擴(kuò)展方法,視頻監(jiān)控聯(lián)網(wǎng)系統(tǒng)主要采用RFC3428定義的MESSAGE方法和RFC2976定義的INF0方法。同時(shí),在RFC3261中還定義了6類響應(yīng)狀態(tài)碼,從lxx到6xx。其含義表示臨時(shí)響應(yīng)、成功響應(yīng)、重定向、客戶端錯(cuò)誤、服務(wù)器錯(cuò)誤、全局錯(cuò)誤[5]。
SIP采用客戶機(jī)/服務(wù)器結(jié)構(gòu),由用戶代理(User A-gent,UA)和網(wǎng)絡(luò)服務(wù)器(Server)兩大部分組成。用戶代理包括用戶代理客戶端(UAC)和用戶代理服務(wù)器(UAS)。SIP服務(wù)器包括代理服務(wù)器、重定向服務(wù)器和注冊(cè)服務(wù)器。不同SIP服務(wù)器只是邏輯功能上的分類,而不是物理上的[6]。
本系統(tǒng)就是以視頻監(jiān)控服務(wù)器作為UAS,客戶端監(jiān)控中心作為UAC,而中間的SIP服務(wù)器完成接受用戶代理的注冊(cè)和信令的路由轉(zhuǎn)發(fā)。
本系統(tǒng)SIP模塊是基于開(kāi)源庫(kù)eXosip2/osip2上開(kāi)發(fā)的,筆者使用的是osip2的擴(kuò)展開(kāi)發(fā)庫(kù)eXosip2。開(kāi)發(fā)板DM6467 操作系統(tǒng)為:montavista linux2.6.10。
首先需要編譯安裝SIP協(xié)議棧,在目標(biāo)板交叉編譯協(xié)議棧,并對(duì)協(xié)議棧做測(cè)試。
其次需要實(shí)現(xiàn)SIP服務(wù)器,滿足簡(jiǎn)單的測(cè)試需要,本系統(tǒng)采用開(kāi)源的SIP服務(wù)器Kamailio(原名OpenSER),3.0版本是一個(gè)主要的發(fā)布版本,包含很多新功能和特性。安裝需要:Linux OS(this tutorial is applied on Ubuntu 10.04),Kamailio 3.0.x ,Asterisk 1.6.2.x,UnixODBC-,MySQL Server and Client(recommended 5.1+,min5.0),MySQL client library,ODBC MySQL connector。安裝后并做相關(guān)配置,創(chuàng)建合法用戶等,從而實(shí)現(xiàn)了SIP server。
系統(tǒng)由嵌入式系統(tǒng)服務(wù)器和Windows平臺(tái)客戶端組成。其中嵌入式系統(tǒng)服務(wù)器模塊充當(dāng)UAS角色,Windows客戶端充當(dāng)UAC角色。首先需要實(shí)現(xiàn)服務(wù)端(UAS)和客戶端(UAC)的注冊(cè)。UAS/UAC發(fā)送注冊(cè)消息,SIP server回復(fù)200OK,則注冊(cè)成功。注冊(cè)可以實(shí)現(xiàn)UA IP地址的隱藏,客戶端在無(wú)需知道服務(wù)端IP的情況下可以采用:SIP URL(sip:服務(wù)端的用戶名@SIP server IP)形式,利用SIP server地址服務(wù)來(lái)實(shí)現(xiàn)INVITE請(qǐng)求。由于系統(tǒng)采用TD無(wú)線模塊,每次開(kāi)發(fā)板啟動(dòng)后,便會(huì)自動(dòng)撥號(hào),撥號(hào)成功便返回一個(gè)IP,所以每次重啟后都得到一個(gè)隨機(jī)IP,通過(guò)前面提到的SIP服務(wù)器的定位功能便可以解決IP變動(dòng)問(wèn)題。
注冊(cè)成功后,客戶端(UAC)便可向服務(wù)端(UAS)發(fā)送INVITE請(qǐng)求,建立會(huì)話。而UAS收到INVITE,認(rèn)為其合法便向UAC發(fā)送RTP媒體數(shù)據(jù)流。呼叫會(huì)話建立過(guò)程如圖1所示。
圖1 SIP會(huì)話建立過(guò)程
客戶端UAC作為會(huì)話的發(fā)起者,在注冊(cè)后,首先向SIP服務(wù)器發(fā)送INVITE請(qǐng)求,SIP服務(wù)器會(huì)轉(zhuǎn)發(fā)INVITE,同時(shí)發(fā)送TRYING給UAC;UAS收到INVITE后發(fā)送TRYING,并發(fā)送 RINGING給SIP服務(wù)器,SIP服務(wù)器轉(zhuǎn)發(fā)RINGING給UAC;UAS確認(rèn)請(qǐng)求便發(fā)送200OK,SIP服務(wù)器轉(zhuǎn)發(fā)200OK,同時(shí)UAC直接回應(yīng)ACK,因?yàn)橹链薝AC已經(jīng)獲知UAS的IP地址信息。在會(huì)話建立過(guò)程中,UAC發(fā)送的INVITE消息會(huì)攜帶SDP消息,INVITE過(guò)程就完成了媒體協(xié)商。在UAS確定接受INVITE發(fā)送200OK,UAC回復(fù)ACK后,就可以建立媒體數(shù)據(jù)流。體現(xiàn)在服務(wù)端便是在發(fā)送200OK后,就根據(jù)INVITE過(guò)程中傳遞的SDP信息建立RTP媒體任務(wù)。在會(huì)話過(guò)程中,任何一方都可以發(fā)送BYE來(lái)結(jié)束會(huì)話。
通過(guò)SIP的INVITE方法能很好地完成實(shí)時(shí)視頻流監(jiān)控,控制流方面(包括報(bào)警、配置、PTZ控制等)可以采用SIP的其他方法來(lái)實(shí)現(xiàn)。本系統(tǒng)采用MESSAGE方法來(lái)實(shí)現(xiàn)PTZ控制,INFO方法實(shí)現(xiàn)視頻屬性的配置。
MESSAGE和INFO是SIP的擴(kuò)展方法,將其作為視頻監(jiān)控系統(tǒng)的控制流信令方法也被逐漸統(tǒng)一。MESSAGE和INFO的區(qū)別是:MESSAGE是會(huì)話之外的消息,傳遞及時(shí)消息;INFO的信令通路是呼叫建立之后建立的信令通路,可以是呼叫方和被呼叫方用戶代理之間的直接信令,也可以包括牽涉到呼叫建立和自己增加到初始INVITE信息記錄路由頭部的SIP代理服務(wù)器的信令通路。根據(jù)各自特點(diǎn),使用MESSAGE用于云鏡控制,信令流程如圖2所示[7];而視頻參數(shù)(制式、亮度、色度、對(duì)比度、飽和度)的改變需要在會(huì)話建立以后,在通話過(guò)程中,根據(jù)需要改變,所以適合用INFO方法實(shí)現(xiàn)(信令流程和MESSAGE類似)。
圖2 MESSAGE信令流程
UAS和UAC的SIP模塊具體處理流程大致相同,但是側(cè)重于處理不同SIP消息。下面以視頻服務(wù)端為例介紹SIP模塊的執(zhí)行流程。
UAS在啟動(dòng)后會(huì)進(jìn)行SIP初始化,指定監(jiān)聽(tīng)端口與協(xié)議類型,然后進(jìn)行注冊(cè)(可以實(shí)現(xiàn)自動(dòng)刷新),初始化完成后SIP處于事件檢測(cè)狀態(tài),循環(huán)監(jiān)聽(tīng)端口的網(wǎng)絡(luò)事件,根據(jù)UAC的事件類型做出相應(yīng)處理。SIP協(xié)議棧定義了不同的事件類型,如:EX0SIP_CALL_INVITE,EXOSIP_CALL_ACK,EX0SIP_CALL_CL0SED,EXOSIP_MESSAGE_NEW,EXOSIP_CALL_MESSAGE_NEW等,當(dāng)判斷為 EX0SIP_CALL_INVITE表示UAC發(fā)送INVITE,請(qǐng)求建立會(huì)話,UAS就發(fā)送180振鈴,回復(fù)200OK同時(shí)攜帶SDP消息,啟動(dòng)建立RTP建立過(guò)程;等UAC回應(yīng)EXOSIP_CALL_ACK,即可啟動(dòng)RTP發(fā)送線程;UAS收到EX0SIP_CALL_CL0SED表示UAC請(qǐng)求結(jié)束會(huì)話,UAS結(jié)束本次會(huì)話,退出RTP發(fā)送線程。而EXOSIP_MESSAGE_NEW是UAS收到UAC的對(duì)于云鏡的控制信息,調(diào)用yuntai()函數(shù)執(zhí)行對(duì)云鏡的控制,回復(fù)200OK;EXOSIP_CALL_MESSAGE_NEW則對(duì)應(yīng)于INFO方法,根據(jù)UAC傳遞過(guò)來(lái)的參數(shù)實(shí)時(shí)改變視頻屬性。程序流程如圖3所示。
PC客戶端監(jiān)控中心在Windows平臺(tái)下采用VC++開(kāi)發(fā),提供了良好的用戶界面,操作簡(jiǎn)單直觀。運(yùn)行后首先完成SIP的注冊(cè),注冊(cè)成功就可以呼叫監(jiān)控點(diǎn)(視頻監(jiān)控服務(wù)器),請(qǐng)求視頻連接。也可以點(diǎn)擊對(duì)應(yīng)圖標(biāo)通過(guò)SIP信令通道實(shí)現(xiàn)對(duì)云鏡的控制和實(shí)時(shí)視頻屬性的改變。在本地可以實(shí)現(xiàn)視頻數(shù)據(jù)的解碼播放、存儲(chǔ)、回放、呼叫結(jié)束等功能??蛻舳私缑嫒鐖D4所示。
圖3 SIP模塊執(zhí)行過(guò)程
圖4 客戶端界面
筆者介紹了基于SIP的無(wú)線視頻服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,以SIP作為信令控制協(xié)議使系統(tǒng)能夠更好地與其他平臺(tái)互聯(lián),實(shí)現(xiàn)數(shù)據(jù)共享。實(shí)現(xiàn)了對(duì)遠(yuǎn)程監(jiān)控點(diǎn)的訪問(wèn)控制和視頻流的播放,還可以在此基礎(chǔ)上更加完善功能,使視頻服務(wù)器更加智能。由于采用3G無(wú)線傳輸技術(shù),本系統(tǒng)可以用于一些特殊場(chǎng)合和移動(dòng)環(huán)境,更具競(jìng)爭(zhēng)力。
[1]凌慶華,石志強(qiáng),程偉明.基于SIP的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007,33(2):261-263.
[2]劉勇,陳延雄.SIP協(xié)議的研究及呼叫控制實(shí)現(xiàn)[J].微處理機(jī),2008,3:54-56.
[3]ROSENBERG J,SCHULZRINNE H.RFC3261 IETF,SIP:Session Initiation Protocol[S].2002.
[4]趙哲峰,張剛,謝克明,等.基于SIP的視頻監(jiān)控服務(wù)器設(shè)計(jì)[J].太原理工大學(xué)學(xué)報(bào),2009,40(4):337-340.
[5]何青林,陳朝武,盧煜,等.基于SI P的視頻監(jiān)控聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2009,33(5):116-117.
[6]萬(wàn)曉榆,張溢華,樊自甫.基于SIP的視頻會(huì)議系統(tǒng)視頻模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2009,33(8):99-102.
[7]ROSENBERG J,SCHULZRINNE H,HUITEMA C,et al.RFC3428 IETF,Session Initiation Protocol(SIP)Extension for Instant Messaging[S].2002.