徐 潔,張海天
(1.江蘇省生態(tài)環(huán)境監(jiān)控中心,江蘇南京 210036;2.南京云創(chuàng)存儲科技有限公司,江蘇南京 210014)
改革開放以來,環(huán)境保護部門針對環(huán)境保護開展了一系列措施,然而在城市經(jīng)濟持續(xù)快速增長和城市化進程不斷加快的情況下,部分企業(yè)投機取巧、打擦邊球,更有甚者只是在環(huán)保部門進行企業(yè)檢查時才搞一些表面工作,給環(huán)境監(jiān)管帶來困難。目前絕大部分環(huán)保監(jiān)測系統(tǒng)僅僅實現(xiàn)了數(shù)據(jù)監(jiān)測功能,而沒有實現(xiàn)圖像監(jiān)控功能,無法直觀的看到排污點的實際景像。江蘇省生態(tài)環(huán)境監(jiān)控系統(tǒng),不僅能看到各類監(jiān)測數(shù)據(jù),同時能看到實時的圖像。它的視頻監(jiān)控系統(tǒng),是以環(huán)保部門為中心,相關(guān)排污企業(yè)為支點的基于云計算的大規(guī)模污染源視頻監(jiān)控系統(tǒng)。
視頻監(jiān)控技術(shù)正在不斷地向前發(fā)展,用戶對于視頻監(jiān)控產(chǎn)品的要求也在不斷提高,要有著更高清的畫面,更完善的功能,更穩(wěn)定的性能,更豐富的終端等[1]。要實現(xiàn)大規(guī)模的高清視頻監(jiān)控,就必須從多個環(huán)節(jié)進行全面考慮,如:攝像機采集視頻信號的碼率、視頻圖像的編解碼、視頻傳輸?shù)木W(wǎng)絡(luò)、錄像文件的存儲等[2]。但這樣一來,又給整個系統(tǒng)帶來了一系列新的問題,如:存儲空間需求量大、傳輸帶寬不足、服務(wù)器性能指標壓力、系統(tǒng)可靠性要求驟增等。
傳統(tǒng)視頻監(jiān)控的架構(gòu)如圖1所示,通常采用大量“固件”的形式組合成平臺。從攝像機、到硬盤錄像機、網(wǎng)絡(luò)硬盤錄像機、視頻切換矩陣、編碼器、解碼器、轉(zhuǎn)碼器、數(shù)字化綜合平臺、操作切換平臺、數(shù)字業(yè)務(wù)平臺、流媒體服務(wù)器等,最后輸出到PC機、大屏等終端設(shè)備[3]
隨著數(shù)據(jù)量的不斷增長,業(yè)務(wù)場景的不斷變化,傳統(tǒng)架構(gòu)已經(jīng)愈發(fā)不能滿足現(xiàn)有的需求[4],因此,如何將新的技術(shù)融入到監(jiān)控系統(tǒng)中,從而形成一種全新的模式,逐步成為了監(jiān)控行業(yè)的熱門話題。
云計算的概念最早是由Google公司提出的[5],到目前為止,仍然沒有明確的標準化定義,其概念描述如下:云計算是分布式計算技術(shù)的一種,主要通過網(wǎng)絡(luò)將大量服務(wù)器連接在一起,并且將計算量很大的處理任務(wù)自動分為許多個較小的子任務(wù),再交由這些服務(wù)器所組成的龐大系統(tǒng)進行處理,并將結(jié)果返回給用戶[6]。
由此,可以將云計算應(yīng)用于視頻監(jiān)控,通過采用標準服務(wù)器硬件加軟件的形式,組建成統(tǒng)一的服務(wù)器集群,共同對外提供視頻監(jiān)控服務(wù)[7]。將云計算的概念和方法引入視頻監(jiān)控,充分利用“云”的計算能力和存儲能力,無論是從系統(tǒng)的架構(gòu)方面,還是可靠性、通用性、兼容性和可擴展性等方面都有著巨大的提升[8]。
圖1 傳統(tǒng)監(jiān)控系統(tǒng)架構(gòu)圖
云視頻(Cloud Video,cVideo)監(jiān)控平臺,是在服務(wù)器集群上部署的基于云架構(gòu)的視頻監(jiān)控軟件,其核心內(nèi)容是將海量的前端視頻信號統(tǒng)一接入,并進行實時的處理和分析。系統(tǒng)基于云計算的模式,采取海量分布式云調(diào)度架構(gòu),以集群的形式共同對外服務(wù),通過合理的云調(diào)度,實現(xiàn)諸如視頻云端轉(zhuǎn)碼、內(nèi)容識別、智能分析等需求。最終將處理好的視頻圖像以標準流媒體的格式進行輸出,推送給用戶,并提供標準的接口,以供上層應(yīng)用的調(diào)用。
cVideo監(jiān)控平臺主要由6個系統(tǒng)模塊組成,分別是:接入模塊、處理模塊、存儲模塊、流媒體模塊、中心調(diào)度模塊和客戶端模塊,如圖2所示。
圖2 系統(tǒng)架構(gòu)圖
接入模塊負責實現(xiàn)各種異構(gòu)前端設(shè)備的接入,同時,對上層應(yīng)用提供統(tǒng)一的調(diào)用接口。前端設(shè)備主要包括:模擬、網(wǎng)絡(luò)攝像機、硬盤錄像機、已有第三方平臺等??梢詫⒔尤敕?wù)器模塊中交互的內(nèi)容分為數(shù)據(jù)流和信令流,數(shù)據(jù)流向如圖3所示。
圖3 接入模塊數(shù)據(jù)流示意圖
接入模塊所處的位置是介于中心調(diào)度模塊和前端設(shè)備之間,起到了一個“中間件”的作用,主要用途類似于“語言翻譯”[9],主要負責將cVideo平臺內(nèi)部的控制信息,轉(zhuǎn)化為對應(yīng)前端設(shè)備可以識別的控制信息,獲取響應(yīng)后再轉(zhuǎn)變?yōu)槠脚_內(nèi)部信息。接入模塊珠寶涉及到的內(nèi)容有:前端設(shè)備狀態(tài)監(jiān)測、攝像機云臺控制、前端平臺通信等,從而實現(xiàn)cVideo平臺對前端設(shè)備的透明接入。
接入模塊運行的環(huán)境是Windows操作系統(tǒng),用C語言編寫,程序的流程圖如圖4所示。
當接入模塊啟動后,首先向中心模塊進行注冊,如果連續(xù)3次訪問不成功則認為注冊失敗,程序退出。如果注冊成功,則程序正式進入工作模式。為了保證系統(tǒng)運行的穩(wěn)定,并且可以捕獲系統(tǒng)中斷響應(yīng)不會造成直接終止而導致不必要的問題,接入模塊將消息(Socket)監(jiān)聽[10]和處理任務(wù)放入子進程,而父進程則負責等待和監(jiān)聽系統(tǒng)中斷信息。子系統(tǒng)每捕獲到一個中心模塊發(fā)來的消息,則新建一個子線程與之對應(yīng)處理,實現(xiàn)并發(fā)的操作與控制,根據(jù)Socket類型中定義的前端設(shè)備信息,調(diào)用相應(yīng)的SDK訪問該前端設(shè)備,并將返回的信息封裝成平臺內(nèi)部定義的信息反饋給中心端。
圖4 接入服務(wù)器流程圖
存儲模塊包括存儲客戶端軟件和存儲服務(wù)器集群兩部分。存儲客戶端軟件部署在處理服務(wù)器集群上,由中心服務(wù)器統(tǒng)一調(diào)度,按需求將視頻流按固定的時長保持為文件,并通過存儲客戶端寫入存儲集群;存儲服務(wù)器集群為整個系統(tǒng)提供海量的存儲空間,處理服務(wù)器和流媒體服務(wù)器通過掛載存儲客戶端,即可訪問該存儲空間,從而完成視頻存儲、處理、回放等任務(wù),圖5為存儲模塊的示意圖。
處理模塊由中心云調(diào)度進行統(tǒng)一綜合管理,主要負責的工作是從接入分析,到數(shù)據(jù)處理,再到結(jié)果分發(fā)這3個部分,從而完成對接入視頻的各項處理任務(wù),包括從接入到處理再到存儲及回看等一系列處理任務(wù)的分發(fā)工作。
圖5 存儲模塊示意圖
(1)標準RTSP協(xié)議的視頻流接入:根據(jù)標準RTSP協(xié)議,獲取前端設(shè)備視頻流,同時,實時轉(zhuǎn)發(fā)到平臺內(nèi)的流媒體服務(wù)器上,以供后續(xù)轉(zhuǎn)碼、識別、存儲等部分的使用。
(2)非標準的視頻流接入:使用廠商提供的協(xié)議接口獲取視頻流,并重新封裝成標準RTSP視頻流,然后通過流媒體服務(wù)器實時轉(zhuǎn)發(fā)。
(3)內(nèi)容識別:智能的內(nèi)容識別需要消耗大量的CPU和內(nèi)存資源,而通過云計算的分布式的特點和強大的計算性能,可以使傳統(tǒng)架構(gòu)下難以實現(xiàn)的大規(guī)模識別成為可能。
(4)云端轉(zhuǎn)碼:將視頻轉(zhuǎn)碼放到云端進行處理,從而實現(xiàn)整個系統(tǒng)內(nèi)的實時視頻轉(zhuǎn)碼,以滿足不同用戶對不同終端,不同分辨率,不同碼流的需求。
(5)視頻數(shù)據(jù)存儲錄像:將處理轉(zhuǎn)換后的標準視頻流進行實時存儲,按時間段保存為視頻文件并保存到存儲服務(wù)器上,以提供日后回調(diào)查看。
中心調(diào)度模塊主要負責整合、調(diào)用系統(tǒng)內(nèi)的其他各個模塊,用戶通過在終端發(fā)起請求,請求被提交到中心服務(wù)器,中心服務(wù)器調(diào)度管理系統(tǒng)根據(jù)具體的請求調(diào)度系統(tǒng)內(nèi)相應(yīng)模塊的資源對其進行處理,最后將處理好的結(jié)果返回給用戶顯示查看。同時,中心模塊還對上層應(yīng)用提供了統(tǒng)一接口,大大提高了擴展性和伸縮性,更方便其他第三方平臺的對接。例如:用戶使用實時監(jiān)控功能,前臺操作后,后臺通過調(diào)用調(diào)度命令去執(zhí)行視頻轉(zhuǎn)碼任務(wù),任務(wù)結(jié)束后中心服務(wù)器把得到的視頻流的地址返回給客戶端瀏覽器控件,播放器控件則顯示對應(yīng)的視頻。
中心調(diào)度模塊主要功能和任務(wù)包括了實時監(jiān)控、服務(wù)器狀態(tài)監(jiān)控、設(shè)備狀態(tài)監(jiān)控、錄像回調(diào)、設(shè)備管理、用戶管理等,對應(yīng)的流程如圖6所示。
整個中心云調(diào)度模塊啟動后,會保持監(jiān)聽Socket消息,根據(jù)不同用戶終端發(fā)來的不同請求,進行相應(yīng)的控制和調(diào)度,并把集群處理后的結(jié)果,或者視頻流地址反饋給對應(yīng)的用戶終端,給出相應(yīng)的提示,并記錄日志,以后后期查備。
圖6 中心調(diào)度任務(wù)流程圖
流媒體服務(wù)器作為流媒體應(yīng)用的核心系統(tǒng),是視頻監(jiān)控系統(tǒng)向用戶提供視頻服務(wù)的關(guān)鍵模塊。其主要功能是提供RTSP/HTTP流媒體服務(wù),其中RTSP提供實時視頻流及錄像回調(diào)視頻流,HTTP則只提供錄像回調(diào)視頻流。
流媒體模塊支持多臺流媒體服務(wù)器集群化部署,對外提供負載均衡的標準RTSP流媒體并發(fā)推流服務(wù),用戶根據(jù)相應(yīng)的流媒體RTSP地址,即可實時地獲取系統(tǒng)處理完后的實時視頻數(shù)據(jù)和存儲的歷史視頻數(shù)據(jù),以供監(jiān)控和遠程訪問。模塊輸出為標準RTSP視頻流,通過構(gòu)建流媒體服務(wù)器集群和負載均衡機制,使得多臺流媒體服務(wù)器可以共同對外提供服務(wù),支持高并發(fā)訪問。
同時,流媒體服務(wù)器也可以提供對歷史視頻數(shù)據(jù)的流化推送。存儲系統(tǒng)將歷史視頻數(shù)據(jù)保存在cStor存儲集群上,將cStor掛載到流媒體服務(wù)器上,流媒體服務(wù)器就可以像訪問本地文件一樣訪問到cStor上的歷史視頻數(shù)據(jù)。當用戶需要查看歷史錄像時,流媒體服務(wù)器可以將這些視頻文件流化,通過RTSP或者HTTP協(xié)議推送給用戶,實現(xiàn)用戶查看遠程歷史錄像的需求。
客戶端模塊包括PC終端(支持Linux,Windows,MacOS等主流操作系統(tǒng))、平板電腦終端(支持iOS,Android,Windows等操作系統(tǒng))、智能手持終端(支持iOS,Android等操作系統(tǒng))和監(jiān)控大屏終端??蛻舳说墓δ苤饕桥c用戶交互,對不同的操作進行響應(yīng),如:顯示視頻設(shè)備列表、播放視頻流、與用戶交互云臺控制、多路視頻播放等。
江蘇省生態(tài)環(huán)境監(jiān)控系統(tǒng)的固定風險源視頻監(jiān)控系統(tǒng),總共使用15臺服務(wù)器構(gòu)建,其中,用于中心調(diào)度模塊2臺,接入模塊2臺,處理模塊3臺,流媒體模塊3臺,同時使用了云存儲設(shè)備,以共享掛載盤符的方式,在每臺服務(wù)器相應(yīng)位置掛載了云存儲空間。接入模塊服務(wù)器使用Windows 2008 Server系統(tǒng),其他服務(wù)器使用Ubuntu 12.04 Server版。接入的前端設(shè)備為江蘇省昆山市千燈鎮(zhèn)工業(yè)園區(qū)內(nèi)一些工廠的50個高清攝像頭。
cVideo監(jiān)控平臺實現(xiàn)對這50路設(shè)備的透明接入,PC機監(jiān)控界面如圖7所示。
圖7 PC監(jiān)控界面
同時,為了支持多終端的監(jiān)控,我們也制作了移動終端的客戶端,以IPad為例,如圖8所示。
圖8 IPad監(jiān)控界面
在半年的試運行期間,監(jiān)控系統(tǒng)的各項服務(wù)運行正常,安全可靠,同時,中心任務(wù)調(diào)度分配均勻,其服務(wù)器的負載非常之低,也就意味著計算資源的余額十分充足,遠未達到上限。
視頻監(jiān)控的發(fā)展速度極快,人們的需求逐步從“看得見”向“看得清”再到“看明白”過度[11],傳統(tǒng)的監(jiān)控模式已然不適應(yīng)需求的發(fā)展。而隨著云計算技術(shù)的不斷發(fā)展,將云的理念和技術(shù)引入視頻監(jiān)控行業(yè),作為一種全新的解決方案,也愈發(fā)成為了可能。較之傳統(tǒng)監(jiān)控模式,云模式下的視頻監(jiān)控有著無法比擬的優(yōu)勢:統(tǒng)一的架構(gòu)、異構(gòu)資源的整合、優(yōu)異的可擴展性、云轉(zhuǎn)碼和智能分析的靈活性等等?!?831”平臺的基于云計算的大規(guī)模污染源高清視頻監(jiān)測系統(tǒng),正在為江蘇的環(huán)保事業(yè)貢獻自己的一份力量。
[1]原振升,袁華,羅曉奔.視頻監(jiān)控系統(tǒng)中的視頻顯示布局設(shè)計和實現(xiàn)[J].計算機研究與發(fā)展,2005(2):68-77.
[2]LEE Yachun,LIAO Ju,CHENG Huapu,LEE Weisong.A cloud computing framework of free view point real-time monitor system working on mobile devices[J].International Symposium on Intelligent Signal Processing and Communication Systems.2010(2):148-162.
[3]趙涵萍.虛擬存儲在數(shù)字化視頻監(jiān)控系統(tǒng)中的應(yīng)用研究[D].杭州:浙江大學,2007.
[4]許志聞.流媒體網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計和實現(xiàn)[J].儀器儀表學報,2004(3):304-307.
[5]劉鵬.云計算[M].2版.北京:電子工業(yè)出版社,2011.
[6]FOSTER I.,KESSELMAN C,TUECKE S.The Anatomy of the Grid:Enabling Scalable Virtual Organizations[J].International Journal of High Performance Computing Applications,2001(3):200-222.
[7]杜百川.下一代網(wǎng)絡(luò)服務(wù)核心—云計算[R].北京:IBTC2010論壇,2010:174-192.
[8]MICHAEL A,ARMANDO F,REAN G.Above the Clouds:A Berkeley View of Cloud Computing[M].UC:Berkeley,2009.
[9]MACHE C.Cloud Computing:An Overview[J].ACM Queue,2009(5):3-14.
[10]JEREMIAH.windows平臺下vlc編譯之十:vlc-1.0.0的編譯[DB/OL].http://jeremiah.blog.51cto.com/539865/178696,2009.
[11]張曉凱.淺談視頻編解碼技術(shù)[DB/OL].http://wenku.baidu.com/view/bf3d32a3b0717fd5360cdcc3.html,2009.