【摘 要】近年來,隨著生活節(jié)奏的加快,移動(dòng)手持設(shè)備的普及,以及人們自我保護(hù)意識(shí)的增強(qiáng),使得基于移動(dòng)手持設(shè)備的視頻監(jiān)控系統(tǒng)需求量大量增加。本文針對(duì)目前需求現(xiàn)狀,借助Android系統(tǒng)的用戶界面編程、H.264解碼器、以及Android網(wǎng)絡(luò)與通信等技術(shù)設(shè)計(jì)了一款遠(yuǎn)程視頻監(jiān)控系統(tǒng)。用戶可根據(jù)調(diào)時(shí)操作階段選擇觀看監(jiān)控視頻,為外出者提供了極大的方便。
【關(guān)鍵詞】wifi;Android;視頻監(jiān)控
1.引言
Android系統(tǒng)采用了開源的Linux操作系統(tǒng),底層使用了訪問硬件速度最快的C語(yǔ)言,應(yīng)用層采用了簡(jiǎn)單而強(qiáng)大的Java語(yǔ)言,這使得Android在一眾手機(jī)操作系統(tǒng)中尤為突出。在這個(gè)移動(dòng)互聯(lián)網(wǎng)時(shí)代,Android系統(tǒng)更是具有無限的潛能。良好的無線網(wǎng)絡(luò)環(huán)境,配合人們危機(jī)意識(shí)增強(qiáng)的現(xiàn)象及Android終端的普及促使產(chǎn)生了利用手機(jī)隨時(shí)隨地可進(jìn)行遠(yuǎn)程監(jiān)控房屋財(cái)產(chǎn)等的需求。因此,設(shè)計(jì)與研究基于wifi網(wǎng)絡(luò)環(huán)境面向Android的遠(yuǎn)程視頻監(jiān)控系統(tǒng),具有明顯的現(xiàn)實(shí)性意義。
本文所設(shè)計(jì)的平臺(tái)是基于Google開發(fā)的開源操作系統(tǒng)Android,并利用java web技術(shù)與wifi網(wǎng)絡(luò)環(huán)境實(shí)現(xiàn)的。本系統(tǒng)為經(jīng)常加夜班或者出差的白領(lǐng)等具有相同需求人們提供了方便,可供大家進(jìn)行調(diào)時(shí)監(jiān)控,以便更加安心的專注于工作學(xué)習(xí)等。
2.系統(tǒng)分析與設(shè)計(jì)
2.1 系統(tǒng)設(shè)計(jì)思想
遠(yuǎn)程視頻監(jiān)控系統(tǒng)是基于數(shù)字視頻監(jiān)控系統(tǒng)的遠(yuǎn)程應(yīng)用系統(tǒng),通常有基于PC技術(shù)、基于網(wǎng)絡(luò)攝像機(jī)和基于嵌入式Web服務(wù)器等幾種遠(yuǎn)程監(jiān)控系統(tǒng)的實(shí)現(xiàn)方式。
基于PC的多媒體遠(yuǎn)程監(jiān)控系統(tǒng)一般由圖像信號(hào)采集、輸出控制、視頻圖像處理、信號(hào)傳輸、視頻圖像遠(yuǎn)程接收及遠(yuǎn)程控制等幾部分組成。
“網(wǎng)絡(luò)攝像機(jī)”是一種可以用IP地址識(shí)別的、集攝像和圖像壓縮并按網(wǎng)絡(luò)協(xié)議傳輸圖像數(shù)據(jù)的智能攝像機(jī),它可以完成系統(tǒng)功能,而不會(huì)帶來額外的維護(hù)需求。在對(duì)視頻實(shí)時(shí)性要求不高的條件下,網(wǎng)絡(luò)攝像機(jī)可以滿足監(jiān)控要求。監(jiān)控中心服務(wù)器、監(jiān)視終端和網(wǎng)絡(luò)攝像機(jī)構(gòu)成一個(gè)Intranet網(wǎng),利用網(wǎng)絡(luò)協(xié)議提供的各種管理工具可以有效地管理各個(gè)監(jiān)控點(diǎn)的圖像信息。
隨著生活節(jié)奏的加快和手持終端設(shè)備的普及,利用PC實(shí)現(xiàn)遠(yuǎn)程視頻監(jiān)控已經(jīng)不能滿足人們的需求了。近年來基于Android平臺(tái)的監(jiān)控系統(tǒng)層出不窮,但是大多軟件功能都不完善,偏向?qū)崟r(shí)監(jiān)控為主。
然而,對(duì)于現(xiàn)在的大多數(shù)人而言,實(shí)時(shí)監(jiān)控占用了太大的時(shí)間和精力,正常情況下,用戶不可能進(jìn)行24小時(shí)的監(jiān)控。
本系統(tǒng)將采用調(diào)時(shí)監(jiān)控的方法,結(jié)合現(xiàn)在遍布的wifi網(wǎng)絡(luò),利用IP地址可識(shí)別的攝像頭,將畫面存入服務(wù)器,用戶根據(jù)自己特有的密令進(jìn)行調(diào)用,從而滿足用戶真正的隨時(shí)隨地讀取監(jiān)控視頻。
2.2 系統(tǒng)構(gòu)架
本系統(tǒng)Android客戶端采用系統(tǒng)自帶的SQLite數(shù)據(jù)庫(kù),服務(wù)器端使用開源的MySQL數(shù)據(jù)庫(kù)。服務(wù)器端Servlet響應(yīng)HTTPRequest請(qǐng)求,通過Dao接口訪問后臺(tái)數(shù)據(jù)庫(kù),并將結(jié)果返回,Servlet獲取結(jié)果后,將視頻流發(fā)送至客戶端。為了使程序代碼簡(jiǎn)潔易懂,便于管理和二次開發(fā),系統(tǒng)采用MVC+DAO的設(shè)計(jì)模式及分層開發(fā)思想。系統(tǒng)組成如圖1-1所示。
圖1-1 系統(tǒng)整體框架圖
3.客戶端設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)的客戶端分別由網(wǎng)絡(luò)通訊模塊、視頻解碼與顯示模塊等構(gòu)成。用戶登錄后,通過調(diào)時(shí)功能獲取相應(yīng)的視頻段名稱,由網(wǎng)絡(luò)通訊模塊接受來自服務(wù)器的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行解析,并將數(shù)據(jù)暫存于緩沖區(qū),之后由視頻解碼模塊負(fù)責(zé)從緩沖區(qū)中讀取數(shù)據(jù)并通過H.264解碼器進(jìn)行解碼。最后通過圖形庫(kù)將解碼后圖像繪制到屏幕上實(shí)現(xiàn)視頻播放。
3.1 客戶端界面設(shè)計(jì)
遠(yuǎn)程視頻監(jiān)控系統(tǒng)的客戶端界面設(shè)計(jì)主要由Android的GUI系統(tǒng)實(shí)現(xiàn)的,負(fù)責(zé)提供交互接口。GUI系統(tǒng)提供了Java語(yǔ)言框架和C語(yǔ)言框架組成,對(duì)下層通過調(diào)用顯示輸入、輸出設(shè)備將軟件與底層硬件聯(lián)系起來,對(duì)上層則提供了Java層次的繪圖接口。圖2-1為登錄界面運(yùn)行結(jié)果。
圖2-1 登錄界面
3.2 顯示模塊
系統(tǒng)運(yùn)行時(shí)首先獲取Android平臺(tái)網(wǎng)絡(luò)環(huán)境,若網(wǎng)絡(luò)環(huán)境不是wifi網(wǎng)絡(luò),則以對(duì)話框的形式提醒用戶,避免造成流量損失。
獲取Android終端wifi網(wǎng)絡(luò)環(huán)境的代碼如下:
WifiManager wifiManager;
wifiManager=(WifiManager)this.getSystemService(Service.WIFI_SERVICE);
顯示模塊主要是用戶輸入查詢時(shí)間和反饋的查詢結(jié)果的顯示。為了提高用戶體驗(yàn),本系統(tǒng)利用Android的線程安全特性,運(yùn)用了多線程和異步等方式。其中客戶端請(qǐng)求并顯示的流程圖如3-1所示。
圖3-1 客戶端請(qǐng)求與顯示流程圖
Android客戶端連接后臺(tái)服務(wù)器的關(guān)鍵代碼如下:
HttpPost request = HttpUtil.getHttp-
Post(url);//根據(jù)url獲得HttpPost對(duì)象
String result = null;
try{//獲得響應(yīng)對(duì)象
HttpResponse response=HttpUtil.getHttpResponse(request);
// 判斷是否請(qǐng)求成功
if(response.getStatusLine().getStatusCode()==200){
result=EntityUtils.toString(res-
ponse.getEntity());//獲得響應(yīng)
return result;
}
}……
3.3 網(wǎng)絡(luò)通訊模塊與視頻解碼模塊實(shí)現(xiàn)
當(dāng)系統(tǒng)進(jìn)行網(wǎng)絡(luò)搜索時(shí),需要網(wǎng)絡(luò)連接,因此需要確定當(dāng)前網(wǎng)絡(luò)狀態(tài),程序會(huì)使用android.net.ConnectivityManager 類來檢查網(wǎng)絡(luò)連接,Android 系統(tǒng)是運(yùn)行在Linux 內(nèi)核上的,有自己的一套嚴(yán)格的安全及權(quán)限機(jī)制。由于本模塊要用到網(wǎng)絡(luò)連接和獲取網(wǎng)絡(luò)狀態(tài),這都需要具有相應(yīng)的權(quán)限,所以必須在AndroidMainifest.Xml中聲明所需的權(quán)限,否則無法正常運(yùn)行,且程序不會(huì)報(bào)錯(cuò),只能通過捕獲異常來發(fā)現(xiàn)這一問題。具體的聲明如下:
允許應(yīng)用程序訪問( 獲?。?網(wǎng)絡(luò)信息。
本系統(tǒng)服務(wù)器終端要接受來自監(jiān)控前端的視頻數(shù)據(jù),采用Socket網(wǎng)絡(luò)通信技術(shù)。在進(jìn)行Socket前必須對(duì)其進(jìn)(下轉(zhuǎn)第23頁(yè))(上接第19頁(yè))行初始化,創(chuàng)建Socket服務(wù)線程。當(dāng)監(jiān)聽產(chǎn)生后,主進(jìn)程負(fù)責(zé)不斷循環(huán)地監(jiān)聽接收到的請(qǐng)求并建立新的客戶連接,創(chuàng)建針對(duì)此Socket的通信進(jìn)程。其中的主要代碼如下:
public class Socket ConnectionMana-
gement
{
protected static Socket socket=null;
public static boolean establishConnection(String ipAddress,int port)
{
try
{
socket = new Socket(InetAddress.getByName(ipAddress),port);
}catch(UnknownHostException e)
{
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
//TODO Auto-generated catch block
e.printStackTrace();
}
return socket.isConnected();
}
public static boolean isConnected()
{
if (socket != null)
return socket.isConnected();
else
return false;
}
public static Socket getInstance()
{
return socket;
}
}
本系統(tǒng)運(yùn)用的是H.264解碼技術(shù),它是在MPEG-4技術(shù)的基礎(chǔ)之上建立起來的,其編解碼流程主要包括5個(gè)部分:幀間和幀內(nèi)預(yù)測(cè)、變換和反變換、量化和反量化、環(huán)路濾波、熵編碼。
技術(shù)實(shí)現(xiàn)是在Android操作系統(tǒng)上封裝編譯生成Android底層的動(dòng)態(tài)鏈接庫(kù),從而實(shí)現(xiàn)H.264標(biāo)準(zhǔn)解碼。這里采用X264解碼器,可對(duì)GIF格式圖像實(shí)時(shí)編碼。
4.結(jié)論
根據(jù)移動(dòng)終端的發(fā)展現(xiàn)狀和移動(dòng)用戶的需求,本文基于wifi網(wǎng)絡(luò)面向Android開發(fā)了遠(yuǎn)程視頻監(jiān)控平臺(tái),該系統(tǒng)目前仍在測(cè)試運(yùn)行中。通過在模擬器上仿真測(cè)試以及在Android手機(jī)終端上的實(shí)際檢測(cè),該系統(tǒng)運(yùn)行效果穩(wěn)定、整體性能較好。該系統(tǒng)能夠?yàn)橐苿?dòng)用戶提供方便、實(shí)用、靈活、快捷的遠(yuǎn)程監(jiān)控,具有非常實(shí)用的價(jià)值。隨著智能手機(jī)的普及和wifi網(wǎng)絡(luò)的發(fā)展,該系統(tǒng)具有廣泛的應(yīng)用前景。
參考文獻(xiàn):
[1]郭宏志著.Android應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2010,6.
[2]吳亞峰,蘇亞光著.Android應(yīng)用案例開發(fā)大全[M].北京:人民郵電出版社,2011,9.
[3]吳亞峰,索伊娜等著.Android核心技術(shù)與實(shí)例詳解[M].北京:電子工業(yè)出版社,2010,10.
本文受清華攜手Google助力西部教育項(xiàng)目之大學(xué)生科技創(chuàng)新項(xiàng)目部分資助。
作者簡(jiǎn)介:李巧巧,女,現(xiàn)就讀于青海大學(xué)計(jì)算機(jī)技術(shù)與應(yīng)用系,研究方向:計(jì)算機(jī)技術(shù)與應(yīng)用。