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