劉艷
燕京理工學(xué)院,河北廊坊,065000
2020年12月,交通運輸部發(fā)布了最近一年的研究報告。該報告顯示,2020年約有6萬人喪命于各種各樣的交通事故。如事故發(fā)生后,能夠通過查看回放視頻了解事故發(fā)生的現(xiàn)場情景,那么調(diào)查方就可以獲取有力的辦案證據(jù),從而降低交通事故所造成的不良影響。而視頻監(jiān)控作為一種解決方案,可以監(jiān)控和管理被關(guān)注的對象,實現(xiàn)對重大場景的還原。
視頻監(jiān)控系統(tǒng)在發(fā)展歷史上經(jīng)歷了幾個階段,分別是:模擬視頻監(jiān)控階段、數(shù)字化視頻監(jiān)控階段和網(wǎng)絡(luò)視頻監(jiān)控階段,未來將向基于云計算和智慧化的視頻監(jiān)控系統(tǒng)的方向發(fā)展。
(1)模擬視頻監(jiān)控系統(tǒng)。該系統(tǒng)主要由監(jiān)視設(shè)備、錄像設(shè)備和攝像等模擬設(shè)備組成,同時,使用電纜或者光纜等介質(zhì)傳輸模擬信號。這種監(jiān)控系統(tǒng)具有以下缺點:不能實現(xiàn)與信息化系統(tǒng)進行數(shù)據(jù)交換、不良的可擴展性、有限的地理傳輸范圍,以及只能在監(jiān)控中心進行監(jiān)控。
(2)數(shù)字化監(jiān)控系統(tǒng)。隨著計算機整體性能的增強,同時視頻編碼和壓縮技術(shù)有了進一步發(fā)展,20世紀90年代中期出現(xiàn)了數(shù)字化監(jiān)控系統(tǒng)。這種系統(tǒng)能夠壓縮處理采集到的模擬信號,視頻圖像質(zhì)量得到顯著提升。但具有有限的傳輸范圍、高昂的建設(shè)成本以及不佳的可維護性等幾個缺點。
(3)網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。20世紀90年代末,網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)時代到來。它的優(yōu)勢有三點,分別是功能模塊強大、擴展性和維護性較強。但是,存在以下幾個缺點:視頻編碼方式使用動態(tài)圖像標準編碼(MPEG4),壓縮率和圖像質(zhì)量都有待于進一步增強;使用未加密的文件格式在通道上直接傳輸視頻流。
為解決上述視頻監(jiān)控系統(tǒng)的問題,本文提出一種基于客戶端和服務(wù)器模式的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。首先,為保障視頻信息在通道上傳輸是安全的,在視頻采集端,使用加密算法對視頻信息加密后,發(fā)送至特定通道;在視頻接收端,使用解密算法解密視頻信息,能夠保障傳輸過程的機密性和完整性。其次,改變視頻的編碼方式為H.264,一方面,可以增加數(shù)據(jù)壓縮率,減少視頻大??;另一方面,可以提高圖像的質(zhì)量。
文獻[1]提出了什么是網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的問題,對其特點及總體結(jié)構(gòu)進行分析,最后對網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)進行了設(shè)計,組成部分包括監(jiān)控服務(wù)器和多個客戶端。監(jiān)控服務(wù)器的職責是對整個系統(tǒng)的視頻數(shù)據(jù)進行處理和保存,客戶端由臺式機或筆記本電腦組成,在客戶端上可以安裝終端配套軟件,負責顯示服務(wù)器傳輸?shù)囊曨l圖像。
文獻[2]提出了一種視頻監(jiān)控系統(tǒng)的方案,在該設(shè)計方案中,系統(tǒng)的組成包括客戶端、中心服務(wù)器和分析單元等多個設(shè)備。關(guān)鍵技術(shù)包括Xvid、TCP/RTP和DirectShow等,同時,還包括自動視頻分析功能的關(guān)鍵技術(shù)和要求。
文獻[3]使用Eclipse開發(fā)工具,基于安卓平臺實現(xiàn)了手機端的視頻監(jiān)控系統(tǒng)。該文首先分析了系統(tǒng)開發(fā)的背景和意義。然后,給出整個系統(tǒng)的功能結(jié)構(gòu),包括服務(wù)端與客戶端應(yīng)該完成的功能模塊。在系統(tǒng)實現(xiàn)環(huán)節(jié),使用套接字技術(shù)在視頻服務(wù)器和多個客戶端之間進行數(shù)據(jù)傳輸。
文獻[4]首先介紹了系統(tǒng)的功能需求以及如何在應(yīng)用開發(fā)過程中實現(xiàn)這些需求。然后,使用Eclipse集成開發(fā)工具,基于安卓平臺設(shè)計了一個網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),該系統(tǒng)能夠訪問視頻服務(wù)器,并將接收到的視頻信號進行轉(zhuǎn)發(fā)。
文獻[5]設(shè)計了一種實時監(jiān)控系統(tǒng),介紹了系統(tǒng)的功能結(jié)構(gòu),闡述了關(guān)鍵數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計,并優(yōu)化了實施傳輸協(xié)議RTP的方案。該系統(tǒng)使用個人計算機作為服務(wù)端,使用移動端的手機或者PAD作為客戶端,測試系統(tǒng)在無線網(wǎng)絡(luò)環(huán)境和移動網(wǎng)絡(luò)下的運行情況。
文獻[6]介紹了視頻監(jiān)控系統(tǒng)的系統(tǒng)架構(gòu)的兩種方案,闡述了如何在多個安卓設(shè)備之間進行視頻監(jiān)控,并在WIFI的環(huán)境下對系統(tǒng)進行了測試。通過對報告的分析,可以得出兩種方案都能進行視頻監(jiān)控,然后對測試結(jié)果不同的原因進行了總結(jié)。
需求分析主要解決系統(tǒng)做什么,定義了系統(tǒng)所需要完成的全部功能[7]。需求分析人員經(jīng)過需求調(diào)研階段,使用文檔或者各種圖形固化項目所需要完成的功能、性能和其他非功能需求等,將用戶非形式化的需求描述轉(zhuǎn)化為各個功能模塊[8]。本節(jié)首先介紹了項目的開發(fā)背景,然后使用面向?qū)ο蟮姆绞竭M行系統(tǒng)的需求分析。
某些保密單位在運輸物資的過程中,管理員需要實時監(jiān)控運輸車的行駛軌跡和了解車內(nèi)的情況。為了保障視頻信息傳輸?shù)臋C密性和完整性,需要在視頻采集端加密采集的視頻信號,視頻收到后,解密收到的視頻信號;需要實時采集車輛的運行軌跡,運輸車出現(xiàn)交通事故時,可以定位車輛的地理位置,從而進行救援;需要采集運輸車內(nèi)的溫度、濕度和速度等數(shù)據(jù),以便及時了解車輛的運輸場景。下文根據(jù)項目背景進行功能需求分析。
UML(統(tǒng)一建模語言)是一種面向?qū)ο蟮慕UZ言,使用統(tǒng)一的符號進行建模,包括建立功能模型、對象模型和動態(tài)模型等[9]??梢栽谛枨蠓治鋈藛T、系統(tǒng)設(shè)計人員、開發(fā)人員和測試人員等之間對系統(tǒng)的功能需求建立統(tǒng)一的認識,方便整個團隊進行系統(tǒng)規(guī)劃和設(shè)計。通過使用統(tǒng)一建模語言進行系統(tǒng)的功能需求分析,系統(tǒng)需要實現(xiàn)以下功能,如表1所示。
表1 系統(tǒng)功能清單
(1)客戶端的界面的平均響應(yīng)時間控制在1秒以內(nèi);
(2)最大并發(fā)用戶數(shù)為200個終端用戶。
經(jīng)過需求分析階段,系統(tǒng)已經(jīng)確定了需要實現(xiàn)的功能需求清單。在系統(tǒng)設(shè)計階段,需要選擇特定的平臺、體系結(jié)構(gòu)、關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)和算法來設(shè)計已確定的需求列表[10]。因此,在以下的篇幅中將對本系統(tǒng)進行設(shè)計,包括對硬件和軟件平臺分別進行設(shè)計。
在網(wǎng)絡(luò)拓撲圖中(圖2),本系統(tǒng)主要由視頻采集設(shè)備、視頻接收設(shè)備、交換機、監(jiān)控中心、監(jiān)控終端和傳輸線路組成。在視頻采集端,視頻信號經(jīng)過源端的硬件設(shè)備數(shù)據(jù)采集后,為提高數(shù)據(jù)傳輸?shù)陌踩?,需要使用硬件模塊,通過加密算法將視頻信號進行加密,再使用特定的傳輸通道將加密后的視頻傳輸?shù)侥繕硕说慕邮赵O(shè)備。在視頻接收端,接收設(shè)備使用解密算法將視頻信號解密。同時,服務(wù)端通過應(yīng)用編程接口來讀取信號,并轉(zhuǎn)發(fā)給連接的客戶端。
圖2 硬件平臺網(wǎng)絡(luò)拓撲圖
在硬件平臺設(shè)計完成后,接下來需要設(shè)計整個系統(tǒng)的軟件平臺。本軟件系統(tǒng)平臺使用客戶端和服務(wù)器模式,這是一種在很多網(wǎng)絡(luò)編程的場景中經(jīng)常被使用的軟件結(jié)構(gòu)。在此結(jié)構(gòu)中,服務(wù)器負責管理數(shù)據(jù),執(zhí)行后臺服務(wù),而客戶端負責接收用戶的交互請求,并將請求傳輸給服務(wù)器進行處理,完成后將數(shù)據(jù)返回給用戶。
在接收端,接收硬件設(shè)備收到音視頻后,對音視頻信號使用解密算法進行解密,服務(wù)端通過視頻圖像的應(yīng)用編程接口來實時獲取視頻信息,并將圖像傳輸給所有連接的終端客戶。對于終端客戶,可以使用視頻播放器對接收到的視頻信息進行播放(圖3)。
圖3 軟件處理流程圖
在系統(tǒng)實現(xiàn)的階段,由開發(fā)人員通過編碼和測試過程,將前一階段系統(tǒng)設(shè)計的成果轉(zhuǎn)化成實際的系統(tǒng)。主要任務(wù)包括:搭建系統(tǒng)開發(fā)環(huán)境、建立系統(tǒng)平臺、進行數(shù)據(jù)庫的設(shè)計、編寫代碼、單元測試、驗收測試、試運行、系統(tǒng)上線和運維等。
C++是一種過程性和面向?qū)ο笙嘟Y(jié)合的開發(fā)語言,在服務(wù)器的編程過程中,主要使用的就是C++語言,它具有程序結(jié)構(gòu)清晰、可擴展性和可讀性良好以及運行效率高的優(yōu)點??蛻舳耸褂糜脩魯?shù)據(jù)報協(xié)議和服務(wù)器進行通信;而服務(wù)器軟件通過調(diào)用接收端硬件設(shè)備提供的應(yīng)用編程接口來采集視頻信號,然后將視頻圖像廣播至所連接的終端用戶(圖4)。
圖4 服務(wù)端軟件流程圖
客戶端的編程語言使用C#,使用該語言的原因有幾點:開發(fā)人員學(xué)習(xí)起來比較簡單,學(xué)習(xí)周期比較短,開發(fā)門檻不高;該語言具有面向?qū)ο蟮奶攸c,可讀性比較強,在編程風格上可以一種容易理解的方式實現(xiàn)需求;最后,能夠使用拖拉拽的方式來構(gòu)建系統(tǒng)界面??蛻舳私邮辗?wù)器傳輸?shù)囊曨l圖像并在本地界面進行展示,其流程如圖5所示。
圖5 客戶端軟件流程圖
其中,接收圖像并設(shè)置圖像的代碼如圖6所示。
圖6 系統(tǒng)實現(xiàn)的部分代碼
當用戶輸入登錄信息,包括用戶名和密碼后,系統(tǒng)進入視頻監(jiān)控界面。其中,左邊展現(xiàn)了所有安裝的攝像頭的列表,上面展現(xiàn)了功能菜單,包括音視頻監(jiān)控、產(chǎn)品簡介、數(shù)據(jù)展示和實時定位等。當用戶拖拽某攝像頭到監(jiān)控區(qū)域,可以查看實時監(jiān)控的界面。
本文提供了一種新穎的基于客戶端和服務(wù)器模式的視頻監(jiān)控系統(tǒng),和傳統(tǒng)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)相比,能夠解決視頻信號在數(shù)據(jù)傳輸過程中的安全性的問題。本項目經(jīng)過開發(fā)和測試階段,運行穩(wěn)定,已經(jīng)成功在客戶的生產(chǎn)環(huán)境中發(fā)揮作用,可以為類似的應(yīng)用場景的開發(fā)提供借鑒。下一步需要對客戶端視頻播放的算法進行優(yōu)化,達到在網(wǎng)絡(luò)環(huán)境一般的情況下,視頻播放更加流暢的效果。