成洪豪, 石 芮, 孫立民
(煙臺(tái)大學(xué) 計(jì)算機(jī)與控制工程學(xué)院, 山東 煙臺(tái) 264005)
當(dāng)前,在應(yīng)對(duì)和處理各類突發(fā)事件的過(guò)程中,現(xiàn)場(chǎng)指揮調(diào)度系統(tǒng)發(fā)揮了越來(lái)越重要的作用。特別是部門與機(jī)構(gòu)眾多的時(shí)候,有效的指揮調(diào)度顯得尤為重要,如公安、稅務(wù)、海關(guān)、消防等現(xiàn)場(chǎng)執(zhí)法指揮,有效的指揮調(diào)度有利于對(duì)突發(fā)事件的及時(shí)控制與解決。實(shí)現(xiàn)有效調(diào)度指揮的根本在于通過(guò)音視頻傳輸,對(duì)一線實(shí)況有充分的了解,對(duì)現(xiàn)有資源有程度較高的掌握,從而使調(diào)度指揮決策具有針對(duì)性,更加高效。技術(shù)層面,現(xiàn)場(chǎng)指揮調(diào)度系統(tǒng)應(yīng)該具備輕便簡(jiǎn)捷開機(jī)即用、操作簡(jiǎn)便直觀、音頻質(zhì)量穩(wěn)定,并快速組織多方通話的特點(diǎn)。同時(shí),隨著計(jì)算機(jī)技術(shù),網(wǎng)絡(luò)技術(shù)的快速發(fā)展,使得開發(fā)一個(gè)實(shí)時(shí)高效的現(xiàn)場(chǎng)指揮調(diào)度系統(tǒng)已成為可能。
傳統(tǒng)的應(yīng)急通信方式主要有背負(fù)式應(yīng)急通訊設(shè)備[1]、海事衛(wèi)星電話[2]、應(yīng)急通訊車[3]等,其中背負(fù)式應(yīng)急通訊設(shè)備功率小,信號(hào)覆蓋面積小,攜帶不夠輕便簡(jiǎn)潔,操作要求較高;海事衛(wèi)星電話頻段有限,在大范圍應(yīng)用中,缺乏穩(wěn)定性;應(yīng)急通訊車容易受到環(huán)境的限制,可能無(wú)法應(yīng)用于前線,并且只具備接收指揮信息的功能,無(wú)法實(shí)時(shí)向指揮中心發(fā)送現(xiàn)場(chǎng)實(shí)況,不利于指揮工作的迅捷展開[4]。目前一些指揮調(diào)度系統(tǒng)還存在著一定的不足。如文獻(xiàn)[5]結(jié)合Android應(yīng)用開發(fā)的一款應(yīng)急調(diào)度軟件,沒(méi)有將一線視頻傳回指揮中心,僅對(duì)調(diào)度方面進(jìn)行了優(yōu)化和創(chuàng)新。文獻(xiàn)[6]將各種信號(hào)采集到云平臺(tái)中,將一線視頻進(jìn)行了匯總,并傳回指揮中心,實(shí)現(xiàn)了一個(gè)可視化綜合指揮調(diào)度系統(tǒng)在民防應(yīng)急指揮中的運(yùn)用,但該系統(tǒng)并未對(duì)指揮調(diào)度進(jìn)行研究和開發(fā)。文獻(xiàn)[7]構(gòu)建了一個(gè)實(shí)戰(zhàn)型公安警務(wù)一體化指揮調(diào)度平臺(tái),對(duì)一線情況的傳回和指揮調(diào)度方面均做了進(jìn)一步優(yōu)化,但缺乏對(duì)事件處理靈活性,也并未提供對(duì)信息的整合和存儲(chǔ)。
本項(xiàng)目設(shè)計(jì)開發(fā)了一個(gè)配備實(shí)時(shí)視頻功能的指揮調(diào)度系統(tǒng)。采用WebRTC技術(shù)[8],利用WebRTC的跨平臺(tái)特性,僅使用HTML、無(wú)插件便實(shí)現(xiàn)視頻的連接和傳輸。搭配Kurento流媒體服務(wù)器,使得視頻流傳輸給Kurento服務(wù)器,再由Kurento服務(wù)器進(jìn)行轉(zhuǎn)發(fā)和存儲(chǔ)等,便于對(duì)視頻流進(jìn)行操作。借用Kurento中的擁塞控制機(jī)制,適應(yīng)當(dāng)前設(shè)備的網(wǎng)絡(luò)狀況,降低或提高視頻分辨率,優(yōu)化傳輸過(guò)程的穩(wěn)定性。利用WebRTC實(shí)現(xiàn)移動(dòng)設(shè)備與指揮中心的視頻通信,結(jié)合任務(wù)驅(qū)動(dòng)將事件整合為任務(wù)的形式進(jìn)行分配和調(diào)度,使指揮中心可實(shí)時(shí)掌握現(xiàn)場(chǎng)狀況,應(yīng)急指揮調(diào)度更為科學(xué)合理,將事件的處理過(guò)程以任務(wù)的形式保存下來(lái),方便以后的讀取。
擬開發(fā)的實(shí)時(shí)指揮系統(tǒng),指揮中心通過(guò)對(duì)一線實(shí)時(shí)視頻信息的了解,實(shí)現(xiàn)對(duì)一線執(zhí)行人員的精準(zhǔn)指揮,并將所有信息進(jìn)行整合與保存。通過(guò)現(xiàn)場(chǎng)調(diào)研與系統(tǒng)分析,得到系統(tǒng)的功能需求,詳見表1。
為實(shí)現(xiàn)上述功能,將采用WebRTC與Kurento[9]媒體服務(wù)器相結(jié)合的方法,進(jìn)行視頻的連接、傳輸和保存。WebRTC最大的優(yōu)點(diǎn)在于能夠很好地完成這種對(duì)于實(shí)時(shí)性要求很高的工作,再加上Kurento中的擁塞控制機(jī)制,可以根據(jù)網(wǎng)絡(luò)情況自動(dòng)地調(diào)節(jié)和適應(yīng)視頻的分辨率,對(duì)于緊急事件類實(shí)時(shí)性要求較高的任務(wù)都能夠滿足設(shè)計(jì)需要。而且WebRTC通過(guò)HTML直接進(jìn)行視頻交流,不需要其它第三方插件,可降低維護(hù)成本,利于后期的維護(hù)工作。

