成洪豪, 石 芮, 孫立民
(煙臺大學 計算機與控制工程學院, 山東 煙臺 264005)
當前,在應對和處理各類突發(fā)事件的過程中,現場指揮調度系統(tǒng)發(fā)揮了越來越重要的作用。特別是部門與機構眾多的時候,有效的指揮調度顯得尤為重要,如公安、稅務、海關、消防等現場執(zhí)法指揮,有效的指揮調度有利于對突發(fā)事件的及時控制與解決。實現有效調度指揮的根本在于通過音視頻傳輸,對一線實況有充分的了解,對現有資源有程度較高的掌握,從而使調度指揮決策具有針對性,更加高效。技術層面,現場指揮調度系統(tǒng)應該具備輕便簡捷開機即用、操作簡便直觀、音頻質量穩(wěn)定,并快速組織多方通話的特點。同時,隨著計算機技術,網絡技術的快速發(fā)展,使得開發(fā)一個實時高效的現場指揮調度系統(tǒng)已成為可能。
傳統(tǒng)的應急通信方式主要有背負式應急通訊設備[1]、海事衛(wèi)星電話[2]、應急通訊車[3]等,其中背負式應急通訊設備功率小,信號覆蓋面積小,攜帶不夠輕便簡潔,操作要求較高;海事衛(wèi)星電話頻段有限,在大范圍應用中,缺乏穩(wěn)定性;應急通訊車容易受到環(huán)境的限制,可能無法應用于前線,并且只具備接收指揮信息的功能,無法實時向指揮中心發(fā)送現場實況,不利于指揮工作的迅捷展開[4]。目前一些指揮調度系統(tǒng)還存在著一定的不足。如文獻[5]結合Android應用開發(fā)的一款應急調度軟件,沒有將一線視頻傳回指揮中心,僅對調度方面進行了優(yōu)化和創(chuàng)新。文獻[6]將各種信號采集到云平臺中,將一線視頻進行了匯總,并傳回指揮中心,實現了一個可視化綜合指揮調度系統(tǒng)在民防應急指揮中的運用,但該系統(tǒng)并未對指揮調度進行研究和開發(fā)。文獻[7]構建了一個實戰(zhàn)型公安警務一體化指揮調度平臺,對一線情況的傳回和指揮調度方面均做了進一步優(yōu)化,但缺乏對事件處理靈活性,也并未提供對信息的整合和存儲。
本項目設計開發(fā)了一個配備實時視頻功能的指揮調度系統(tǒng)。采用WebRTC技術[8],利用WebRTC的跨平臺特性,僅使用HTML、無插件便實現視頻的連接和傳輸。搭配Kurento流媒體服務器,使得視頻流傳輸給Kurento服務器,再由Kurento服務器進行轉發(fā)和存儲等,便于對視頻流進行操作。借用Kurento中的擁塞控制機制,適應當前設備的網絡狀況,降低或提高視頻分辨率,優(yōu)化傳輸過程的穩(wěn)定性。利用WebRTC實現移動設備與指揮中心的視頻通信,結合任務驅動將事件整合為任務的形式進行分配和調度,使指揮中心可實時掌握現場狀況,應急指揮調度更為科學合理,將事件的處理過程以任務的形式保存下來,方便以后的讀取。
擬開發(fā)的實時指揮系統(tǒng),指揮中心通過對一線實時視頻信息的了解,實現對一線執(zhí)行人員的精準指揮,并將所有信息進行整合與保存。通過現場調研與系統(tǒng)分析,得到系統(tǒng)的功能需求,詳見表1。
為實現上述功能,將采用WebRTC與Kurento[9]媒體服務器相結合的方法,進行視頻的連接、傳輸和保存。WebRTC最大的優(yōu)點在于能夠很好地完成這種對于實時性要求很高的工作,再加上Kurento中的擁塞控制機制,可以根據網絡情況自動地調節(jié)和適應視頻的分辨率,對于緊急事件類實時性要求較高的任務都能夠滿足設計需要。而且WebRTC通過HTML直接進行視頻交流,不需要其它第三方插件,可降低維護成本,利于后期的維護工作。
表1 實時指揮系統(tǒng)的功能需求分析
針對緊急事件的突發(fā)性和隨機性,將實時指揮系統(tǒng)與任務驅動相結合。將任務分解為任務、任務節(jié)點、節(jié)點信息,任務中包含多個任務節(jié)點,任務節(jié)點包含多個節(jié)點信息。所有的信息都圍繞任務進行保存和讀取。任務中包括任務的增加、刪除、接受、審核等。通過對任務、任務節(jié)點的分配,明確各項任務的執(zhí)行順序,使任務能被更加有序地完成,有利于提高工作效率。
1.3.1 網絡架構
系統(tǒng)采用有線網絡、移動網絡、WiFi等網絡通信方式實現執(zhí)行現場單位、執(zhí)行人員的各類數據消息的傳輸,構成一個B/S架構的異構網絡[10]系統(tǒng)。各個執(zhí)行單位、指揮人員、現場執(zhí)行人員在權限范圍內都可以訪問和操作系統(tǒng)各項功能,實現實時指揮與調度。系統(tǒng)的網絡架構設計,如圖1所示。
1.3.2 系統(tǒng)整體架構設計
根據上述系統(tǒng)需求,設計了實時指揮系統(tǒng)的整體架構圖,如圖2所示。由圖2可知,最上層為實時指揮系統(tǒng)需要實現的業(yè)務功能,包括登錄驗證模塊、任務管理模塊、實時通信模塊、視頻存儲和回放模塊。最下層分別是信令服務器、流媒體服務器和應用服務器。其中,信令服務器主要用于交換對等連接雙方的信息,建立視頻流信息的傳輸通道。流媒體服務器主要用于視頻流信息的保存、讀取和視頻流傳輸過程中的優(yōu)化。應用服務器主要用于提供Web服務和數據庫服務、以及任務的相關操作與保存。
圖1 系統(tǒng)的網絡架構設計
圖2 系統(tǒng)整體架構圖
出于安全與管理考慮,每個用戶都需要向管理員申請賬號,管理員添加賬號與權限后方可進入系統(tǒng)。 在登錄時,用戶需要填寫用戶名、密碼與驗證碼。后臺讀取用戶名、密碼將會與緩存中的用戶名和密碼進行匹配,若之前登錄過該用戶,且本次用戶名、密碼輸入正確,則通過;若之前未登錄過該用戶,則將本次登錄的用戶名、密碼與數據庫中信息進行匹配,如果數據庫中存在對應信息,則通過登錄,并將本次登錄的用戶名、密碼存入緩存中,方便下次進行驗證。
任務的管理主要包括任務的查看、創(chuàng)建、刪除、修改、審核、分配。全系統(tǒng)依靠任務驅動運行,將應急突發(fā)事件作為一個任務進行分配,而任務中又包括多個任務節(jié)點、即子任務,通過將任務劃分為子任務進行分配,提高了任務的執(zhí)行效率,而將所有信息依靠任務節(jié)點保存起來,使得記錄變得更加有序。任務流程如圖3所示。
圖3 任務管理流程圖
本模塊主要實現了一對一指揮和一對多現場展示的功能。采用WebRTC與流媒體服務器Kurento相結合的方法,前臺通過WebSocket訪問信令服務器,注冊自己的相關信息,交換對等連接的相關信息,建立Kurento通道,將連接雙方的視頻流傳入Kurento中,再通過Kurento所建立的通道,實現雙方視頻信息的交互。一對一建立連接時序,如圖4所示。一對多現場展示時序,如圖5所示。
圖4 一對一指揮視頻時序圖
圖4中,A、B分別為2個瀏覽器端,前臺界面首先向信令服務器發(fā)送自己的注冊信息,得到注冊的反饋。然后A向信令服務器發(fā)送對B呼叫的請求,信令服務器向B發(fā)送A要對其進行呼叫的信息。B收到信息,反饋信息給信令服務器,信令服務器將反饋信息發(fā)送給A。
A、B收集候選網絡并發(fā)送到信令服務器,信令服務器建立A和B的Kurento通道,A、B通過通道向Kurento發(fā)送自己的視頻流,并接收對方的視頻流。最后A發(fā)送停止信息給信令服務器,信令服務器發(fā)送A要停止視頻的信息給B,雙方斷開連接。
圖5中,A、B分別為2個瀏覽器端,前臺界面首先向信令服務器發(fā)送自己的注冊信息,得到注冊的反饋。然后A向信令服務器發(fā)送執(zhí)行命令的請求,信令服務器發(fā)送反饋信息給A。A收集候選網絡并發(fā)送到信令服務器,信令服務器建立A的Kurento單向通道,A通過通道向Kurento發(fā)送自己的視頻流。此時B發(fā)送查看A執(zhí)行任務的請求給信令服務器,信令服務器接到請求并發(fā)送反饋信息給B,B收集候選網絡并發(fā)送到信令服務器,信令服務器將A的Kurento通道的另一端連接B,B接收A的視頻流。
圖5 一對多現場展示視頻時序圖
本模塊主要在視頻流信息流經Kurento的時候,將視頻流進行拷貝,并按照任務的信息存儲在視頻流服務器Kurento中,方便根據任務取得所有的視頻信息。回放功能主要是通過應用服務器,讀取數據庫存儲的信息,訪問Kurento服務器的相關文件,得到相對應的視頻。
網頁端在Java EE開源框架Jeecg的基礎上進行開發(fā),后臺以Spring-Boot為核心框架,使用Java語言編寫代碼,使用MyBatis實現對于Oracle數據庫的數據訪問,ApacheShiro實現對權限的控制,Ehcahe和Redis 對數據進行緩存,Thymeleaf作為模板引擎。前臺使用Vue框編寫HTML/js頁面,并引入Kurento提供的第三方js庫進行視頻相關的開發(fā)。
系統(tǒng)中視頻傳送鏈路主要包括一對一指揮鏈路和一對多現場展示鏈路。鏈路建立流程詳見如下。
流程1 一對一
算法: O2OCall
輸入:E表示任務執(zhí)行者,T表示指揮中心,N表示當前攝像頭狀態(tài),S表示執(zhí)行狀態(tài)
輸出:連接建立,互相發(fā)送視頻信息
if (S==1){//當任務正在被執(zhí)行時
if(N==1){ //如果當前攝像頭正在使用
Set(N=0)//更改攝像頭狀態(tài)
Stop(N)//關閉當前任務執(zhí)行所占用的攝像頭
Register(T)//后臺注冊指揮中心信息
Traversal(E)//遍歷獲取任務執(zhí)行者信息
Connect(E,T) //執(zhí)行Connect算法,建立雙方對等連接,互相發(fā)送視頻信息
Set(N=1)//更改攝像頭狀態(tài)
}else{
Register(T)//后臺注冊指揮中心信息
Traversal(E)//遍歷獲取任務執(zhí)行者信息
Connect(E,T) //執(zhí)行Connect算法,建立雙方對等連接,互相發(fā)送視頻信息
}
}else{
Init()//執(zhí)行初始化算法,刷新網頁,更新狀態(tài)
}
流程2 一對多
算法: O2M
輸入:E表示任務執(zhí)行者,T表示指揮中心,N表示當前攝像頭狀態(tài),S表示執(zhí)行狀態(tài)
輸出: 連接建立,接收執(zhí)行者發(fā)送的視頻信息
if (S==1){//當任務正在被執(zhí)行時
Register(T)//后臺注冊指揮中心信息
Traversal(E)//遍歷獲取任務執(zhí)行者信息
Connect(E,T) //執(zhí)行Connect算法,建立雙方對等連接,只接收任務執(zhí)行者發(fā)送的信息
}
else{
Init()//執(zhí)行初始化算法,彈窗提示,當前任務未在執(zhí)行
}
本模塊對所開發(fā)的面向音視頻流的實時指揮系統(tǒng)的各項功能進行驗證。對此可做闡釋分述如下。
通過用戶名、密碼進行登錄,信息傳入后臺,打包成token,由shiro安全框架進行驗證,提高安全性。功能界面如圖6所示。
圖6 登錄驗證
任務管理主要提供了對任務的增刪改查、呼叫和觀看等功能。其中,增刪改查屬于對任務本身的操作, 同時還包括子任務的劃分、分配等。呼叫主要對目前任務的執(zhí)行者進行一對一的呼叫指揮。觀看則是對目前任務執(zhí)行者的執(zhí)行過程進行實時的查看。任務管理界面,如圖7所示。
實時通信主要包括一對一和一對多,其中一對一為指揮中心對執(zhí)行人員進行呼叫指揮,一對多為執(zhí)行人員將執(zhí)行過程實時傳回指揮中心。
4.3.1 一對多通信
外出執(zhí)行人員攜帶外出執(zhí)行記錄儀前往執(zhí)行地點,到達指定地點后使用執(zhí)行記錄儀,登錄系統(tǒng),選擇相對應的任務來執(zhí)行操作。系統(tǒng)會將執(zhí)行過程的視頻傳回指揮中心。指揮中心可以選擇相對應的任務對正在執(zhí)行的過程進行實時查看,同時也可以查看已完成的子任務的相關信息。指揮中心接收的圖像,如圖8所示,執(zhí)行記錄儀的畫面,如圖9所示。
圖8 指揮中心接收的圖像 圖9 執(zhí)行記錄儀畫面
Fig. 8Image received by the command center Fig. 9Shows the recorder screen
4.3.2 一對一通信
指揮中心對執(zhí)行者發(fā)起指揮呼叫請求,執(zhí)行者接受請求,雙方建立通信連接。指揮中心指揮截圖,如圖10所示。執(zhí)行者接受指揮截圖,如圖11所示。
圖10 指揮中心指揮截圖
圖11 執(zhí)行者接受指揮截圖
將執(zhí)行過程以及指揮過程進行存儲,存儲在Kurento服務器上,通過訪問Kurento服務器對視頻進行回放。存儲形式為Webm文件,名字定義規(guī)則為任務名-類型-節(jié)點ID。視頻存儲如圖12所示。
圖12 視頻存儲
本文基于WebRTC和Kurento實現了實時指揮系統(tǒng),相對于目前已有的實時指揮系統(tǒng),本系統(tǒng)僅需要設備支持瀏覽器、攝像頭、上網功能即可使用,降低了使用成本,而且由于不需要第三方插件,維護成本也大大降低。在網絡較差的環(huán)境下,系統(tǒng)會通過調節(jié)分辨率的方法,降低所需帶寬,使得本系統(tǒng)在較惡劣的環(huán)境下也能完成作業(yè)。等到5G開始全面商業(yè)化之后,本系統(tǒng)不需要更改即可投入使用,由于5G的網絡更加快捷,穩(wěn)定,本系統(tǒng)所達到的效果會更好。