产品推荐:水表|流量计|压力变送器|热电偶|液位计|冷热冲击试验箱|水质分析|光谱仪|试验机|试验箱


仪表网>技术中心>应用设计>正文

欢迎联系我

有什么可以帮您? 在线咨询

基于Android智能手机的远程视频监控的设计

   2012年03月21日 16:56  
  摘要:为了实现移动视频监控,提出了一种基于智能手机的远程视频监控系统。介绍了监控系统的体系结构和硬件平台,阐述了嵌入式操作系统Android应用程序的开发方法,并结合实际的应用系统,重点论述了Android平台上视频监控客户端的设计思路。移植了音视频解码库FFmpeg进行H.264视频解码,并采用OpenGLES实现实时视频显示。在无线局域网络的环境下对视频监控终端进行测试,达到了利用手机进行移动视频监控的目的。
  
  随着多媒体技术、视频压缩技术以及网络传输技术的发展,视频监控正朝着数字化、网络化、智能化方向持续发展,并越来越广泛地渗透到政府、教育、娱乐、医疗等领域。目前大部分的网络视频监控系统是基于WEB服务器的,监控终端为PC机,用户使用浏览器获取监控服务。由于互联网接入地点的限制,普通的网络视频监控无法满足用户在任何时间、任何地点获取监控信息的需求。
  
  本文介绍了一种以Android智能手机为终端的视频监控系统,该系统将传统的视频监控与移动多媒体技术相结合,真正实现了移动视频监控。
  
  1、系统的结构
  
  本文中的视频监控系统采用C/S体系结构。
  
  如图1所示,该系统由视频采集端(摄像头),视频服务器以及监控客户端等构成。
  
  图1视频监控系统总体结构
  
  视频服务器是整个系统的核心部分,它将摄像头采集到的原始模拟信号转换为数字信号,并对视频数据进行编码压缩,zui后通过Internet将压缩后的数据传送至客户端。客户端通过TCP/IP协议访问服务器,通过对视频数据的接收、解码以及显示,实现实时预览功能。客户端也可以根据用户需求发送控制命令,实现对前端设备的控制操作,如云台控制等。
  
  服务器部分采用Hi3515处理器芯片为硬件平台,并移植了嵌入式操作系统Linux作为整个系统运行的软件环境。Hi3515是一款基于ARM9处理器内核以及视频硬件加速引擎的高性能通信媒体处理器,具有H.264和MJPEG多协议编解码能力。
  
  本文以基于Hi3515的远程视频监控系统为例,重点介绍了Android平台上监控客户端的设计过程。
  
  2、Android开发介绍
  
  Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。Android采用软件堆层的架构,主要分为三部分:底层以Linux核心为基础,提供基本功能;中间层包括函数库和虚拟机;zui上层是各种应用软件。
  
  Android平台显着的开放性使其拥有众多的,应用日益丰富,不仅应用于智能手机,也向平板电脑、智能MP4方面急速扩张。
  
  Android应用程序用Java语言编写,每个应用程序都拥有一个独立的Dalvik虚拟机实例,这个实例驻留在一个由Linux内核管理的进程中。Dalvik支持JavaNativeInterface(JNI)编程方式,Android应用程序可以通过JNI调用C/C++开发的共享库,实现"Java+C冶的编程方式。开发Android应用程序zui简捷的方式是安装AndroidSDK和EclipseIDE.
  
  Eclipse提供了一个丰富的Java环境,Java代码通过编译后,AndroidDeveloperTools会将它打包,用于安装。
  
  3、监控客户端的设计与实现
  
  基于Android平台的监控客户端的总体框架如图2所示,分别由网络通讯模块、视频解码模块以及视频显示模块等构成。其中网络通讯模块接收来自服务器的所有数据,对数据进行解析,并将视频数据存入到视频缓冲区。视频解码模块负责从视频缓冲区中读取数据并送入H.264解码器进行解码。zui后,采用OpenGL图形库将解码后图像绘制到屏幕上实现视频播放。
  
  图2客户端总体框架。
  
  3.1H.264视频解码器的实现
  
  在网络视频监控系统中,视频的编码压缩是非常必要和关键的工作,没有经过压缩的海量数据对网络传输系统来说是无法承受的[7].H.264是目前的视频压缩算法,它由视频编码层VCL和网络提取层NAL两部分组成。其中,VCL进行视频编解码,包括运动补偿预测、变换编码和熵编码等;NAL采用适当的格式对VCL视频数据进行封装打包。H.264标准对编码效率和图像质量进行了诸多改进,且抗丢包性能和抗误码性能好,适应各种网络环境,非常适合于对压缩率要求高,网络环境复杂的移动视频监控。
  
  客户端接收的数据是经过H.264编码压缩后的数据,需要经过H.264解码还原视频图像后才能够显示,因此,H.264解码器是客户端的关键部分。这里移植了开源的音视频解码库FFmpeg进行H.264解码。在Android应用程序中使用FFmpeg的步骤如下:
  
  (1)在Linux环境下安装Android原生开发工具包NDK.
  
  (2)创建jni文件夹,将FFmpeg工程复制到文件夹下。创建H264Decoder.c源文件,提供Android程序使用的接口函数,文件需要包括JNI的操作头文件<jni.h>,且函数名有固定的形式,如com_ipcamera_PreView_H264Decoder表示com_ipcamera包下面PreView类中H264Decoder函数。
  
  (3)创建Android.mk文件,该文件包含正确构建和命名库的MakeFile说明。分别在LOCAL_SRC_FILES和LOCAL_C_INCLUDES项中添加编译模块所需源文件和头文件目录。
  
  (4)执行NDK开发包中的ndk鄄build脚本,生成对应的。so共享库,并复制到Android工程下的libs/armeabi目录下。
  
  (5)在Android程序中通过System.loadLibrary("库名称冶)加载所需要的库,加载成功后,应用程序就可以使用H264Decoder函数进行H.264的解码。
  
  3.2OpenGLES绘图
  
  为了提高绘图的效率,客户端使用OpenGLES实现视频图像的显示。OpenGLES是一个2D/3D轻量图形库,是跨平台图形库OpenGL的简化版。
  
  OpenGLES专门针对手机、PDA和游戏主机等嵌入式设备而设计,目的是为了充分利用硬件加速,适合复杂的、图形密集的程序。
  
  Android中使用GLSurfaceView来显示OpenGL视图,该类继承至SurfaceView并包含了一个专门用于渲染3D的接口Renderer,主要通过实现ON鄄DrawFrame、onSurfaceChanged以及onSurfaceCreated等方法构建所需的Renderer.解码器解码一帧图像后,调用GLSurfaceView的requeSTRender方法通知OpenGLES完成视频图像的显示。使用OpenGL绘图的核心代码如下:
  
  3.3多线程设计
  
  视频数据的接收和解码都是复杂、持续的过程,如果其中一个过程出现阻塞会影响整个程序的运行,因此,客户端使用多线程实现数据接收和视频解码的并行处理。在整个程序运行过程中,主线程响应用户操作,负责屏幕刷新工作,并创建两个子线程:数据接收和视频解码子线程,处理过程如图3所示。
  
  图3子线程处理流程。
  
  在Java中,多线程的实现有两种方式:扩展java.lang.Thread类或实现java.lang.Runnable接口。这里通过继承Thread类并覆写run()方法实现两个子线程。在多线程的应用中关键是处理好线程之间的同步问题,以解决对共享存储区的访问冲突,避免引起线程甚至整个系统的死锁。Java多线程主要利用synchronized关键字和wait()、notify()等方法实现线程间的同步。
  
  4、结束语
  
  目前,该系统已经在实验室进行测试,服务器输出15fpsCIF格式的H.264视频数据,客户端安装在Android手机上,通过WIFI接入无线局域网中与服务器建立连接,用户界面如图4所示,可实现远程视频预览、云台控制等操作。
  
  图4监控客户端
  
  随着3G时代的到来,数据传输速度有了大幅提升,为移动实时视频业务的实现创造更好的条件。
  
  手机用户可以直接接入3G网络访问视频监控服务器,实现移动在线的实时视频监控。由此可见,手机视频监控市场潜力巨大,具有很好的发展前景。

免责声明

  • 凡本网注明“来源:仪表网”的所有作品,均为浙江兴旺宝明通网络有限公司-仪表网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:仪表网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其它来源(非仪表网)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
联系我们

客服热线: 15267989561

加盟热线: 15267989561

媒体合作: 0571-87759945

投诉热线: 0571-87759942

关注我们
  • 下载仪表站APP

  • Ybzhan手机版

  • Ybzhan公众号

  • Ybzhan小程序

企业未开通此功能
详询客服 : 0571-87759942