表1 實(shí)時(shí)指揮系統(tǒng)的功能需求分析
針對(duì)緊急事件的突發(fā)性和隨機(jī)性,將實(shí)時(shí)指揮系統(tǒng)與任務(wù)驅(qū)動(dòng)相結(jié)合。將任務(wù)分解為任務(wù)、任務(wù)節(jié)點(diǎn)、節(jié)點(diǎn)信息,任務(wù)中包含多個(gè)任務(wù)節(jié)點(diǎn),任務(wù)節(jié)點(diǎn)包含多個(gè)節(jié)點(diǎn)信息。所有的信息都圍繞任務(wù)進(jìn)行保存和讀取。任務(wù)中包括任務(wù)的增加、刪除、接受、審核等。通過(guò)對(duì)任務(wù)、任務(wù)節(jié)點(diǎn)的分配,明確各項(xiàng)任務(wù)的執(zhí)行順序,使任務(wù)能被更加有序地完成,有利于提高工作效率。
1.3.1 網(wǎng)絡(luò)架構(gòu)
系統(tǒng)采用有線網(wǎng)絡(luò)、移動(dòng)網(wǎng)絡(luò)、WiFi等網(wǎng)絡(luò)通信方式實(shí)現(xiàn)執(zhí)行現(xiàn)場(chǎng)單位、執(zhí)行人員的各類數(shù)據(jù)消息的傳輸,構(gòu)成一個(gè)B/S架構(gòu)的異構(gòu)網(wǎng)絡(luò)[10]系統(tǒng)。各個(gè)執(zhí)行單位、指揮人員、現(xiàn)場(chǎng)執(zhí)行人員在權(quán)限范圍內(nèi)都可以訪問(wèn)和操作系統(tǒng)各項(xiàng)功能,實(shí)現(xiàn)實(shí)時(shí)指揮與調(diào)度。系統(tǒng)的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì),如圖1所示。
1.3.2 系統(tǒng)整體架構(gòu)設(shè)計(jì)
根據(jù)上述系統(tǒng)需求,設(shè)計(jì)了實(shí)時(shí)指揮系統(tǒng)的整體架構(gòu)圖,如圖2所示。由圖2可知,最上層為實(shí)時(shí)指揮系統(tǒng)需要實(shí)現(xiàn)的業(yè)務(wù)功能,包括登錄驗(yàn)證模塊、任務(wù)管理模塊、實(shí)時(shí)通信模塊、視頻存儲(chǔ)和回放模塊。最下層分別是信令服務(wù)器、流媒體服務(wù)器和應(yīng)用服務(wù)器。其中,信令服務(wù)器主要用于交換對(duì)等連接雙方的信息,建立視頻流信息的傳輸通道。流媒體服務(wù)器主要用于視頻流信息的保存、讀取和視頻流傳輸過(guò)程中的優(yōu)化。應(yīng)用服務(wù)器主要用于提供Web服務(wù)和數(shù)據(jù)庫(kù)服務(wù)、以及任務(wù)的相關(guān)操作與保存。

