Android系统开发全攻略(二)
一、Android智能手机远程视频监控的设计
摘要:为了实现移动视频监控,提出了一种基于智能手机的远程视频监控系统。介绍了监控系统的体系结构和硬件平台,阐述了嵌入式操作系统Android 应用程序的开发方法,并结合实际的应用系统,重点论述了Android 平台上视频监控客户端的设计思路。移植了音视频解码库FFmpeg 进行H. 264 视频解码,并采用OpenGL ES 实现实时视频显示。在无线局域网络的环境下对视频监控终端进行测试,达到了利用手机进行移动视频监控的目的。
随着多媒体技术、视频压缩技术以及网络传输技术的发展,视频监控正朝着数字化、网络化、智能化方向持续发展,并越来越广泛地渗透到政府、教育、娱乐、医疗等领域。目前大部分的网络视频监控系统是基于WEB 服务器的, 监控终端为PC机,用户使用浏览器获取监控服务。由于互联网接入地点的限制,普通的网络视频监控无法满足用户在任何时间、任何地点获取监控信息的需求。
参阅相关系列文章
Android系统开发全攻略(一)
本文介绍了一种以Android 智能手机为终端的视频监控系统,该系统将传统的视频监控与移动多媒体技术相结合,真正实现了移动视频监控。
1系统的结构
本文中的视频监控系统采用C/ S 体系结构。
如图1 所示,该系统由视频采集端( 摄像头),视频服务器以及监控客户端等构成。
图1视频监控系统总体结构
视频服务器是整个系统的核心部分,它将摄像头采集到的原始模拟信号转换为数字信号,并对视频数据进行编码压缩,最后通过Internet 将压缩后的数据传送至客户端。客户端通过TCP/ IP 协议访问服务器,通过对视频数据的接收、解码以及显示,实现实时预览功能。客户端也可以根据用户需求发送控制命令,实现对前端设备的控制操作,如云台控制等。
服务器部分采用Hi3515 处理器芯片为硬件平台,并移植了嵌入式操作系统Linux 作为整个系统运行的软件环境。Hi3515 是一款基于ARM9 处理器内核以及视频硬件加速引擎的高性能通信媒体处理器,具有H. 264 和MJPEG 多协议编解码能力。
本文以基于Hi3515 的远程视频监控系统为例,重点介绍了Android 平台上监控客户端的设计过程。
2Android 开发介绍
Android 是基于Linux 开放性内核的操作系统,是Google 公司在2007 年11 月5 日公布的手机操作系统。Android 采用软件堆层的架构,主要分为三部分:底层以Linux 核心为基础,提供基本功能;中间层包括函数库和虚拟机;最上层是各种应用软件。
Android 平台显着的开放性使其拥有众多的开发者,应用日益丰富,不仅应用于智能手机,也向平板电脑、智能MP4 方面急速扩张。
Android 应用程序用Java 语言编写,每个应用程序都拥有一个独立的Dalvik 虚拟机实例,这个实例驻留在一个由Linux 内核管理的进程中。Dalvik支持Java Native Interface(JNI)编程方式,Android 应用程序可以通过JNI 调用C/ C++开发的共享库,实现“Java+C冶的编程方式。开发Android 应用程序最简捷的方式是安装Android SDK 和Eclipse IDE.
Eclipse 提供了一个丰富的Java 环境,Java 代码通过编译后,Android Developer Tools 会将它打包,用于安装。
3 监控客户端的设计与实现
基于Android 平台的监控客户端的总体框架如图2 所示,分别由网络通讯模块、视频解码模块以及视频显示模块等构成。其中网络通讯模块接收来自服务器的所有数据,对数据进行解析,并将视频数据存入到视频缓冲区。视频解码模块负责从视频缓冲区中读取数据并送入H. 264 解码器进行解码。最后,采用OpenGL 图形库将解码后图像绘制到屏幕上实现视频播放。
图2客户端总体框架。
3. 1 H. 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 原生开发工具包
- 单片机C语言知识点全攻略(一)(08-17)
- Android系统开发全攻略(一)(06-08)
- AVR芯片的ISP全攻略(04-27)
- 嵌入式软件设计中查找缺陷的几个技巧(03-06)
- 基于算法的DSP硬件结构分析(04-02)
- Windows CE下驱动程序开发基础(04-10)