1 移动流媒体技术
移动流媒体技术就是把连续的声音影像信息经过压缩处理后传送到网络服务器上,让终端用户能够在下载的同时观看收听,而不需要等到全部的多媒体文件下载完成就可以即时观看的技术。移动流媒体技术的出现是伴随这移动通信技术的发展和网络音视频技术的进步,其只要是关于流媒体数据从采集到播放整个过程中所需要的核心技术。流媒体播放技术有优点也有缺点。优点是能够及时传送随时播放,缺点是由于网络的速率不稳定性,当播放速率大于传输速率时,视频播放将出现停滞,时断时续的现象。
2 Android的视频监控系统
基于Android的视频监控系统分为五个模块:依次为采集模块、编码模块、视频传输模块、解码模块、显示模块,下面分别进行详细介绍。
2.1 视频采集模块
Android摄像头采集到的视频格式为YUV420格式的视频流。采集模块的实现可以在Android的应用层中通过编写代码来实现。
2.2 编码模块
数字视频编码标准主要由两个标准化组织制定。MPEG制定的视频编码标准有MPEG-1,MPEG-2,MPEG-4。ITU一T制定的视频编码标准有H.261和H.263。为了促进下一代多媒体通信的应用, MPEG和VCEG共同成立了联合视频工作组(JVT),共同开发了视频编码标准H.264。H.264是目前最先进的视频编码标准。
H.264视频编码标准是目前最新的技术,虽然H.264遵循了原来压缩标准的架构,但是H.264具有一些新的特性,H.264标准分两层结构,包含网络抽象层(NAL)和视频编码层(VCL)。网络抽象层用于数据打包和传输,编码层负责视频压缩编码,这种分层结构,实现了传输和编码的分离。由于H.264标准引入了数据分割等抗误码技术,实现了在复杂环境下的使用,可以适应不同网络的传输要求。由于采用高度复杂的实现算法,H.264是目前低码率下压缩率最高的编码标准,在带宽不稳定的无线网络上有着无法比拟的优点。
2.3 传输模块
流媒体传输和控制协议在应用层主要涉及到HTTP,RTSP,RTP和RTCP协议,在传输层有TCP和UDP协议。HTTP是建立在传输控制协议(TCP)之上的超文本传输协议。TCP/IP协议是专为数据传输而设计的,能够保证传输的可靠性。RTP是在一对一或一对多的情况下针对流媒体数据流工作,不仅能够提供时间信息而且可以保证数据流的同步。通常RTP建立在UDP之上,使用UDP传输数据。RTP本身没有可靠的传送机制,其流量控制和拥塞控制是由实时传输协议(RTCP)来提供的。RTP和RTCP共同协作才能完成流媒体的传输和控制。实时流协议(RTCP)是应用层协议,位于RTP和RTCP协议层之上,通过IP网络传输多媒体数据,在传输机制上采用TCP和RTP完成数据传输。RTSP用于控制实时数据的发送,提供用于音视频流的VCR远程控制功能和用于控制流媒体的播放、暂停、记录等操作。会话描述协议SDP,SDP是用来描述RTSP,以便说明一个流媒体会话的基本属性。结合移动视频监控系统对通信实现的特点,本文采用RTP,RTSP,RTCP和HTTP协议完成视频监控系统的通信和远程控制。
一个最基本的流媒体系统包括编码器,流媒体服务器和客户端播放器三个部分。各个模块之间的数据通信交换都是按照特定的协议。编码器用来将原始的音视频转换成合适的流媒体格式文件,服务器用来接收和转发编码后的媒体流,客户端则是负责解码和播放接收到的流媒体数据。流媒体传输有两种方式,一种是顺序流式传输,一种是实时流式传输。
(1)顺序流式传输。顺序流式传输就是顺序下载。用顺序流式传输方法基于标准HTTP或FTP服务器来传输文件,通常容易管理,方便用户的使用。整个下载过程是无损的,能够保证视频的高质量,但是用于网络传输速率的问题,一般需要等待较久的时间。顺序流式传输常用于对视频质量要求较高的场合,对实时性,随机访问性要求较高的场合则不适用。
(2)实时流式传输。实时流式传输能够保证信号带宽与网络连接的匹配,实现实时传送,适合现场直播,支持随机访问,用户可进行快进后退操作。实时流式传输需要传输网络协议和专用的流媒体服务器。由于这些协议与防火墙有关,在使用时一需经过配置。系统设置,管理比顺序流式传输复杂。由于必须匹配连接带宽,在低速连接设备时或者网络拥塞时,会出现丢帧现象,导致视频质量下降。
2.4 解码模块
解码从性质来来讲,其实是编码过程的逆过程。编码采用H.264进行编码,所以该模块也采用H.264进行解码。解码器的整体设计可以分成两部分,一部分是视频数据的解码部分,主要用C语言来实现,采用Android NDK+C的实现机制。另外,一部分是视频的显示部分,主要采用Android提供的组件来实现,采用Android SDK+Java的实现机制。而这两部分的集合,则是通过java提供的jni机制来实现Java和C语言之间的通信。整个解码流程可分为三个功能模块:前段码流处理、H.264解码和后段视频显示。
(1)前段码流处理:主要负责文件的读取,从码流中分隔出NAL然后交给底层进行解码处理。
(2)H.264解码:整个解码的核心部分,通过本地C语言的实现和解码库对码流数据进行处理,完成H.264解码实现图像重建。
(3)后端视频显示:接收H.264解码模块解码后的视频数据,在客户端进行显示。
通过分析三个模块的功能可知,H.264解码模块是最耗费资源的。H.264视频标准为了更好的适应网络传输的特性,采用了分层设计的思想既视频编码层VCL和网络提取层NAL。
2.5 显示模块
通过调用Android自带的显示器,来显示解码后的本地数据流,从而达到实时视频的显示效果。
3 结束语
本文介绍了移动流媒体技术的概念及特点,考虑到网络速率的不稳定性带来的一些列影响,设计了一个基于Android的视频监控系统,系统分为五个模块,依次为采集模块、编码模块、视频传输模块、解码模块、显示模块,这种系统很好地解决了视频监控系统的安全性、实时性和稳定性等要求。
【参考文献】
[1]温敏,艾丽蓉,王志国.Android智能手机系统中文件实时监控的研究与实现[J].科学技术与工程,2009(4):1716-1719.
[2]胡晓乐.基于Android平台的MID视频监控系统的设计与实现[D].广州:中山大学,2010.