圖1 系統(tǒng)的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)

圖2 系統(tǒng)整體架構(gòu)圖
出于安全與管理考慮,每個(gè)用戶都需要向管理員申請(qǐng)賬號(hào),管理員添加賬號(hào)與權(quán)限后方可進(jìn)入系統(tǒng)。 在登錄時(shí),用戶需要填寫用戶名、密碼與驗(yàn)證碼。后臺(tái)讀取用戶名、密碼將會(huì)與緩存中的用戶名和密碼進(jìn)行匹配,若之前登錄過(guò)該用戶,且本次用戶名、密碼輸入正確,則通過(guò);若之前未登錄過(guò)該用戶,則將本次登錄的用戶名、密碼與數(shù)據(jù)庫(kù)中信息進(jìn)行匹配,如果數(shù)據(jù)庫(kù)中存在對(duì)應(yīng)信息,則通過(guò)登錄,并將本次登錄的用戶名、密碼存入緩存中,方便下次進(jìn)行驗(yàn)證。
任務(wù)的管理主要包括任務(wù)的查看、創(chuàng)建、刪除、修改、審核、分配。全系統(tǒng)依靠任務(wù)驅(qū)動(dòng)運(yùn)行,將應(yīng)急突發(fā)事件作為一個(gè)任務(wù)進(jìn)行分配,而任務(wù)中又包括多個(gè)任務(wù)節(jié)點(diǎn)、即子任務(wù),通過(guò)將任務(wù)劃分為子任務(wù)進(jìn)行分配,提高了任務(wù)的執(zhí)行效率,而將所有信息依靠任務(wù)節(jié)點(diǎn)保存起來(lái),使得記錄變得更加有序。任務(wù)流程如圖3所示。

圖3 任務(wù)管理流程圖
本模塊主要實(shí)現(xiàn)了一對(duì)一指揮和一對(duì)多現(xiàn)場(chǎng)展示的功能。采用WebRTC與流媒體服務(wù)器Kurento相結(jié)合的方法,前臺(tái)通過(guò)WebSocket訪問(wèn)信令服務(wù)器,注冊(cè)自己的相關(guān)信息,交換對(duì)等連接的相關(guān)信息,建立Kurento通道,將連接雙方的視頻流傳入Kurento中,再通過(guò)Kurento所建立的通道,實(shí)現(xiàn)雙方視頻信息的交互。一對(duì)一建立連接時(shí)序,如圖4所示。一對(duì)多現(xiàn)場(chǎng)展示時(shí)序,如圖5所示。

圖4 一對(duì)一指揮視頻時(shí)序圖
圖4中,A、B分別為2個(gè)瀏覽器端,前臺(tái)界面首先向信令服務(wù)器發(fā)送自己的注冊(cè)信息,得到注冊(cè)的反饋。然后A向信令服務(wù)器發(fā)送對(duì)B呼叫的請(qǐng)求,信令服務(wù)器向B發(fā)送A要對(duì)其進(jìn)行呼叫的信息。B收到信息,反饋信息給信令服務(wù)器,信令服務(wù)器將反饋信息發(fā)送給A。
A、B收集候選網(wǎng)絡(luò)并發(fā)送到信令服務(wù)器,信令服務(wù)器建立A和B的Kurento通道,A、B通過(guò)通道向Kurento發(fā)送自己的視頻流,并接收對(duì)方的視頻流。最后A發(fā)送停止信息給信令服務(wù)器,信令服務(wù)器發(fā)送A要停止視頻的信息給B,雙方斷開連接。
圖5中,A、B分別為2個(gè)瀏覽器端,前臺(tái)界面首先向信令服務(wù)器發(fā)送自己的注冊(cè)信息,得到注冊(cè)的反饋。然后A向信令服務(wù)器發(fā)送執(zhí)行命令的請(qǐng)求,信令服務(wù)器發(fā)送反饋信息給A。A收集候選網(wǎng)絡(luò)并發(fā)送到信令服務(wù)器,信令服務(wù)器建立A的Kurento單向通道,A通過(guò)通道向Kurento發(fā)送自己的視頻流。此時(shí)B發(fā)送查看A執(zhí)行任務(wù)的請(qǐng)求給信令服務(wù)器,信令服務(wù)器接到請(qǐng)求并發(fā)送反饋信息給B,B收集候選網(wǎng)絡(luò)并發(fā)送到信令服務(wù)器,信令服務(wù)器將A的Kurento通道的另一端連接B,B接收A的視頻流。

