基于Android的温室智能视频监控系统研究
摘 要:为了实现温室环境视频监控的移动化和智能化,文中研究了一种基于Android的视频监控系统。介绍了该温室环境视频监控系统的整体架构,阐述了视频解码与数据通信等关键技术,重点论述了视频监控手机端Android软件的设计方案。并在WiFi和4G两种网络环境下分别做了测试,测试结果表明,该系统运行稳定可靠,可实现智能手机对温室大棚进行远程视频监控的目的。
关键词:Android系统;智能手机;视频监控;网络通信
0 引 言
我国目前已成为世界设施作物栽培第一大国[1],特别是近来环境污染、食品安全等问题格外突出,实现温室农作物生长过程实时监控是解决以上问题的关键。随着物联网、移动互联网等技术的快速发展,温室智能监控、食品溯源等系统已成为研究热点。传统的视频监控系统需要复杂的综合布线,多采用视频服务器和远程PC端访问模式,具有施工难度大、价格昂贵和监控灵活度差等问题;在Android平台的智能终端(安装了Android视频监控应用软件的智能设备,以下简称移动端)上开发视频监控App,使用WiFi或4G网络,可以实现温室环境随时随地的远程监控功能。
1 系统架构设计
基于Android的温室智能视频监控系统采用C/S架构[2],整个系统由无线网络摄像头、云台、视频服务器(以下简称服务端)、无线路由器、基础网络和智能手机等组成,其架构图如图1所示。PC监控端和移动端皆可通过Internet建立连接[3];移动端在本地WiFi网络环境下可搜索设备的ID号,通过选择某监控设备的ID号访问云台,控制相应摄像头,实现视频的实时监控。移动端通过触屏方式控制云台,实现摄像头的上、下、左、右移动,垂直90度、水平360度的移动近乎可以实现全方位监控功能[4],系统中常用摄像头云台控制指令见表1所列。本文重点论述移动端Android系统监控软件的方案设计。
2 关键技术
视频数据传输由RTP(Real-time Transport Protocol,RTP)与UDP协议共同完成,RTP协议负责控制与服务类信息传输,由UTP协议进行打包、分组传输,RTP/UTP协议流程图如图2所示。Android系统采用Socket机制控制TCP/IP协议实现网络通信的可靠连接,Socket是一种跨平台、支持异构语言的编程方式,客户端程序使用Socket类,服务端程序使用Server Socket类[5]。移动端通过get Server IP()方法获取服务端地址,并设置相应端口号,用户验证并连接成功后,服务端视频数据采用输入流方式进行传入,然后使用Buffered Reader()方法读出数据,经视频数据编码处理后显示在界面上,通信结束后再调用socket.closed()方法结束通信。系统采用H.264/AVC方法进行视频硬件编码,H.264编码标准能适应多种网络如高、低宽带,无线超窄带宽[6],移动端数据帧解码的方法为:int DecodeH264Frame( byteArray H264, int bFrame, byteArray yuv, int len, intArray size)。
3 系统服务端设计
系统服务端采用C#/CGI方式设计,CGI是外部应用程序与Web服务器之间的标准接口,是信息传递的规程。服务端实现视频数据的采集、存储及远程访问功能,通过网络获取视频数据流程如图3所示,实例HttpWebRequest类调用WebRequest Create(string requestUriString)发送网络请求,用GetReponseStream()方法获取Internet资源响应,实例化StreamReader类,StreamReader reader = new StreamReader(stream,Encoding.Default),读取特定编码数据,在Picturebox控件上显示图片信息,定时调用图像处理代码的Timer间隔在110 ms时即可实现视频实时采集。
4 系统移动端设计