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