基于Android智能手机远程视频监控系统的设计
2012-06-25陈立定任志刚
李 琴,陈立定,任志刚
(华南理工大学自动化科学与工程学院,广东 广州 510640)
视频监控具有悠久的历史,目前广泛应用于安防领域,对人身安全和家庭财产安全的保护起到了关键的作用[1]。传统的视频监控系统大部分采用PC作为监控终端,需要在指定的地点以及专用网络设备支持的环境下才能对目标现场进行监控,极大地限制了监控系统的灵活性和应用范围。而现代3G移动网络的飞速发展,使视频传输在智能手机上得以轻易实现[2]。为解决传统监控系统不灵活的弊端,让人们通过移动手机随时对家人和住房等进行视频安防检测,本文提出了一种基于Android平台智能手机的远程视频监控系统的设计方案。该系统主要采用Eclipse编程工具下的Android语言对其进行了设计与实现,只要在无线网络覆盖的范围内,人们就可以通过Android手机画面实现对目标现场的实时监控,极大方便了人们的生活。
1 Android操作系统
Android本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,它采用了软件堆层(Software Stack,又名软件叠层)的架构,主要分为底层Linux内核、中介软件和应用软件。
底层Linux内核只用来提供基本功能,用来提供系统的底层服务位于硬件和其他软件层之间。主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块[3]。
中介软件是操作系统与应用程序的沟通桥梁,应用分为函数层(Library)和虚拟机(Virtual Machine)。Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机。虚拟机技术使得Android的Java应用更接近于底层系统,效率更高,同时也使得Android的应用在被监控的情况下运行,安全性更高。Android开放的平台允许任何移动终端厂商加入到Android联盟中来,从而不存在以往任何阻碍移动产业创新的专有权障碍。Android是一个对第三方软件完全开放的平台,代码完全开源免费。
在Android平台上提供了2D、3D的图形支持、数据库支持(SQLite),集成了浏览器,可以开发出各式各样的应用。在应用程序层,Android本身附带了一些核心的应用程序,大大简化了Android应用程序的开发[4]。Android的应用程序是用Java语言开发的,其编程语言完全开源免费。
2 系统总体设计
本系统主要是从网络监控摄像头直接读取视频流,然后通过网络在手机上面进行实时播放和浏览,使用户可以随时随地通过智能手机对家居环境进行远程监视。监控系统采用C/S架构:客户端为基于Android平台的智能手机,支持3G和音频视频业务,具有联网功能,作为掌上终端设备实时显示远程家居监视画面;服务器端为1台带有监控摄像头的PC,部署在用户家中,负责连接、控制监控设备并与用户的智能手机进行通信[5]。系统的总体设计如图1所示。
图1 系统总体架构图
3 系统软件设计
3.1 服务器端软件设计
服务器端设计的主要功能是初始化摄像头设备和主机IP以及网络端口号,开启视频监控服务,实时捕捉现场图像并等待客户端的连接请求。在与远程请求的手机客户端成功建立连接后便开始向其发送视频图像信息。服务器端整体设计流程图如图2所示。
图2 服务器端整体设计流程图
负责现场监控的PC服务器端,由于需要对监控设备进行初始化控制,采用Visual Studio编程环境下的C++/MFC语言来实现。在进行网络通信传输时,本系统采用稳定可靠的TCP套接字(Socket)传输协议来实现服务器端和客户端之间的通信,以实现图像稳定传输。
TCP流式套接字的编程步骤如图3所示。
图3 Socket客户/服务器通信模型
Socket通信部分利用MFC中的CSocket类来实现,而摄像头控制及图像采集则通过服务厂商提供的SDK进行实现。在视频捕获中,设计了CCaptureVideo类,并将其实现,在打开视频响应函数中通过该类的调用实现视频的捕捉。在对捕获的视频图像进行处理时,创建一个新的TCP线程TcpThread,将捕获的视频图像转换成连续的JPG/JPEG格式的图像存储在数据缓冲区中,该线程持续不断地接受客户端的连接请求,将图像发送给客户端。
3.2 手机客户端软件设计
本系统手机客户端软件是基于Android操作系统智能手机开发的,在客户端软件设计过程中,主要利用Android软件平台的功能模块进行设计,在应用层利用Android提供的各种组件API接口进行设计实现。
手机客户端首次打开运行后,需要用户添加远程监控主机IP和网络端口号以实现与主机的网络通信连接,用户添加的注册信息可以保存到手机端以方便用户以后的操作。客户端的登录界面设计如图4所示。
图4 手机登录界面(截图)
手机客户端的设计采用Eclipse工具下的Android插件进行开发,程序的设计主要基于Java语言对其进行实现,并调用了Android的部分API函数库。Java语言编程特点是构建各个类来实现,为此构建了系统的主要类,分别为主程序入口类VideoMonitorClient,连接视频类ConnectServer,通信处理类 SocketVide,图像捕获处理类VideoMonitorView,以及线程类MonitorThread。其中SocketVide主要完成套接字Socket服务,通过绑定服务器IP地址和端口号与远程服务器进行通信连接。通信处理类SocketVide和图像捕获处理类VideoMonitorView被线程类MonitorThread调用,该类继承函数库类thread,进行视频处理线程管理。
程序实现结构是:建立远程视频请求连接时,程序开始调用 ConnectServer,然后在 ConnectServer里面调用MonitorView,VideoMonitorView新建 1个 mvideo对象,mvideo对象调用其方法DownloadThread处理线程函数和MonitorThread类创建的对象 thread,对象thread调用SocketVide类对象,这个类对象建立TCP连接,建立连接后对象thread调用里面的视频捕捉处理图像函数,最后保存并不断地将图像显示出来。客户端的程序设计流程图如图5所示。
图5 客户端整体设计流程图
3.3 测试结果
在无线网络覆盖区域内,对设计的整个系统进行了现场测试,服务器端为现场监控的带有摄像头的PC,客户端为基于Android的智能手机,结果表明,整个系统运行稳定,连接图像速度快,达到了预期设想的效果,服务器端和远程客户端监控画面分别如图6和图7所示。
4 结论
本系统针对当今最流行的Android智能手机,利用VS和Android环境编程对系统进行了设计与实现。手机客户端完全利用开源代码实现,具有超强的跨平台移植性和二次开发设计,紧扣目前主流技术,具有先进、可靠、经济、便利等特点。实践证明该系统具有较高的性能和可靠性。随着3G,4G移动网络传输速度和智能手机处理性能的大幅度提高,本手机远程监控系统必将有广阔的发展前景。
[1]王咸锋,林华.手机远程视频实时监控系统的设计与实现[J].微计算机信息,2007,23(34):111-112.
[2]吴建华,徐浩,丁月华.移动网络手机实时监控系统的设计与实现[J].计算机工程与设计,2010,31(10):2196-2198.
[3]耿东久,索岳,陈渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,31(2):560.
[4]农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.
[5]李裕,张玲华.手持无线视频监控系统的设计与实现[J].电视技术,2011,35(3):106-108.