廖列法,張幸平
(江西理工大學 信息工程學院,江西 贛州 341000)
數字化時代的到來在很大程度上改變了人們傳統的生活生產方式,在各行業領域中基于iOS移動端的應用越來越多,同時隨著智能設備的逐漸普遍,移動互聯網技術已然成為未來高新技術發展的重要方向。與此同時,移動互聯網技術在傳統行業中的應用越來越廣泛,各個行業的改革也都朝著智能、智慧化方向發展。例如國家電網、各大高校、醫院、制造業,家居業等眾多領域都紛紛提出建設智能電網[1]、”互聯網+”課堂[2]、智慧醫療[3]、智能制造[4]、智能家居[5]。因此傳統指揮系統的升級也成為迫切需要解決的問題。
目前,傳統的指揮系統要求特定設備,功能較為單一,沒有良好的交互界面。比如樓宇對講系統[6]、基于Linux對講系統[7]分別使用對講機、Linux終端作為對講設備,同時也沒有可視化界面,難以滿足互聯網時代用戶的需求。在互聯網時代下,如何利用移動互聯網技術實現指揮系統的升級成了智能化發展的一個方向。比如以目前主流的iOS系統設備替換原有的舊型專用設備,增加地圖上實時顯示用戶位置,通過耳機控制對講,增加狀態類消息實時顯示當前狀態,設計更加人性化的UI提升用戶體驗效果等都是用戶提出的真實需求。因此開發基于iOS的智能可視化指揮系統[8]對傳統指揮系統的升級具有非常重要的意義以及應用價值。
系統采用主流的C/S架構,通過TCP協議實現客戶端與云服務器之間的數據傳輸。首先,云服務器作為整個系統的數據處理中心,主要負責用戶驗證,語音流數據,上下線、位置、控制類、狀態類等消息的解析與轉發,以及提供可靠的數據高速訪問和存儲服務,同時采用Ngnix[9],Redis[10],Nodejs[11],Mysql[12]作為技術框架,支持分布式集群化部署滿足多用戶、高并發需求,實現云服務器的高性能,高可用。其中,Nginx為負載均衡反向代理服務器,可實現靜態分離,將所有客戶端的請求依據權重隨機的分配到相應的Nodje服務器,避免單臺Nodejs服務器負載過大的問題。Nodejs為應用服務器,負責與客戶端之間的數據分析與轉發,是整個系統數據的流轉中心。Redis為高速緩存服務器,建立主從的集群方案,作為mysql的緩存服務器,實現讀寫分離,保證數據的持續高速訪問。Mysql為多臺Nodejs的共享數據庫,提供數據存儲服務。整個系統的整體框架如1所示。
圖1 系統架構
在實現基礎對講功能外,客戶端以地圖作為基礎元素,利用網絡定位[13]、GPS定位[14]、離線定位[15]技術監聽位置變化信息并實時通過云服務器轉發都所有在線的用戶,另外除了基本位置消息外,擴展了個人信息(包括頭像,真實姓名等)、搶麥消息、麥閑與麥忙消息、上下線消息等,結合這些消息,在地圖上可以非常直觀看出用戶上下線變化、位置變化、麥狀態變化等,其主要特點如下:
(1)設備多型化,支持當前主流的iOS移動系統設備作為客戶端,不再需要專用設備,隨身攜帶的iOS手機,iPAD就是一臺指揮設備。
(2)可視化指揮,在地圖上實時顯示用戶上下線、位置的變化,可以非常直觀反應出每個用戶的位置信息以及運動軌跡。
(3)特色功能,增加管理員優先搶麥功能,耳麥控制對講功能,人性化的狀態提功能等,增強了指揮系統的功能和提升了客戶端的體驗效果。
云服務器作為整個系統的數據中心,負責所有數據的解析與轉發,控制著整個數據的流向,其數據流程如圖2所示。當收到用戶上下線、語音流、麥狀態等消息時透傳給所有在線的用戶,再更新用戶列表、對語音流進行轉碼和播放以及顯示當前麥的狀態。當收到搶麥消息時,如果用戶具有管理員權限,都以管理員優先的規則保證搶麥的成功。如果用戶是普通用戶權限,此時若麥處于空閑狀態則搶麥成功,反之,則搶麥失敗。如果搶麥成功,用戶可以開始說話,同時采集語音流數據進行編碼和實時發送到云服務器,再由云服務器轉發給所有在線用戶。
圖2 服務器數據流程
客戶端主要分為登錄與對講兩個模塊。首先,用戶在登錄模塊填寫用戶名、密碼、房間名、服務器地址信息后與云服務器建立連接。其次,進入對講模塊后,根據收到的數據類型做出不同的響應,比如位置消息在地圖上標注位置,上下線消息更新用戶列表并在地圖上增加或刪除用戶,狀態類消息在界面上顯示提醒信息,語音流消息進行解碼與播放。同時建立數據轉發機制,當位置、上下線發送變化時實時發送到云服務器。當需要說話時,發送搶麥消,如果搶麥成功,則進入對講流程,實時的采集語音流數據,并將編碼后的數據實時發送到云服務器,其功能流程如圖3所示。
圖3 客戶端功能流程
利用Object-C層實現音頻的錄制、播放、事件回調的接口封裝(AudioStream),C層實現音頻的錄制、播放、網絡傳輸。
(1)錄音
通過原生組件AudioUnit錄制原始PCM格式的音頻流,經Speex[8]編碼后再發送到服務器。
(2)播放
從網絡接收到音頻數據流,經Speex解碼轉換為采樣位數為16 bit的PCM格式音頻數據,再通過AudioUnit進行播放。
(1)配置音頻流[[AudioStream singleStream] setupStream:(NSDictionary *)info];
Info參數參考表1。
表1 視頻流Info中的鍵值對
(2)連接
[[AudioStream singleStream] connect];
(3)斷開連接
[[AudioStream singleStream] disconnect];
(4)請求麥
[[AudioStream singleStream] reqMic];
(5)釋放麥
[[AudioStream singleStream] freeMic];
(6)錄音
[[AudioStream singleStream] record];
(7)停止錄音
[[AudioStream singleStream] stopRecord];
(8)注冊音頻流的事件回調
[[AudioStream singleStream] setAudioStreamEventHandler:
fe_audio_event_handle_t*audio_event_handle_callback];
參數為事件回調函數,回調事件說明參考表2。
表2 回調的事件說明
JSON消息
{′code′:′0′,′cmd′:′xxx′,′msg′:′xxx′}
消息說明參考表3。
表3 JSON消息格式說明
cmd說明參考表4。
表4 消息類型說明
msg說明參考表5。
表5 消息狀態說明
(9)自定義消息
[[AudioStream singleStream]sendCustom Event:(id)
msg];
參數為自定義的消息類型。
(10)位置變化消息
通過自定義消息方式發送位置變化消息,具體消息格式如下:
{
"type":"location",
"data":{
"userName":"zxp",
"latitude":"23.171999",
"longitude":"113.462033"
}
}
消息說明參考表6。
表6 消息說明
系統測試中,采用單機部署方案,將系統部署在一臺騰訊云服務器,其服務器配置信息為:CentOS 7.2 64位、雙核CPU、2 G內存、5 M帶寬、1 T磁盤。以iOS手機,iPAD平板電腦作為測試客戶端,同時為了提升客戶端在不同機型下的適配性,分別在iPad系列,iPhone 5 s、6 s、7、8、X等不同設備上測試,所有的UI界面都能在這些主流機型正常的顯示。另外,分別在WiFi和4 G,3 G和2 G,網絡不穩定等3種情況下進行測試,從測試結果來看,在網絡信號穩定的情況下應用非常穩定順暢,在網絡信號一般但可用的情況下基本可用,不影響正常功能的使用,在網絡不穩定、時不時出現網絡斷開的情況下,應用會斷開,但一旦網絡可用則會自動重新與云服務器建立連接,恢復對講的所有功能。同時采用自動化測試工具,對服務器性能進行測試,其測結果見表7。
表7 服務器測試結果
從表7中可以看出,并發量從100增加到1000時,CPU利用率的變化為0.2%,0.3%,0.5%,說明服務器端為輕量型應用服務器,具有良好的性能。另外,消息數量從100增加到1000時,服務器響應時間都在毫秒之間且時間差為0.02 s,0.04 s,0.07 s,說明服務端具有較好消息處理能力,能夠達到指揮系統中對消息實時性的要求。
圖4登錄界面中,輸入賬號,密碼,房間名,服務器地址點擊登錄與服務器連接完成登錄操作。
圖4 登錄界面
圖5、圖6對講界面中,以地圖為基礎元素,在頂部顯示所有在線的用戶,同時在地圖上標注所有在線用戶的位置。
圖5 對講界面-搶麥成功
圖6 對講界面-其它人正在說話
隨著人工智能與移動互聯網技術在移動端的應用越來越廣泛,針對主流的iOS設備實現一套可視化指揮系統,既能增強指揮系統的功能,又能提供多元化的界面交互。另外,整個系統的設計與實現均來自真實項目中用戶的實際需求,同時在用戶環境下進行分布式集群化部署,當前系統仍在健壯的運行中,評價較好,未收到用戶反饋的功能性問題。因此本文為傳統指揮系統的升級提供了一套非常實用有效的解決方案。下一步將在另一主流的Android系統上實現相應的指揮系統。