基于wifi面向Android的远程视频监控客户端开发

2013-04-29 00:44李巧巧
网友世界 2013年9期
关键词:视频监控

【摘 要】近年来,随着生活节奏的加快,移动手持设备的普及,以及人们自我保护意识的增强,使得基于移动手持设备的视频监控系统需求量大量增加。本文针对目前需求现状,借助Android系统的用户界面编程、H.264解码器、以及Android网络与通信等技术设计了一款远程视频监控系统。用户可根据调时操作阶段选择观看监控视频,为外出者提供了极大的方便。

【关键词】wifi;Android;视频监控

1.引言

Android系统采用了开源的Linux操作系统,底层使用了访问硬件速度最快的C语言,应用层采用了简单而强大的Java语言,这使得Android在一众手机操作系统中尤为突出。在这个移动互联网时代,Android系统更是具有无限的潜能。良好的无线网络环境,配合人们危机意识增强的现象及Android终端的普及促使产生了利用手机随时随地可进行远程监控房屋财产等的需求。因此,设计与研究基于wifi网络环境面向Android的远程视频监控系统,具有明显的现实性意义。

本文所设计的平台是基于Google开发的开源操作系统Android,并利用java web技术与wifi网络环境实现的。本系统为经常加夜班或者出差的白领等具有相同需求人们提供了方便,可供大家进行调时监控,以便更加安心的专注于工作学习等。

2.系统分析与设计

2.1 系统设计思想

远程视频监控系统是基于数字视频监控系统的远程应用系统,通常有基于PC技术、基于网络摄像机和基于嵌入式Web服务器等几种远程监控系统的实现方式。

基于PC的多媒体远程监控系统一般由图像信号采集、输出控制、视频图像处理、信号传输、视频图像远程接收及远程控制等几部分组成。

“网络摄像机”是一种可以用IP地址识别的、集摄像和图像压缩并按网络协议传输图像数据的智能摄像机,它可以完成系统功能,而不会带来额外的维护需求。在对视频实时性要求不高的条件下,网络摄像机可以满足监控要求。监控中心服务器、监视终端和网络摄像机构成一个Intranet网,利用网络协议提供的各种管理工具可以有效地管理各个监控点的图像信息。

随着生活节奏的加快和手持终端设备的普及,利用PC实现远程视频监控已经不能满足人们的需求了。近年来基于Android平台的监控系统层出不穷,但是大多软件功能都不完善,偏向实时监控为主。

然而,对于现在的大多数人而言,实时监控占用了太大的时间和精力,正常情况下,用户不可能进行24小时的监控。

本系统将采用调时监控的方法,结合现在遍布的wifi网络,利用IP地址可识别的摄像头,将画面存入服务器,用户根据自己特有的密令进行调用,从而满足用户真正的随时随地读取监控视频。

2.2 系统构架

本系统Android客户端采用系统自带的SQLite数据库,服务器端使用开源的MySQL数据库。服务器端Servlet响应HTTPRequest请求,通过Dao接口访问后台数据库,并将结果返回,Servlet获取结果后,将视频流发送至客户端。为了使程序代码简洁易懂,便于管理和二次开发,系统采用MVC+DAO的设计模式及分层开发思想。系统组成如图1-1所示。

图1-1 系统整体框架图

3.客户端设计与实现

本系统的客户端分别由网络通讯模块、视频解码与显示模块等构成。用户登录后,通过调时功能获取相应的视频段名称,由网络通讯模块接受来自服务器的数据,对数据进行解析,并将数据暂存于缓冲区,之后由视频解码模块负责从缓冲区中读取数据并通过H.264解码器进行解码。最后通过图形库将解码后图像绘制到屏幕上实现视频播放。

3.1 客户端界面设计

远程视频监控系统的客户端界面设计主要由Android的GUI系统实现的,负责提供交互接口。GUI系统提供了Java语言框架和C语言框架组成,对下层通过调用显示输入、输出设备将软件与底层硬件联系起来,对上层则提供了Java层次的绘图接口。图2-1为登录界面运行结果。

图2-1 登录界面

3.2 显示模块

系统运行时首先获取Android平台网络环境,若网络环境不是wifi网络,则以对话框的形式提醒用户,避免造成流量损失。

获取Android终端wifi网络环境的代码如下:

WifiManager wifiManager;

wifiManager=(WifiManager)this.getSystemService(Service.WIFI_SERVICE);

显示模块主要是用户输入查询时间和反馈的查询结果的显示。为了提高用户体验,本系统利用Android的线程安全特性,运用了多线程和异步等方式。其中客户端请求并显示的流程图如3-1所示。

图3-1 客户端请求与显示流程图

Android客户端连接后台服务器的关键代码如下:

HttpPost request = HttpUtil.getHttp-

Post(url);//根据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 网络通讯模块与视频解码模块实现

当系统进行网络搜索时,需要网络连接,因此需要确定当前网络状态,程序会使用android.net.ConnectivityManager 类来检查网络连接,Android 系统是运行在Linux 内核上的,有自己的一套严格的安全及权限机制。由于本模块要用到网络连接和获取网络状态,这都需要具有相应的权限,所以必须在AndroidMainifest.Xml中声明所需的权限,否则无法正常运行,且程序不会报错,只能通过捕获异常来发现这一问题。具体的声明如下:

允许应用程序访问( 获取) 网络信息。

本系统服务器终端要接受来自监控前端的视频数据,采用Socket网络通信技术。在进行Socket前必须对其进(下转第23页)(上接第19页)行初始化,创建Socket服务线程。当监听产生后,主进程负责不断循环地监听接收到的请求并建立新的客户连接,创建针对此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;

}

}

本系统运用的是H.264解码技术,它是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编码。

技术实现是在Android操作系统上封装编译生成Android底层的动态链接库,从而实现H.264标准解码。这里采用X264解码器,可对GIF格式图像实时编码。

4.结论

根据移动终端的发展现状和移动用户的需求,本文基于wifi网络面向Android开发了远程视频监控平台,该系统目前仍在测试运行中。通过在模拟器上仿真测试以及在Android手机终端上的实际检测,该系统运行效果稳定、整体性能较好。该系统能够为移动用户提供方便、实用、灵活、快捷的远程监控,具有非常实用的价值。随着智能手机的普及和wifi网络的发展,该系统具有广泛的应用前景。

参考文献:

[1]郭宏志著.Android应用开发详解[M].北京:电子工业出版社,2010,6.

[2]吴亚峰,苏亚光著.Android应用案例开发大全[M].北京:人民邮电出版社,2011,9.

[3]吴亚峰,索伊娜等著.Android核心技术与实例详解[M].北京:电子工业出版社,2010,10.

本文受清华携手Google助力西部教育项目之大学生科技创新项目部分资助。

作者简介:李巧巧,女,现就读于青海大学计算机技术与应用系,研究方向:计算机技术与应用。

猜你喜欢
视频监控
基于嵌入式Linux的视频监控系统的设计与实现
基于HTML5的视频监控微课设计浅析
智能视频检索技术在校园安防建设中的发展应用