陶 平,周江川
(1.重慶第二中級人民法院 數(shù)據(jù)處理中心,重慶 404020;2.四川兵工學報 編輯部,重慶 400050)
遠程視頻監(jiān)控系統(tǒng)在軍事、公安、銀行、工業(yè)生產(chǎn)、交通等領域,特別對于某些危險工況或者人們難于涉足的場所有重要的應用,通過現(xiàn)代化的視頻監(jiān)控,人們可以洞察秋毫,在社會生活的各個方面它已經(jīng)成為監(jiān)控領域最重要的有效監(jiān)測手段。該系統(tǒng)集計算機、通信、控制、網(wǎng)絡及多媒體等多種現(xiàn)代技術(shù)于一體,借助該系統(tǒng)可直接、實時地知曉各現(xiàn)場情況,監(jiān)控中心可根據(jù)當前情況直接對事態(tài)做出反應和處理。但是目前視頻監(jiān)控主要采用基于C/S 模式下的單播技術(shù),針對固定有限的網(wǎng)絡條件,存在適應性不強、管理和維護升級成本高、部署困難、跨平臺性差與容量擴展時負載重等問題;此外,由于視頻應用程序編程不規(guī)范、軟件可重用性差等問題導致軟件設計的復雜性,因此研究基于中間件的遠程視頻監(jiān)控系統(tǒng)有重要的工程現(xiàn)實意義[1-4]?;贘ava 多媒體技術(shù)開發(fā)框架、流媒體技術(shù)與CORBA 規(guī)范,本文以軟件復用為基礎,設計了一個遠程視頻監(jiān)控系統(tǒng),并借助MVC 設計模式實現(xiàn)了圖形用戶界面的實時更新[5-7]。
系統(tǒng)設計基于C/S 模式、中間件與流媒體等技術(shù),以下對其作粗略回顧。
1)Java 媒體框架JMF
JVM(Java Media Framework)上的Java 解釋器用于解釋Java 編譯器編譯后的程序,任何一臺機器只要配備了Java 解釋器,就可以運行這個程序,JVM 保證了數(shù)據(jù)類型的一致性,確保了Java 的平臺無關性。其中,JMF API 集成了對音頻、視頻的捕捉、處理和播放功能,應用JMF 開發(fā)包可簡化和加快Java 多媒體應用程序的開發(fā)。支持媒體流在意外接收媒體流時就產(chǎn)生音視頻,無需在本地存儲。目前,JMF 支持的多媒體數(shù)據(jù)的編碼格式類包括FormatChangeEvent(格式改變事件)類、AudioFormat(音頻格式)類與VideoFormat(視頻格式),支持的視頻格式類有JPEG、RGB、YUV、H.263、H.261等;音頻格式類有G.711、G.723 、GSM 、MP3、WAV、AU、MIDI 等。利用JMF 可實現(xiàn)時基媒體的傳輸與接收以及視頻數(shù)據(jù)的捕捉,借助提供的各種接口可方便地滿足多媒體編程的需要。JMF 提供了對原始視頻數(shù)據(jù)的壓縮標準H.263,針對原始視頻數(shù)據(jù)的壓縮本文可直接調(diào)用其封裝接口實現(xiàn);多媒體數(shù)據(jù)流在網(wǎng)絡中的實時傳輸借助RTP 包提供的RTPManager(RTP 管理器)等類給予實現(xiàn)。
2)流媒體技術(shù)
遠程視頻監(jiān)控系統(tǒng)是在Internet/Intranet 環(huán)境下運行的,所謂“流媒體”是指使用流式傳輸技術(shù)的連續(xù)媒體。流式傳輸有實時和順序流式傳輸(Real-time Streaming,Progressive Streaming)兩種方式。前者采用RTSP 實時協(xié)議或者流式傳輸媒體服務器,實現(xiàn)視頻的實時廣播,顯然該方式屬實時流式傳輸。后者采用HTTP 服務器,則通過順序流發(fā)送。
對于流式文件的執(zhí)行,當然也可以先完全下載到硬盤后在播放。其中實時傳輸協(xié)議與實時傳輸控制協(xié)議(Real-time Transport Protocol,RTP;RTP Control Protocol,RTCP)是在網(wǎng)絡環(huán)境下專門用于傳輸多媒體數(shù)據(jù)流的。前者是基于Internet 而針對多媒體數(shù)據(jù)流的一種應用層傳輸協(xié)議,既可用于單播通信也可用于組播通信,其體系結(jié)構(gòu)如圖1 所示。
圖1 TP 體系結(jié)構(gòu)
遠程視頻監(jiān)控系統(tǒng)采用RTP/RTCP 的優(yōu)勢在于它的適用性,既可用于單播通信也可用于組播通信,傳輸效率高,協(xié)議簡單,數(shù)據(jù)報文和控制報文各使用不同的端口,協(xié)議靈活;針對會話用戶信息的交互,可以制定會話控制的策略;RTP協(xié)議的自適應性,RTCP 控制報文發(fā)送周期的可調(diào)節(jié)性,使媒體傳輸質(zhì)量和數(shù)據(jù)傳輸速率可在較大范圍內(nèi)進行調(diào)節(jié)。
3)CORBA 技術(shù)
CORBA 是一種異構(gòu)平臺下語言無關的對象互操作模型,其核心是一套標準的語言、接口和協(xié)議,可自動進行對象注冊定位,遠程方法激活,多路徑請求、分流和結(jié)點錯誤處理機制等網(wǎng)絡規(guī)劃任務。其主要特點有:提供軟件總線機制,可實現(xiàn)應用程序在軟件總線上的即插即用;提供中間件服務,通過網(wǎng)絡互相通信;使用代理擴展了客戶/服務器的計算模型,客戶和服務器易于維護、修改;使用IDL 定義接口,CORBA 對象可以用任何一種CORBA 開發(fā)商所支持的語言;面向?qū)ο篌w系,保留對象方法的對外接口定義,軟件重用率高。在CORBA 系統(tǒng)中,正是由于中間件的引入,可以將所有應用都看成是對象及相關操作的集合,因此在網(wǎng)絡中應用對象的獲取與對象的位置以及對象所處的設備環(huán)境無關。CORBA 是一種3 層C/S 模式,兩者之間的通信通過中間代理方式進行,只關心功能上的實現(xiàn)。事實上,CORBA 只是一種中間件(Middleware)技術(shù),其結(jié)構(gòu)如圖2 所示。
圖2 CORBA 體系結(jié)構(gòu)
在圖2 中,ORB 對所有對象都是等價的,與是否是本地對象或者是遠程對象無關,因此可保證在異構(gòu)環(huán)境中對象的可互操作性與可移植性??傊诜植辑h(huán)境中ORB 負責對象透明地收發(fā)請求和響應。ORB 功能包括:對象的定位;編組和解組;屏蔽底層網(wǎng)絡協(xié)議;提供接口庫和其他API,是CORBA 實現(xiàn)動態(tài)調(diào)用的關鍵部分。其調(diào)用關系如圖3 所示。CORBA 對象服務(CORBA Object Services)的基本對象集合獨立于應用領域。應用程序?qū)ο鬄閼锰峁┓眨嚓P聯(lián)的接口有應用與領域接口((Application Interfaces;Domain Interfaces)。采用CORBA 技術(shù)時,需要使用接口定義語言(IDL)編寫相關的程序接口,IDL 文件聲明了可被遠程調(diào)用的方法,IDL 文件是整個CORBA 過程的關鍵,使用IDL 定義接口的客戶機程序屏蔽了實現(xiàn)的細節(jié)。
CORBA 定義了包括命名服務(CORBA Naming),事件服務,通知服務(Notification Service)等在內(nèi)的大量可重用服務,安全服務增加了CORBA 系統(tǒng)的安全性,并發(fā)控制服務允許多個客戶同時與資源進行相互作用,OTS 可以使CORBA對象執(zhí)行事務。
圖3 ORB 的調(diào)用
系統(tǒng)支撐框架如圖4 所示,基于WindowsXP 操作系統(tǒng),由Java 編程語言實現(xiàn)。在JMF 實現(xiàn)Java 編程語言與不同種類攝像頭接口兼容的同時,提供了實時傳輸?shù)牟僮鳈C制。CORBA 屏蔽了平臺差異性,可動態(tài)地適應分布式網(wǎng)絡視頻監(jiān)控。
圖4 系統(tǒng)支撐框架
中間件的設計是整個軟件結(jié)構(gòu)的基礎。該中間件屬可復用軟件范疇,其作用在于為應用軟件提供運行與開發(fā)環(huán)境,軟件結(jié)構(gòu)示意圖如圖5 所示。軟件主要由數(shù)據(jù)采集端VideoCapture、媒體服務器端VideoServer、客戶端VideoViewer等3 個應用程序組成。VideoCapture 職責在于完成多媒體信息的采集、壓縮、傳輸,顯示用戶信息,支持客戶端的訪問;監(jiān)控數(shù)據(jù)的歷史查詢的實現(xiàn)由VideoServer 負責,此外Video-Server 還用于客戶端向用戶提供實時預覽、記錄點播、歷史記錄的查詢和刪除等遠程控制服務。借助Java IDL 定義的3個應用程序接口對象可實現(xiàn)應用之間的通信,CORBA 功能提供了基于標準的互操作性。
圖5 中間件結(jié)構(gòu)示意圖
圖6 描述了實現(xiàn)監(jiān)控功能的JMF 框架,從上至下分別為數(shù)據(jù)采集VideoCapture、客戶端實現(xiàn)本地機播放的Video-Viewer 與媒體服務器端到客戶端的數(shù)據(jù)傳輸VideoController的工作框架。借助JMF 可實現(xiàn)視頻數(shù)據(jù)采集、處理、傳輸、存儲和播放等功能。
系統(tǒng)設計采用CORBA 為應用程序提供服務,使之能在屏蔽平臺差異的情況下通過網(wǎng)絡實現(xiàn)互相通信,圖7 所示為采用CORBA 接口對象對視頻數(shù)據(jù)采集、壓縮、傳輸、播放、存儲等功能的映射模型。
圖6 JMF 框架
圖7 接口對象映射模型
1)數(shù)據(jù)采集端實現(xiàn)
數(shù)據(jù)采集端由應用程序VideoCapture 和VideoServer 構(gòu)成,負責完成客戶端連接請求的監(jiān)聽服務、視頻圖像的捕獲與傳輸服務以及視頻監(jiān)控數(shù)據(jù)存儲和查詢服務的實現(xiàn)。
2)媒體服務器端實現(xiàn)
Registration Object 和MediaStore object 接口對象設置在媒體服務器端,分別負責存儲從采集端發(fā)送過來的視頻數(shù)據(jù)到后臺數(shù)據(jù)庫以及將其傳輸至客戶端,并顯示相關的數(shù)據(jù)信息(如采集端與客戶端信息,后臺的視頻文件信息等)。
3)客戶端
客戶端應用程序有3 個應用對象,分別是VideoController 有VideoCallback、ControllerCallback 和MediaArchive-Callback。其中:VideoCallback 功能在于通知客戶端有新的視頻流到達指定位置和存儲新的視頻文件到后臺數(shù)據(jù)庫,為視頻數(shù)據(jù)采集端的應用程序VideoCapture 提供服務;對新的視頻文件進行存儲和刪除由MediaArchiveCallback 負責實現(xiàn)。3 個應用對象可根據(jù)不同的觸發(fā)事件分別實現(xiàn)各自的功能。在監(jiān)控系統(tǒng)實現(xiàn)中,為解決臺數(shù)據(jù)庫內(nèi)容發(fā)生變化時,將MVC(Model-View-Controller)引入設計模式可動態(tài)地更新媒體媒體服務器端和客戶端的圖形用戶界面。其中,模型(Model)用于封裝底層的數(shù)據(jù)源和對數(shù)據(jù)源的操作,借助控制器可保持視圖與模型的一致性;控制器(Controller)用于處理接收視頻數(shù)據(jù)和從后臺數(shù)據(jù)庫中刪除數(shù)據(jù),因此當存儲的視頻數(shù)據(jù)有所變化時,可自動更新其圖形用戶界面;視圖(View)從模型獲取顯示信息,可以多種形式或視圖展示給用戶。
上述討論了CORBA 規(guī)范、流媒體與Java 多媒體開發(fā)框架,針對遠程視頻監(jiān)控對實時性要求高,基于軟件復用技術(shù),設計了一個遠程視頻監(jiān)控系統(tǒng),借助MVC 設計模式實現(xiàn)了媒體服務器端和客戶端圖形用戶界面的實時更新。測試表明在10/100M 局域網(wǎng)上可取得較好的效果。
[1]Lopes R J,Lindsay A T,David H. The utility of MPEG-7 systems in audio-visual applications with multiple streams[J]. IEEE Transactions on Circuits and Systems for Video Technology,2003,13(1):16-25.
[2]褚晶輝,邱潤東,宋垣,等.視頻監(jiān)控視頻流解碼播放的速率控制與優(yōu)化[J]. 計算機工程與應用,2012(11):18.
[3]李虎,林中. 遠程網(wǎng)絡視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].數(shù)據(jù)通信,2004(6):51-53.
[4]李思,李麗. 基于RTP/ RTCP 的網(wǎng)絡視頻監(jiān)控系統(tǒng)[J].沿海企業(yè)與科技,2008(12):16-18.
[5]陳曉江,房鼎益,劉煒,等.基于CORBA 的媒體流構(gòu)件模型[J].西北大學學報: 自然科學版,2005,35(2):151-154.
[6]汪蕓,謝俊清,沈卓煒,等.實時CORBA 技術(shù)綜述[J].東南大學學報:自然科學版,2002,32(3):311-316.
[7]何宜軍.MVC 設計模式在Java 中的應用[J].邵陽學院學報:自然科學版,2006,3(2):64-66.