圖5 一對(duì)多現(xiàn)場(chǎng)展示視頻時(shí)序圖
本模塊主要在視頻流信息流經(jīng)Kurento的時(shí)候,將視頻流進(jìn)行拷貝,并按照任務(wù)的信息存儲(chǔ)在視頻流服務(wù)器Kurento中,方便根據(jù)任務(wù)取得所有的視頻信息。回放功能主要是通過(guò)應(yīng)用服務(wù)器,讀取數(shù)據(jù)庫(kù)存儲(chǔ)的信息,訪問(wèn)Kurento服務(wù)器的相關(guān)文件,得到相對(duì)應(yīng)的視頻。
網(wǎng)頁(yè)端在Java EE開源框架Jeecg的基礎(chǔ)上進(jìn)行開發(fā),后臺(tái)以Spring-Boot為核心框架,使用Java語(yǔ)言編寫代碼,使用MyBatis實(shí)現(xiàn)對(duì)于Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn),ApacheShiro實(shí)現(xiàn)對(duì)權(quán)限的控制,Ehcahe和Redis 對(duì)數(shù)據(jù)進(jìn)行緩存,Thymeleaf作為模板引擎。前臺(tái)使用Vue框編寫HTML/js頁(yè)面,并引入Kurento提供的第三方j(luò)s庫(kù)進(jìn)行視頻相關(guān)的開發(fā)。
系統(tǒng)中視頻傳送鏈路主要包括一對(duì)一指揮鏈路和一對(duì)多現(xiàn)場(chǎng)展示鏈路。鏈路建立流程詳見如下。
流程1 一對(duì)一
算法: O2OCall
輸入:E表示任務(wù)執(zhí)行者,T表示指揮中心,N表示當(dāng)前攝像頭狀態(tài),S表示執(zhí)行狀態(tài)
輸出:連接建立,互相發(fā)送視頻信息
if (S==1){//當(dāng)任務(wù)正在被執(zhí)行時(shí)
if(N==1){ //如果當(dāng)前攝像頭正在使用
Set(N=0)//更改攝像頭狀態(tài)
Stop(N)//關(guān)閉當(dāng)前任務(wù)執(zhí)行所占用的攝像頭
Register(T)//后臺(tái)注冊(cè)指揮中心信息
Traversal(E)//遍歷獲取任務(wù)執(zhí)行者信息
Connect(E,T) //執(zhí)行Connect算法,建立雙方對(duì)等連接,互相發(fā)送視頻信息
Set(N=1)//更改攝像頭狀態(tài)
}else{
Register(T)//后臺(tái)注冊(cè)指揮中心信息
Traversal(E)//遍歷獲取任務(wù)執(zhí)行者信息
Connect(E,T) //執(zhí)行Connect算法,建立雙方對(duì)等連接,互相發(fā)送視頻信息
}
}else{
Init()//執(zhí)行初始化算法,刷新網(wǎng)頁(yè),更新狀態(tài)
}
流程2 一對(duì)多
算法: O2M
輸入:E表示任務(wù)執(zhí)行者,T表示指揮中心,N表示當(dāng)前攝像頭狀態(tài),S表示執(zhí)行狀態(tài)
輸出: 連接建立,接收?qǐng)?zhí)行者發(fā)送的視頻信息
if (S==1){//當(dāng)任務(wù)正在被執(zhí)行時(shí)
Register(T)//后臺(tái)注冊(cè)指揮中心信息
Traversal(E)//遍歷獲取任務(wù)執(zhí)行者信息
Connect(E,T) //執(zhí)行Connect算法,建立雙方對(duì)等連接,只接收任務(wù)執(zhí)行者發(fā)送的信息
}
else{
Init()//執(zhí)行初始化算法,彈窗提示,當(dāng)前任務(wù)未在執(zhí)行
}
本模塊對(duì)所開發(fā)的面向音視頻流的實(shí)時(shí)指揮系統(tǒng)的各項(xiàng)功能進(jìn)行驗(yàn)證。對(duì)此可做闡釋分述如下。
通過(guò)用戶名、密碼進(jìn)行登錄,信息傳入后臺(tái),打包成token,由shiro安全框架進(jìn)行驗(yàn)證,提高安全性。功能界面如圖6所示。

