摘 要:为了使视频监控更加灵活方便,能够随时随地地采集视频,采用3G手机作为视频客户端和采集端,通过RTP协议在3G网络下实时传输视频流,采用先进的H.264压缩算法对采集视频进行压缩以节省网络流量,加快传输速度,在手机客户端可以清楚地观看视频。
关键词:3G手机;视频监控;H.264;Android
视频监控的广泛应用,以及人们对移动视频监控需求的增加,促使了3G手机移动视频监控系统的出现。用3G手机作为视频采集端扩大了视频采集的范围,使监控场地不再局限于一个固定的地方,从而使客户端可观察的范围大大增加,真正达到一机在手处处监控的效果,给人们社区生活和工作带来极大的方便。例如老人不方便外出,当儿女在外旅游时,可以把旅游时的欢乐情景实时发送给老人和他们共享此时的欢乐。此外,3G手机移动视频监控还可以在远程救助、远程支援、远程技术支持以及远程医疗帮助等方面获得广泛应用。
3G技术的快速发展使得3G网络速度越来越快,从而在3G网络下传输视频成为可能。为了节省网络带宽、加快视频传输速度,该系统采用H.264压缩算法对采集的视频进行压缩编码,网络传输采用支持流媒体传输的RTP/RTCP协议以保证视频流高效、稳定地实时传输。
1 系统的硬件组成及开发环境
该系统分为视频采集端、视频服务器和视频接收端3部分。该系统的硬件结构如图1所示。
采集端采用HTC的G13手机,主屏分辨率为480×320像素,3G网络频率为WCDMA 850 MHz/2 100 MHz,操作系统为Android2.3,CPU频率为600 MHz,RAM容量为512 MB,ROM容量为512 MB,摄像头像素为500万像素,自动对焦且支持触控对焦,图像尺寸最大支持2 592×1 944像素照片拍摄。视频转发服务器采用普通的PC即可。视频接收端采用三星的GT-S5670手机,3G网络频率为WCDMA 900 MHz/2 100 MHz,操作系统为Android 2.2,内存容量为160 MB,分辨率为320×240,26万色彩,视频播放格式为MPEG4/H.263/H.264。
为使用C/C++编写的H.264编解码函数,需要搭建Android的C/C++开发环境。搭建Android C/C++开发环境所需要用到的软件为JDK+Eclipse+AndroidSDK+ADT+NDK,编译Android的C/C++程序需要一个交叉编译环境,本文选择的是Cygwin。
2 视频采集端设计
视频采集端顾名思义主要完成对监控现场的视频采集工作,此外为了减轻视频服务器的压力,在视频采集端将采集的视频进行压缩编码,然后再通过网络传输给视频服务器,由视频服务器将视频转发给视频客户端。视频采集端软件结构如图2所示。
(1)采集模块。此模块为视频采集端的核心模块,视频采集端通过此模块对监控现场进行视频采集工作。该模块包括视频采集和视频预览两部分。摄像头应首先对监控现场进行视频预览,然后采集一帧图像,每采集一帧图像,都要先进行视频预览工作。因此,在程序中应首先进行视频预览工作,然后再采集视频。在程序中实现对摄像头的操作应该首先在AndroidManifest.xml中添加获取操作摄像头的语句。在主程序中对摄像头进行初始化,配置摄像头各种参数,如视频图像的高度、宽度、自动对焦等。基于Android的3G手机摄像头采集的视频图像默认格式为YUV420sp,采集模块采集完视频后交给编码模块处理。
(2)编码模块。此模块的目的是在有限的网络资源中传输更多的视频流,同时减少视频服务器的工作量。编码模块的主要工作就是把采集模块采集的视频进行压缩编码,该系统采用最新最先进的H.264压缩方式对视频流进行压缩编码,然后将压缩好的视频流交由网络模块进行网络传输。在程序中通过调用C/C++的H.264编码函数对采集的视频进行编码即可,这里的H.264编码函数要使用JNI的函数命名格式,函数里的数据类型也要相应转为JNI规定的格式,这样在Java中才能被识别,编译链接才能通过。
由于网络传输带宽有限,同时为了节省上网流量,加快视频传输速度,本文采用压缩效率比较高的H.264视频压缩算法。H.264采用分层设计,在概念上分为视频编码层和网络提取层两层。其精度高,支持多模式运动估计,支持1/4或1/8像素精度的运动矢量;支持整数变换,在编码器和解码器中允许精度相同变换和反变换,便于使用简单的定点运算方式。同时,H.264还采用统一的VLC和帧内预测技术,使视频压缩效率大大提高。在中国联通3G HSDPA网络覆盖区域内,实际最高上网下载速率为5 Mb/s(620 kb/s),上行为2.8 Mb/s(350 kb/s),通常下载为450 kb/s,上传280 kb/s,如果不采用压缩算法,在450 kb/s的网速下传输实时视频流是不可能的,视频尺寸为480×320,视频码率为512 kb/s,采用H.264压缩算法,一般压缩比可以达到25:1,这样就可以保证视频流的实时传输了。
(3)网络传输模块。此模块完成视频流的传输功能,将经过压缩模块编码后的视频流传输给视频服务器。为保证实时传输,该系统采用RTP实时传输协议,由于RTP协议只保证视频流的实时性,对传送的视频数据不提供可靠的传送机制,因此,使用RTCP传输控制协议配合RTP协议一同使用,以保证视频传输的质量。RTP下层使用UDP协议,真正意义上将视频流传输给网络层,通过网络层将视频流通过网络传输给视频服务器。在程序中同样要在AndroidManifest.xml文件中添加获取网络权限的语句,否则,视频流是无法通过网络传输出去的。
实时传输协议RTP(Real-Time Transport Protocol)是针对Internet上多媒体数据流的一个传输协议,由Internet工程任务组(IETF)作为RFC1889发布。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以在TCP或ATM等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。实时传输控制协议RTCP(Real-Time Transport Control Protocol)负责管理传输质量在当前应用进程之间交换控制信息。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量以及丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,因此特别适合传送网上的实时数据。
3 视频服务端设计
视频服务器在该系统中起着桥梁的作用,承上启下,将视频采集端和视频客户端连接起来,只有通过视频服务端,视频采集端和视频客户端才能相互通信,整个系统才能正常运转。每个视频采集端和视频客户端通信都要通过视频服务器,所以视频服务器在该系统中承担的工作量最大,任务最重,因此服务端的设计很重要。一个好的视频服务端设计可以使视频服务器高效稳定地运行,从而提高整个系统的工作效率。该系统服务端分为视频接收模块和视频管理模块两大部分。其中,视频管理模块又分为网络传输模块、视频存储模块、视频解码模块和视频播放模块。服务端软件结构如图3所示。
(1)接收模块。该模块主要完成视频流的接收工作,相对管理模块比较简单,在程序中利用线程将视频采集端传来的视频流进行接收即可。
管理模块将接收的视频流根据去向进行一一处理,保证在视频服务端可以观看视频监控情况,将视频流存储备份,方便以后查看以及监听视频客户端请求,并将视频流转发给视频客户端。
(2)网络传输模块。该模块负责监听视频客户端的连接请求并将视频采集端传来的视频流转发给视频客户端。该模块承载着整个系统的重心,是视频采集端和视频客户端的连接纽带,因此该模块高效稳定地工作才能使整个系统高效稳定地运转。接收模块接收的视频流是经过H.264压缩算法压缩过的,在此模块直接转发即可。在程序中对每个发送连接请求的视频客户端创建一个新的线程,用来专门为该视频客户端传输视频流,各个线程之间互不影响。
(3)视频存储模块。该模块主要完成将接收模块接收的视频流存储在本地硬盘的工作,从而使得以后可以查询历史监控记录。
(4)视频解码模块。该模块主要完成对接收的视频流进行解码工作。因为视频服务器接收到的视频流是通过H.264压缩算法压缩过的,在视频服务器上不能直接播放,所以在播放前首先需要对视频流进行解码,在程序中调用H.264解码程序进行解码即可。
(5)视频播放模块。该模块主要完成在视频服务端将视频播放显示的功能,同时提供对播放视频进行拍照功能,方便在观察视频监控情况时,如感觉某些画面比较重要可以进行拍照保存。
4 视频客户端设计
视频客户端负责将视频服务器转发来的视频流在客户手机上进行播放显示,传统的观看监控方式必须坐在显示器旁边,大大限制了客户的活动范围,通过手机来观看视频监控可以不受地域的限制,使客户观看视频监控更加灵活方便。该系统客户端包括视频接收模块、视频解码模块和视频播放模块。
(1)接收模块。该模块和视频服务端相似,主要完成视频流的接收工作,在程序中创建一个线程接收视频服务端传来的视频流并保存在一个数组中即可。
(2)视频解码模块。该模块主要完成对视频服务传来的视频流进行解码的工作。因为接收到的视频流是通过H.264压缩算法进行压缩过的,在视频客户端不能直接播放,所以在播放前首先需要对视频流进行解码。在程序中调用H.264解码程序进行解码即可。
(3)视频播放模块。该模块主要完成将视频流在手机客户端进行播放显示的功能,同时提供对播放视频进行拍照功能,方便在观察视频监控时可以对播放视频进行拍照保存。
通过对该系统编码测试,手机视频采集端可以把监控视频传输到视频服务器,同时,视频服务器也可以将视频转发到手机视频客户端,在视频服务端和手机视频客户端都可以观看到清晰的监控图像。通过实验证明,该3G手机移动视频监控系统可以很好地运行。
本文提出了一套通过3G手机随时随地进行远程视频监控的设计方案,基于Android操作系统的3G手机都可以使用该系统,普通的智能手机在Wi-Fi或WLAN下也可以使用该系统进行监控或接收视频数据。在网络传输中采用H.264压缩编码提高了传输效率。该系统采用3G手机作为视频监控和接收端,从而使观看监控更加灵活、方便,真正达到随时随地监控的效果。随着远程视频监控应用越来越广泛,该3G手机移动视频监控系统将给人们的生活和工作带来巨大的方便。
参考文献
[1] 付少华,付红桥,王政.基于3G网络的手机移动视频监控系统的设计[J].计算机应用技术,2011,31(A01):70-72.
[2] 孙松原,吴建国.基于RTP和Android的视频传输的研究实现方法[J].电脑知识与技术,2012(2):903-905.
[3] 谢红华,陆以勤,吕锦.基于3G无线网络的高质量实时视频监视系统的设计[J].计算机应用研究,2007(10):313-314.
[4] 余兆明,查日勇,黄磊,等.图像编码标准H.264技术[M].北京:人民邮电出版社,2006.