本發(fā)明涉及視頻數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下的視頻監(jiān)控方法及系統(tǒng)。
背景技術(shù):
近20多年來(lái),視頻監(jiān)控系統(tǒng)經(jīng)歷了從第一代百分之百的模擬系統(tǒng)(VCR),到第二代部分?jǐn)?shù)字化的系統(tǒng)(DVR/NVR),再到第三代完全數(shù)字化的系統(tǒng)(網(wǎng)絡(luò)攝像機(jī)和視頻服務(wù)器)三個(gè)階段的發(fā)展演變。在這一過(guò)程中,視頻監(jiān)控系統(tǒng)與設(shè)備雖然在功能和性能上得到了極大的提高,但是仍然受到了一些固有因素的限制,其中既包含人類作為監(jiān)控者自身在生理上的弱點(diǎn),也包含視頻監(jiān)控系統(tǒng)配置和以及視頻監(jiān)控設(shè)備在功能和性能上的局限性。這些限制因素使各類視頻監(jiān)控系統(tǒng)均或多或少的存在報(bào)警精確度差、誤報(bào)和漏報(bào)現(xiàn)象多、報(bào)警響應(yīng)時(shí)間長(zhǎng)、錄像數(shù)據(jù)分析困難等缺陷,從而導(dǎo)致整個(gè)系統(tǒng)在安全性和實(shí)用性的降低。傳統(tǒng)的識(shí)別系統(tǒng)主要是分為三種:基于視覺(jué)技術(shù)的識(shí)別系統(tǒng)、基于傳感器的識(shí)別系統(tǒng)、基于特殊硬件設(shè)備的識(shí)別系統(tǒng)?;谝曈X(jué)技術(shù)的識(shí)別系統(tǒng)主要受到有無(wú)光照和光照強(qiáng)度的限制;基于傳感器的識(shí)別系統(tǒng)需要部署或者攜帶傳感器,造價(jià)大,而且不方便;基于特殊硬件設(shè)備的識(shí)別系統(tǒng)需要部署特殊硬件,很難得到推廣?;赪iFi設(shè)備無(wú)關(guān)的識(shí)別系統(tǒng)克服了傳統(tǒng)的系統(tǒng)的限制,只需要部署一個(gè)現(xiàn)有的商業(yè)WiFi設(shè)備作為AP,以及一臺(tái)WiFi接收設(shè)備。現(xiàn)在的WiFi設(shè)備到處可見(jiàn),包括手機(jī)、智能電視、路由器等等家用設(shè)備,都可以作為系統(tǒng)的一部分,為系統(tǒng)的推廣提供了可能性。
城市軌道交通視頻監(jiān)控系統(tǒng)是行車組織和客運(yùn)組織重要的輔助設(shè)備,對(duì)此,研究了不少的視頻監(jiān)控系統(tǒng)或解決方案,當(dāng)前攝像頭廠商提供的例程往往采用直連模式,即將播放屏幕和攝像頭進(jìn)行關(guān)聯(lián),直接播放視頻。但是這種方式極易造成信息流的冗余。
技術(shù)實(shí)現(xiàn)要素:
為了應(yīng)對(duì)大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下對(duì)視頻監(jiān)控性能影響的問(wèn)題,本發(fā)明根據(jù)訂閱/分發(fā)模式形成的視頻分發(fā)矩陣及基于動(dòng)態(tài)測(cè)量的負(fù)載均衡技術(shù),從而解決了大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)。
大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下的視頻監(jiān)控方法,包括以下步驟:第一步、訂閱流程;
S11、客戶端向所有服務(wù)器發(fā)布訂閱消息;
S12、各服務(wù)器將訂閱消息和相關(guān)參數(shù)發(fā)給負(fù)載測(cè)量器;
S13、負(fù)載測(cè)量器將所述訂閱消息和所述相關(guān)參數(shù)轉(zhuǎn)發(fā)給負(fù)載均衡器,由所述負(fù)載均衡器
計(jì)算負(fù)載情況,決定本次接受訂閱的是哪一個(gè)服務(wù)器;
S14、負(fù)載均衡器把該決定發(fā)給調(diào)度發(fā)放器,所述調(diào)度發(fā)放棄決定發(fā)給指定的服務(wù)器;
S15、所述指定的服務(wù)器在全局信息中添加客戶端,并向工控機(jī)發(fā)送登錄并激活攝像頭的
消息;
S16、所述工控機(jī)收到攝像頭的視頻信息,保存到實(shí)時(shí)數(shù)據(jù)庫(kù)中;
第二步、視頻發(fā)布流程;
S21、工控機(jī)登錄所述攝像頭并接收視頻數(shù)據(jù),將視頻數(shù)據(jù)轉(zhuǎn)發(fā)給所述指定的服務(wù)器;
S22、所述指定的服務(wù)器根據(jù)全局信息的客戶端訂閱情況,把視頻數(shù)據(jù)拷貝成n份,分別轉(zhuǎn)發(fā)給n個(gè)客戶端。
所述相關(guān)參數(shù)包括CPU利用率、內(nèi)存大小及利用率、磁盤I/O速度和網(wǎng)絡(luò)吞吐量。
本發(fā)明還提供一種大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下的視頻監(jiān)控系統(tǒng),包括視頻采集單元,其中又包括工控機(jī)和至少一個(gè)攝像頭,所述攝像頭用于拍攝視頻,所述工控機(jī)用于采集視頻數(shù)據(jù),轉(zhuǎn)發(fā)數(shù)據(jù)到服務(wù)器;監(jiān)控中心,包括依次相連的服務(wù)器、負(fù)載測(cè)量器、負(fù)載均衡器、調(diào)度發(fā)放器,所述負(fù)載測(cè)量器獲取服務(wù)器的相關(guān)參數(shù),并連同客戶端的訂閱消息轉(zhuǎn)發(fā)給所述負(fù)載均衡器;所述負(fù)載均衡器計(jì)算負(fù)載情況,決定本次接受訂閱的是哪一個(gè)服務(wù)器;所述調(diào)度發(fā)放器決定發(fā)給指定的服務(wù)器;監(jiān)控中心還包括實(shí)時(shí)數(shù)據(jù)庫(kù),負(fù)責(zé)保存視頻分發(fā)矩陣,以便各個(gè)服務(wù)器獲得相同的視頻分發(fā)矩陣;客戶端,用于向所述服務(wù)器發(fā)送請(qǐng)求和訂閱消息,接收視頻數(shù)據(jù)。
負(fù)載均衡技術(shù)在多臺(tái)服務(wù)器工作的條件下,根據(jù)服務(wù)器的性能和負(fù)載等因素,提出了一種基于動(dòng)態(tài)測(cè)量的負(fù)載均衡技術(shù),負(fù)載均衡技術(shù)可以有效地降低響應(yīng)時(shí)間,提高系統(tǒng)吞吐量,并均衡服務(wù)器的負(fù)載,取得了良好的效果。本發(fā)明中工控機(jī)參與轉(zhuǎn)發(fā),進(jìn)一步減輕服務(wù)器的負(fù)載。服務(wù)器之間互為備份,減少單點(diǎn)故障的發(fā)生,提供更高的可靠性。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下的車站視頻監(jiān)控系統(tǒng)拓?fù)鋱D;
圖2為實(shí)施例大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下的車站視頻監(jiān)控方法中訂閱/取消訂閱算法流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,為了保證整個(gè)系統(tǒng)的高性能運(yùn)行,系統(tǒng)部署多臺(tái)服務(wù)器,可以形成從視頻攝像頭到客戶端的多條路徑。基于此,對(duì)數(shù)據(jù)的傳輸進(jìn)行了負(fù)載均衡的研究。負(fù)載均衡是網(wǎng)絡(luò)中用來(lái)在多個(gè)網(wǎng)絡(luò)鏈路或者服務(wù)器之間劃分負(fù)載的一項(xiàng)技術(shù)。
首先,需將原有的二級(jí)訂閱模型修改為三級(jí)訂閱模型,即服務(wù)器接收客戶端的訂閱后并不是自己進(jìn)行攝像頭的登錄,而是把這個(gè)任務(wù)傳遞給攝像頭所在的車站工控機(jī),由工控機(jī)進(jìn)行攝像頭的登錄和數(shù)據(jù)的采集,轉(zhuǎn)發(fā)給某個(gè)服務(wù)器,再由服務(wù)器分發(fā)給客戶端。
負(fù)載均衡架構(gòu)主要包括:負(fù)載控制器(包括測(cè)量器、均衡器、調(diào)度規(guī)則發(fā)放器等)、若干服務(wù)器、車站端的工控機(jī)以及客戶端。
多臺(tái)服務(wù)器和工控機(jī)相連,并且作為負(fù)載均衡的實(shí)際執(zhí)行者進(jìn)行視頻數(shù)據(jù)的分發(fā),多臺(tái)服務(wù)器一起提供相同的服務(wù),可以在增加計(jì)算能力的同時(shí)減少單點(diǎn)故障的發(fā)生,提供更高的可靠性,同時(shí)獲得最小的時(shí)延和最大的吞吐量。在大規(guī)模數(shù)據(jù)并發(fā)環(huán)境下的視頻監(jiān)控系統(tǒng),視頻分發(fā)矩陣是一個(gè)非常關(guān)鍵的部分,需要在不同服務(wù)器之間進(jìn)行不斷的同步,以防止視頻的漏發(fā)和重發(fā)。如果僅有一個(gè)服務(wù)器,一方面服務(wù)器任務(wù)本身比較重,另一方面,對(duì)主、副服務(wù)器的選擇也需要進(jìn)行考慮,為此,本發(fā)明采用了實(shí)時(shí)性非常高的實(shí)時(shí)數(shù)據(jù)庫(kù)來(lái)保存視頻分發(fā)矩陣,一方面減少了服務(wù)器的負(fù)載,另一方面可以極大地提高同步的效率。實(shí)時(shí)數(shù)據(jù)庫(kù)的存在,可以方便多個(gè)服務(wù)器及時(shí)地同步信息,包括訂閱信息,任一臺(tái)服務(wù)器都可以接受客戶端的訂閱,并同步到其他服務(wù)器上。
負(fù)載測(cè)量器收集網(wǎng)絡(luò)及服務(wù)器的狀態(tài),周期性的向負(fù)載均衡器報(bào)告,其中網(wǎng)絡(luò)狀態(tài)主要指請(qǐng)求的規(guī)模,服務(wù)器狀態(tài)指從服務(wù)器獲得其運(yùn)行的狀態(tài)。負(fù)載均衡器維護(hù)著服務(wù)器的地址列表以及分發(fā)規(guī)則,基于負(fù)載測(cè)量進(jìn)行計(jì)算生成調(diào)度規(guī)則,并通過(guò)調(diào)度發(fā)放器發(fā)給每個(gè)車站工控機(jī)。每條調(diào)度規(guī)則以攝像頭為處理粒度,用于指明具體的轉(zhuǎn)發(fā)方向。
車站工控機(jī)基于調(diào)度規(guī)則,在多個(gè)服務(wù)器之間劃分視頻流向,將視頻數(shù)據(jù)發(fā)給規(guī)定的服務(wù)器,由后者進(jìn)行視頻分發(fā)。
視頻采用錯(cuò)時(shí)發(fā)送,將實(shí)時(shí)視頻數(shù)據(jù)和歷史視頻數(shù)據(jù)進(jìn)行錯(cuò)時(shí)發(fā)送,避免對(duì)網(wǎng)絡(luò)負(fù)載造成較大影響。
視頻數(shù)據(jù)規(guī)劃采用了訂閱/分發(fā)模型,形成視頻分發(fā)矩陣,該矩陣保存了視頻流與客戶端對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),訂閱/分發(fā)模型定義了一種一對(duì)多的依賴關(guān)系,基于中介讓多個(gè)訂閱者同時(shí)監(jiān)聽(tīng)某一個(gè)實(shí)時(shí)視頻對(duì)象。如圖2所示,當(dāng)視頻對(duì)象產(chǎn)生新數(shù)據(jù),中介會(huì)通知所有訂閱者對(duì)象接收新的視頻數(shù)據(jù),系統(tǒng)中,由服務(wù)器承擔(dān)中介的角色,對(duì)客戶端的訂閱請(qǐng)求進(jìn)行監(jiān)聽(tīng),實(shí)時(shí)更改訂閱信息。訂閱/分發(fā)模型所做的工作其實(shí)是解耦合,通過(guò)訂閱/分發(fā)模型可以將這視頻產(chǎn)生者和視頻消費(fèi)者封裝在獨(dú)立的對(duì)象中,它們可以各自獨(dú)立地改變和復(fù)用。這樣,通過(guò)中介的一次中轉(zhuǎn),使得長(zhǎng)距離視頻數(shù)據(jù)的傳輸只需要一個(gè)副本,可以大大降低視頻數(shù)據(jù)的冗余度,降低網(wǎng)絡(luò)帶寬的負(fù)載。
系統(tǒng)保存了所有視頻攝像頭的信息(gc_DataLIst),作為全局信息,提供服務(wù)。其中包括了相關(guān)的訂閱者信息,以及對(duì)應(yīng)的攝像頭信息。圖1中,如果要登錄攝像頭,需要將一個(gè)回調(diào)函數(shù)注冊(cè)給指定的攝像頭,一旦登錄完成,攝像頭便利用此函數(shù)向系統(tǒng)返回?cái)z像頭/視頻,系統(tǒng)收到數(shù)據(jù)后才能進(jìn)行相關(guān)的處理。
void CALLBACK PsDataCallBack(LONG lRealHandle,DWORD dwDataType,BYTE*pPacketBuffer,DWORD nPacketSize,void*pUser)
由于攝像頭對(duì)于播放視頻來(lái)說(shuō)至關(guān)重要,不能丟失,因此把攝像頭事先保存在內(nèi)存數(shù)據(jù)庫(kù)中,客戶端用戶在訂閱前需要先獲得攝像頭,放置在播放屏幕中。而視頻本身數(shù)據(jù),丟掉若干幀,影響不大,所以可以采用效率高的UDP協(xié)議??紤]到不同子系統(tǒng)(如環(huán)控、電力子系統(tǒng)等)和本子系統(tǒng)是獨(dú)立的,以及實(shí)現(xiàn)的簡(jiǎn)單性,沒(méi)有采用RTP協(xié)議。
服務(wù)器端在處理完畢視頻訂閱(包括相應(yīng)的登錄過(guò)程)后,就可以接收到攝像頭發(fā)送的視頻數(shù)據(jù),并根據(jù)視頻分發(fā)矩陣,將視頻逐個(gè)發(fā)給每一個(gè)訂閱者。
負(fù)載均衡重要的內(nèi)容是確定調(diào)度的依據(jù),將調(diào)度的依據(jù)規(guī)劃為權(quán)值,服務(wù)器的處理能力是動(dòng)態(tài)變化的,使用固定的權(quán)值并不能最優(yōu)化的分配負(fù)載,本實(shí)施例基于如下參數(shù)計(jì)算服務(wù)器的處理能力:CPU頻率、內(nèi)存大小、網(wǎng)絡(luò)的吞吐量、磁盤的I/O速度??梢詫⒎?wù)器的處理能力用下面的等式來(lái)表示,
C(s)=r1C(CPU)+r2C(mem)+r3C(band)+r4C(disk)
其中參數(shù)r表示權(quán)值的相關(guān)系數(shù),并且有
具有高端配置的服務(wù)器也可能會(huì)因?yàn)樨?fù)載較高而導(dǎo)致處理能力降低,所以負(fù)載是必須考慮的,還要考慮CPU的利用率、內(nèi)存的利用率、磁盤的I/O速度和帶寬接入速率。但是,這些信息并不能直接的反應(yīng)服務(wù)器的負(fù)載,而且每一部分對(duì)服務(wù)器的負(fù)載都有一定的影響,所以需要一個(gè)函數(shù)將這些指標(biāo)轉(zhuǎn)化成能表示服務(wù)器負(fù)載的形式:
L(s)=w1L(CPU)+w2L(mem)+w3L(band)+w4L(disk)
L(CPU)表示CPU的使用率,L(mem)表示內(nèi)存的使用率,L(band)表示帶寬使用率,L(disk)表示磁盤I/O的使用情況,這些值都可以通過(guò)相關(guān)接口進(jìn)行測(cè)量得到,wi(i=1、2、3、4)是各個(gè)因素所占權(quán)值,w1+w2+w3+w4=1。
服務(wù)器當(dāng)前處理能力的計(jì)算公式,
CC(s)=C(s)*(1-L(s)/C(s))
其中CC(s)表示服務(wù)器當(dāng)前能夠處理客戶端請(qǐng)求的能力。在為每個(gè)服務(wù)器計(jì)算出當(dāng)前處理能力之后,使用下面的公式來(lái)計(jì)算服務(wù)器當(dāng)前的權(quán)值,
這里的權(quán)值是一個(gè)動(dòng)態(tài)變化的數(shù)值,表示服務(wù)器處理能力在服務(wù)器群中的比例。
本發(fā)明方案所公開(kāi)的技術(shù)手段不僅限于上述實(shí)施方式所公開(kāi)的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。