圖6 登錄驗(yàn)證
任務(wù)管理主要提供了對(duì)任務(wù)的增刪改查、呼叫和觀看等功能。其中,增刪改查屬于對(duì)任務(wù)本身的操作, 同時(shí)還包括子任務(wù)的劃分、分配等。呼叫主要對(duì)目前任務(wù)的執(zhí)行者進(jìn)行一對(duì)一的呼叫指揮。觀看則是對(duì)目前任務(wù)執(zhí)行者的執(zhí)行過(guò)程進(jìn)行實(shí)時(shí)的查看。任務(wù)管理界面,如圖7所示。
實(shí)時(shí)通信主要包括一對(duì)一和一對(duì)多,其中一對(duì)一為指揮中心對(duì)執(zhí)行人員進(jìn)行呼叫指揮,一對(duì)多為執(zhí)行人員將執(zhí)行過(guò)程實(shí)時(shí)傳回指揮中心。
4.3.1 一對(duì)多通信
外出執(zhí)行人員攜帶外出執(zhí)行記錄儀前往執(zhí)行地點(diǎn),到達(dá)指定地點(diǎn)后使用執(zhí)行記錄儀,登錄系統(tǒng),選擇相對(duì)應(yīng)的任務(wù)來(lái)執(zhí)行操作。系統(tǒng)會(huì)將執(zhí)行過(guò)程的視頻傳回指揮中心。指揮中心可以選擇相對(duì)應(yīng)的任務(wù)對(duì)正在執(zhí)行的過(guò)程進(jìn)行實(shí)時(shí)查看,同時(shí)也可以查看已完成的子任務(wù)的相關(guān)信息。指揮中心接收的圖像,如圖8所示,執(zhí)行記錄儀的畫面,如圖9所示。

圖8 指揮中心接收的圖像 圖9 執(zhí)行記錄儀畫面
Fig. 8Image received by the command center Fig. 9Shows the recorder screen
4.3.2 一對(duì)一通信
指揮中心對(duì)執(zhí)行者發(fā)起指揮呼叫請(qǐng)求,執(zhí)行者接受請(qǐng)求,雙方建立通信連接。指揮中心指揮截圖,如圖10所示。執(zhí)行者接受指揮截圖,如圖11所示。

圖10 指揮中心指揮截圖

圖11 執(zhí)行者接受指揮截圖
將執(zhí)行過(guò)程以及指揮過(guò)程進(jìn)行存儲(chǔ),存儲(chǔ)在Kurento服務(wù)器上,通過(guò)訪問(wèn)Kurento服務(wù)器對(duì)視頻進(jìn)行回放。存儲(chǔ)形式為Webm文件,名字定義規(guī)則為任務(wù)名-類型-節(jié)點(diǎn)ID。視頻存儲(chǔ)如圖12所示。

圖12 視頻存儲(chǔ)
本文基于WebRTC和Kurento實(shí)現(xiàn)了實(shí)時(shí)指揮系統(tǒng),相對(duì)于目前已有的實(shí)時(shí)指揮系統(tǒng),本系統(tǒng)僅需要設(shè)備支持瀏覽器、攝像頭、上網(wǎng)功能即可使用,降低了使用成本,而且由于不需要第三方插件,維護(hù)成本也大大降低。在網(wǎng)絡(luò)較差的環(huán)境下,系統(tǒng)會(huì)通過(guò)調(diào)節(jié)分辨率的方法,降低所需帶寬,使得本系統(tǒng)在較惡劣的環(huán)境下也能完成作業(yè)。等到5G開始全面商業(yè)化之后,本系統(tǒng)不需要更改即可投入使用,由于5G的網(wǎng)絡(luò)更加快捷,穩(wěn)定,本系統(tǒng)所達(dá)到的效果會(huì)更好。