Value Engineering ・161・ 基于Android平台的移动视频监控系统开发 Development of Mobile Video Surveillance System Based on Android Platform 毛鑫锋MAO Xin—feng;李磊Ll Lei;李正LI Zheng;陆海琪LU Hai-qi;郭左GUO Zuo (淮阴师范学院物理与电子电气工程学院,淮安223300) (School of Physics and Electronic Electrical Engineering,Huaiyin Normal University,Huaian 223300,China) 摘要:利用Android平台开放性、应用程序间平等且无界限特点,开发了移动平台的智能视频监控系统,Pc端通过使用 UDPSocket来实现服务器端和客户端之间的通信,以实现图像稳定传输;视频监控系统的客户端是通过TCP/IP协议来和服务器端进 行实时通信的;控制信息采用TCP传输层协议,解决了其对传输的可靠性高的要求,视频数据采用RTP应用层协议和UDP传输层协 议,解决了大量数据流的实时视频数据传输;测试结果表明整个系统运行稳定,连接图像速度快,在较高图片质量的情况下保证了稳 定流畅的帧率,达到了预期设想的效果 Abstract:Using android platform openness,equ ̄ity and no boundaries between application characteristics,the mobile platform of intelligent video surveillance system is developed,PC by using the UDPSocket to realize the communication between the client and server, in order to realize the image stabilization transmission.The real—time communication between client and server is realized by TCP/IP protoco1.Control information adopts the TCP ̄ansport layer protocol,which solves the high reliability of the transmission.Video data uses RTP application layer protocol and UDP transport layer protoco1.achieving large number real—time video data transmission.卟e test results show that the system rtlns stably and is fast in connecting image.It can ensure the stable and smooth frame rate in the case of high picture quality,achieving the expected effect. 关键词:安卓系统;视频监控;TCP/IP;RTP/IP Key words:Android;video surveillance;TCP/IP;RTP/IP 中图分类号:TP316 文献标识码:A 文章编号:1006—4311(2013)34—0161—03 0引言 规模和范围也在不断的扩大。人们对于安全保障的要求不 随着流媒体技术、无线网络技术以及视频压缩技术的 断的提高,从而使得过去以图文为主的内容服务应经不能 不断进步,视频监控技术得到了广泛的应用,同时,监控的 够满足用户的需求,取而代之的则是音视频多媒体服务。 作者简介:毛鑫锋(1992一),男,江苏南通人,本科在读,研究方向 为电子技术应用;李磊(通讯作者)(1979一),男,江苏徐 化、安装傻瓜化以及配置灵活化的优势,最重要的是还降 州人,讲师,硕士,研究方向为电子技术应用及信号处 低了成本。由于网络功能和视频压缩都被集中的保存在小 理的研究。 使用移动终端技术的视频监控系统,不仅具有体积小型 体积的设备中,因此,通过网络远程监控视频设备就可以 形,这种情况引起的故障很难排查,笔者曾遇到过。 器械管理、维护工作,从而最大程度地使用好医疗器械,这 3.4血氧饱和度测量异常首先,不应将血氧传感器 样既能确保护理工作的顺利进行,叉能保证医疗器械的使 探头与血压袖套放在同一手臂上进行测量。测量无创血压 用寿命,降低医疗成本。 时,袖套将会充气,足够高的袖套内气压将会阻断肱动脉 参考文献: 的血流,这样必然会影响基于脉搏法血氧饱和度的测量。 察环境,消除影响红光和红外光穿透的影响因素,如:患者 受测部位的尺寸大小、手指上有无污垢或涂有指甲油等同。 『1]Mc Connell EA,Nissen J H.The use of medical equipment 1995,2:341—348. Australian Registered Nurses[J].Journal of Clinical Nursing, 为了避免影响血氧饱和度的测量,应当观察血氧探头的观 by【2】周崇爱,王明英,徐彩霞.手术室医疗仪器管理体会『J].齐鲁 2006,12(121:1175. 测量时,如果有红外灯照射应当注意:存在强光或不可避 护理杂志,【3]云庆辉等.插件式多参数监护仪的功能简介【J].常规医疗装 免强光照射在血氧探头上时,应用不透光的布遮住探头。 4小结 【4】景维斌.医用多参数监护仪的结构原理与故障排除方法探 医疗器械的广泛使用减轻了护士的工作负荷、提高患 究fJ].中外医疗,2007,9(1):46—47. 者医疗质量和护理安全性。但随着医疗器械、装备的不断 [5】沈建新,陈春兰,冯子安.心电监护仪干扰排除方法探讨 发展,也需要当代护理人员不断学习医疗器械发展的新理 [J].设备运行与保障,2010,25(1):115. 备,2004,3(4). 论、新知识、新技术,掌握仪器的性能和操作规范,正确操 [6]仲继.多参数监护仪的日常维护和维修【J】.中国医学装备, 作,充分发挥仪器的功效[81。同时护理人员应有充分的器械 2010,6(7):50-52. 维护保养的意识,不能认为医疗器械的维护不属于自己的 [7]张乔冶.关于心电监护仪的应用及故障维修的研究【J】.科技 工作范围,仅仅是护士长或者医学工程科人员的职责,护 资讯,2011(071:128—130. 士作为医疗器械的主要操作者在掌握各仪器设备的维护、 [8】陶曙.临床护理中对医疗器械使用的训练与管理对策[J].护 保养知识的基础上更要协助专业技术人员共同做好医疗 理管理杂志,2002,2(41:38—39. ・162・ 价值工程 获得监控视频。目前,网络视频监控不仅面向企业级客户, 逐渐的,也通过视频监控为大众提供服务。如旅游景点人 流、景点查看、交通导航等。基于开放平台的移动视频监控 已经成为监控研究领域的热点【 。 1 Android操作系统的架构 最上层是面向用户的Application(应用程序),包括电 话程序、联系人程序、浏览器、地图、Email等。下面是 Application Framework,为开发人员提供访问核心组件所 使用的API,包含了丰富的View组件、Content Providers (内容提供器)用来访问另一个应用程序的数据(如联系 人),或者共享它们自己的数据、Resource Manager(资源管 理器)提供对资源的访问(如本地字符串,图形,布局文件 等)、Notiifcation Manager(通知管理器)、Activity Manager (活动管理器)等等嘲。 第三层是系统运行库,主要包含程序库和Android运 行库。程序库中包含了一些C/C++库,通过应用框架为开 发者提供服务,如:IJibc(从BSD继承来的标准C系统函 数库)、SGL(2D图形引擎)、SQLite(数据库引擎)以及媒体 库等等。 Android运行库包括了一个核心库,该核心库提供了 JAVA编程语言核心库的大多数功能。每一个Android应 用程序不仅都在自己的进程中运行,并且还拥有一个独立 的Dalvik虚拟机实例。设计的Da1ivk虽然是一个设备,但 却可以同时对多个虚拟系统进行高效的运行。Dalivk虚拟 机执行.dex文件(Dalvik的可执行文件),针对小内存使 用,对该格式文件进行了优化。虚拟机基于寄存器,所有类 都经由Java编译器编译,通过SDK中的dx工具转化成 .dex格式后由虚拟机执行。Dalivik虚拟机依赖于linux内 核的一些功能,比如线程机制和底层内存管理机制。 接下来一层是Hardware Abstract Layer(硬件抽象 层),在早期的架构图中看不到这一层。2008年,Patrick Brady就提出了Android HAL架构,它是为了把Linux kernel与上层框架完全隔开,让Android不至于过度依赖 Linux kernel,可以让Android Framework的开发能在不考 虑驱动程序的前提下进行。HAL仍以:l:.SO形式存在,Stub 向HAL“提供”操作函数,Runtime则是向HAL取得特定 模块的操作(operations o 2010年2月3日,Linux内核的 开发者将Android的驱动程序从Linux内核Staging tree (状态树)上去除,从此,Android与Linux核心开发就分开 了。最下面一层是Linux核心,Android的核心系统依赖于 Linux内核,如安全性、内存管理、进程管理、网络协议栈和 驱动模型o Android的Linux kernel也不是GNU/Linuxo Android将驱动程序移到userspace,使得Linux driver与 Linux kerne1分开,其结构如图1所示。 2协议选取 视频监控系统需要的传输数据分为两类:控制信息和 视频数据。尽管两类数据进行传输的时候都是基于IP协 议进行的,但是,他们分别采取了应用层协议和传输层协 议,这是由于两者的特性要求和实现软件的规模不同引起 的l31:第一,采用TCP传输层协议进行信息控制。之所以采 用TCP/IP的传输模式进行信息控制,这是由于控制信息 图1 Android操作系统框架图 虽然不要求较高的实时性,但是对于传输的可靠性要求却 十分高。因此,采用了有严格握手过程和重传机制的TCP 传输层协议。第二,传输视频数据时,采用RTP应用层协 议和UDP传输层协议。由于网络视频的时效性要求远远 高于可靠性,因此,本文采用了RTP应用层的传输协议支 持实时传输服务。在传输层,虽然UDP尽量采用交付方式 进行出数据传输,但是却没有拥塞控制,从而对于大数据 量的实时视频数据比较适合此方式,因此,本论文采用 UDP协议作为传输层协议。接收到上层应用程序的多媒 体信息码流后,经过RTP装配成数据包发送给下层,然后 在通过UDP/IP协议封装后形成 IP流。传输控制子系统 是基于RTP协议构建的,通过传输层通信使用的 UDPSocket完成。 3视频监控系统软件设计 在PC机上完成了对视频监控系统应用程序的开发, 主要采用图片接收方式来实现移动平台的智能视频监控 系统。 3.1服务器端软件设计服务器端的功能主要是初始 化摄像头和网络端口号以及主机地址,开启视频监控服 务,实时捕捉监控现场图像然后等待客户端的连接请求 。 与远程请求的手机客户端成功建立连接后,便开始向客户 端发送视频图像信息。服务器端的设计流程图如图2所 示。负责现场监控的Pc服务器端,需要对监控设备进行初 始化控制,采用Visual Studio编程环境下的c+4 ̄MFC语言 来实现。在进行网络通信传输时,系统是基于RTP协议构 建的,通过传输层通信使用的UDPSocket来实现服务器端 和客户端之间的通信,以实现图像稳定传输。Socket通信 的部分通过MFC语言中的CSocket类来实现,而摄像头 图像采集和控制则利用相应服务厂商提供的SDK进行实 现。视频的捕获中,设计了CCaptureVideo类,并将其实现, 通过对打开视频响应函数中该类的调用来实现对视频的 捕捉。在处理捕获的视频图像时,将捕获的视频图像转换 成连续的JPEG格式的图像存储在数据缓冲区中,该线程 不停地接受客户端的连接请求,将图像发送给客户端。 3.2手机客户端软件设计该视频监控系统的客户端 主要通过TCP/IP协议和服务器端进行实施通信的,同时 利用S0cket实现整个过程。作为通信链句柄的Socket网 络通信套接字用于描述端口和IP地址。通过Socket编程, Value Engineering ・163・ 开始 然后设置Socket通信的服务器的IP地址和通信端口 socket=new Socket(”192.168.1.101”。88881,成功与服务器建 初始化摄像头 立连接后,用InputStreamReader创建输入流,之后通过 读取图像数据并 BufferedReader读取出来,进行解析并显示在用户端界面 视频采集 放入缓冲区 上,数据接收完毕后,通过BufferedWriter写入接收完毕信 息并通过OutputStreamWriter发送至服务器,通信完毕后, 发送图像 通过OS.close0、is.close0、socket.close0关闭输入输出流,并 创建侦听套接字 关闭Socket端口,至此整个Socket通信完成。 由于服务器发送的是解码后的图片数据,因而客户端 将socket和本地IP N 接收到的数据流可以组成一幅图片 。通过Android提供 地址和端口绑定 是否停止监控 的BitmapFactory.decodeByteAllrayO函数,可以从接收到 Y 的数据流中得到Bitmap格式的对象。后文的处理皆针对 建立侦听队列 此Bitmap对象进行。 等待连接请求 关闭数据套接字 为了实现监控画面的显示,需继承View类,重写了 onDraw0方法。其中,在onDraw0方法中所实现的内容,将 接收客户连接, 创建数据套接字 结束数据线程 在客户端界面上显示出来。定义一个Bitmap对象,此对象 将在画布中绘制出来。当负责接收图片的线程接收到新的 图片数据时,将数据传给该对象,并在线程中调用 启动图像处理线程 关闭摄像头 Dosflnvalidate0方法,重绘画面。为了系统实现更好的显示 效果,本设计采用了双缓存机制.o显示的画面存储在原先 对象中,而接收的画面存储在变量另一对象中。如果网络 状况不好,并不能及时接收到新的数据,使得另一对象为 ‘ 图2服务器端的设计流程图 空,则原先的变量不更新,还将显示之前的画面,这样处理 应用程序会向网络发出请求或应答网络请求。Socket作为 将在一定程度上提高用户体验,减少网络状况不好情况下 通信的基石,支持TCPFIP协议的网络通信的基本操作单 的突发性黑屏。 元。本程序中使用的Socket传输模式,是面向连接的 根据Android的GUI系统,能够实现远程视频实时监 Socket操作使用TCP协议。Socket在该模式下,必须在客 视的用户界面,并提供播放器和用户之间的交互接口。 户端和服务端建立Socket连接,一旦建立好连接,便可以 Java和C语言框架共同组成了GUI系统,此系统对下层 在一个流接口进行打开、读、写以及关闭等操作,而另一端 通过调用显示输入、输出设备的驱动,将Android的软件 则以相同的顺序接受所有的信息。相比无连接而言,虽然 系统和底层的硬件联系起来:此系统对于上层提供了Java 面向连接的操作效率较低,但数据却具有更高的安全性。 层次的绘图接口,Android的Java框架层调用这些接口来 基于Android视频服务器系统终端,必须通过采用Socket 构建各种UI元素。此外,Java也可以调用绘图接rn。 网络通信技术接受来自监控前端的视频数据。Socket通信 4系统测试 使得监控前端和终端,通过网络连接实现数据的交互。 在无线wiif覆盖的区域内,在联想y460fwin7旗舰版 Socket连接初始化后才能进行Socket通信,其实现过程与 sp1)、三星galaxy nexHsf4.2.2)、Tp—link TL—WR740N等智能 面向连接的Socket通信相同。创建Socket服务线程,当产 手机上,对本监控系统进行了现场测试。结果表明,整个系 生监听后,服务主进程负责不断循环的监听接收到的请 统运行稳定,连接图像速度快,在较高图片质量的情况下 求,同时建立新的客户连接Socket,创建针对此Socket的 保证了稳定流畅的帧率,达到了预期设想的效果。因此,该 通信进程。在视频监控系统中创建Socket的过程,首先用 系统具有十分广阔的应用前景。 ServerSocket server ̄;ocket=null在服务器端创建一个 参考文献: Socket,然后用serverSocket=new ServerSoeket(88881监听端 【1]范亚男,葛卫丽.智能视频监控系统发展及应用[J].价值工 口8888。如果在该端口接收到客户端Socket的请求,则用. 程,2010,29(17):97-98. Socket client=serverSocket.accept0来创建~个Socket对象。 [21赵鹏辉,严瑛.视频监控系统设想和特点分析探讨[J】.电子 建立连接后,调用InputStreamReader来接收服务器端发 设计工程,2013,21(14):188—189. 送的视频数据,然后通过BufferedReader将此数据读取出 【3】赵世或,张盛,王玉辉等.智能手机操作系统及其Goo小 来。服务器从前端采集系统接收的数据通过 Android上的软件开发[J].煤炭技术,2011,30(4):197—199. BufferedWriter写入,并通过OutputStrearnWriter发送给网 [41赵臣兵,刘立柱.基于Ⅳ【1P协议的视频实时采集与传输的 研究[J1.微计算机信息,2006,19(16):124—126. 络客户端。通信完毕之后,通过OS.close 0、is.close 0和 『5]余腊生,刘勇.基于网络的智能视频监控系统的设计与实 socket.close0来关闭输出输入流并关闭Socket端口,服务 现『J].计算机工程与设计,2012,30(16):3879—3882. 器停止Socket通信。网络客户端终端作为接收数据的客 [6】徐友,章国宝.基于仪器管理的视频监控终端的设计与实 户端,首先用Socket socket=null在终端创建一个Sock ̄, 现『J1.电子设计工程,201 1,19(1 4):104—106.