APP下载

基于SVAC视频标准的手机监控客户端设计

2014-02-13陈威兵张刚林

电视技术 2014年15期
关键词:线程解码客户端

陈威兵,张刚林,冯 璐

(长沙学院 电子与通信工程系,湖南 长沙410003)

责任编辑:任健男

由于新一代移动通信网络数据传输能力的增强和智能手机处理芯片运算能力的提高,使用3G智能手机作为视频监控客户端成为可能[1],这极大地扩展了视频监控的应用环境和使用方式,也满足了个人随时随地实现视频监控的需求。这种监控系统应用范围很广,比如实施家居安全、未成年或老弱家庭成员的监护、车辆监控;特定责任人员对所负责的工作或实验场所的监控;小型企业、连锁店、商铺的监控等。

目前,移动视频监控系统有很多[2-3]。它们实现了手机监控的愿望,但也存在诸多不足,主要体现在以下几方面:1)传输的视频标准普遍采用国际主流的MPEG-4、H.264等,都不是针对安防领域的,对全天候、各种复杂拍摄环境下的现场还原性不佳,在压缩编码效率和视频质量之间的平衡不理想,缺少对监控专用信息的支持;2)只能实现一路视频监控,减少了监控应用模式。本文开发的移动视频监控系统采用我国具有自主知识产权的专为安防产品设计的数字音视频压缩标准SVAC,手机监控终端采用多画面播放,可实现多路监控。符合本文要求的视频监控前端和监控网络设备均已有成熟产品,所以本文着重介绍自主开发的手机监控客户端软件的设计、监控视频的传输模式和传输协议。

1 移动视频监控系统总体框架

以智能手机为监控客户端的视频监控系统通常可以设计成如图1所示的结构。其中,监控前端可采用无线定点监控、无线移动监控、有线定点监控3种监控模式。嵌入式视频服务器配置在监控前端内,它具备多路视频采集、压缩编码、视频存储、多制式网络通信功能;内置Web Server,支持多用户登录,支持多种平台接入。为了加强视频管理、转发和存储能力,根据需要,可将嵌入式视频服务器级联到网络中心服务器和网络专用存储服务器中。手机监控终端通过3G、WiFi等无线网络登录中心服务器获得转发视频或直接登录视频服务器获得实时监控视频。

2 手机监控客户端总体设计

2.1 软件总体设计方案

图1 手机视频监控系统总体框架

3G智能手机视频监控是一种软件监控,完成的功能比较多,采用浏览器软件并不能完成,需要开发专门的基于手机操作系统的客户端监控软件。本文设计的手机监控客户端软件的总体框架如图2所示,采用C/S架构。它由网络通信模块、视频缓存模块、视频解码模块、视频显示模块、视频存储模块、轮切定时模块和主控模块构成。其中,网络通信模块负责与服务器的沟通(包括用户登录、数据传输协议约定等),并对接收的数据进行拆分、解析,将视频数据送入相应的视频缓冲区,将从监控前端传来的告警信息传给显示模块呈现;视频解码器从压缩视频缓冲区读取压缩视频数据并进行相应的解码后经解码视频缓冲区传送给显示模块;轮切定时器用于多路监控画面之间的轮切控制;显示模块在主控模块发出的界面控制命令下,利用OpenGL图形库将解码后图像绘制到屏幕上实现视频播放,并进行屏幕刷新;主控模块也可对用户操作进行识别,并进行视频变换、视频存储等处理,同时对用户发出的针对视频前端的命令通过网络通信模块发送给视频前端,如云台控制、图片抓拍等。

图2 手机监控客户端总体框架

2.2 软件开发平台

目前,支持智能手机的操作系统有很多,主流的有Google公司的Android和苹果公司的iOS等。本文选择在Android系统上开发手机监控客户端软件主要是考虑其开放性,开发者在为其开发应用程序时将拥有更大的自由度[4]。其应用程序开发时采用Java语言编写,但可以通过JNI机制来调用C/C++库,这样可以将运行在PC平台的成熟视频解码软件、多画面显示软件、视频处理软件移植到Android系统中,从而降低开发难度。搭建Android应用程序开发平台需要安装的软件比较多,包括JDK,Eclipse,Android SDK,Android ADT,Android NDK,Cygwin等。代码开发完成后,可以在Eclipse中启动Android模拟器AVD进行程序调试和界面效果演示。最后的Java代码通过编译后,可以用ADT将其打包成APK文件,用于在手机终端中安装或直接调用。

3 手机监控客户端各功能模块设计

3.1 SVAC解码器软件

视频压缩编码技术是视频监控系统实施网络化的关键[5]。本文采用的视频标准SVAC(Surveillance Video and Audio Coding,安全防范监控数字视音频编解码)之所以特别适合安防环境,主要因为其有以下技术优势:1)支持高精度视频数据;2)支持感兴趣区域(ROI)变质量编码;3)支持可伸缩视频编码(SVC);4)支持高性能熵编码;5)支持监控专用信息。

Android本身不支持SAVC视频解码,且还没有厂家发布开源的SVAC解码库。为提高SVAC视频解码软件的开发效率,笔者所在实验室首先依据SVAC编解码技术要求(GB/T 25724—2010)在PC平台上以C/C++自主开发SVAC解码参考代码。其采用的通用解码流程如图3所示,视频解码器接收编码比特流后,对条带中的宏块,经熵解码、逆扫描、反量化及反变换产生一组残差数据D',并根据码流中信息通过帧内预测或帧间预测得到预测数据PRED,预测数据与残差数据通过计算生成重建图像F',重建图像经去块滤波产生最终的解码图像。

图3 SVAC视频解码流程图

在接收编码比特流之前,首先要对接收的NAL(网络提取层)单元进行解码,即从NAL单元中提取RBSP(原始字节序列负荷)语法结构,如果encryption_idc为1还需进行解密处理,得到未加密的RBSP语法结构。在此基础上,再依据解码出的nal_unit_type值选取图3通用流程的全部或部分过程进行解码,如nal_unit_type=1对应非IDR图像的编码条带,nal_unit_type=4对应IDR图像的SVC增强层编码条带。除了常规视频条带的解码外,要特别注意SVAC支持的ROI区域解码和SVC视频条带解码。当roi_flag=1时说明打开了ROI模式,此时需要由ROI的top_left和bottom_right确定ROI矩形区域位置,并依据不同的编码约定参数对ROI区域和背景区域进行解码,还需要对ROI区域的边界进行渐变处理,以消除边界效应。nal_unit_type为3和4时对应都是增强层条带,增强层解码图像帧的宽度和高度均为基本层解码图像帧的2倍,此时要用增强层图像的宽度和高度参数去代替基本层的对应参数。

在完成SVAC参考代码优化后,就可以利用NDK将其移植并生成对应的动态链接库(.so文件);动态库形成后,拷贝到Java文件项目的libs/armeabi目录下供Java函数调用,从而在Android环境中实现SAVC视频解码。

3.2 多画面显示与多线程设计

多画面手机视频监控是具有实际意义的,通常用户需要同时对多个目标进行视频监控,或者调用同一场景中的多个摄像头从不同角度观察同一目标。不过受制于移动网络传输能力、手机CPU的处理速度以及手机屏幕的分辨率,画面数也受限(本文设定4个)。

要实现分时多画面视频播放,首先使用XML布局文件定义多画面播放器界面,由<LinearLayout>创建一个视图组,本文LinearLayout视图组中包括4个VideoView对象(对应4个播放区)和播放、停止、放大、缩小等12个Button对象(对应12个操作按钮)。VideoView类需要重写,它运行时调用SVACDecoder()函数实现视频解码,调用重写的onDraw()方法进行视图显示,为确保视频播放更为流畅,本文视频缓冲采用压缩视频缓冲和解码视频缓冲双缓冲区机制。为保障程序运行速度,多画面中只有一个活动窗口可以播放动态视频和声音,并接受用户指令,非活动窗口只简单显示最后一帧静态解码图像。多画面的活动窗口可采用定时器控制轮切,也接受用户人工控制。轮切定时器控制使用Timer类来发起fixed-delay,使用TimerTask类处理delay到了之后的视频轮切任务,使用TimerHand类接收用户人工控制消息后的处理任务。

视频数据的接收、解析、解码和播放本身就一个复杂过程,再加上要进行多画面监控处理就更复杂了,极易出现阻塞并影响整个程序的运行[6]。因此,本文的监控客户端程序采用多线程并行处理,以提高程序运行速度。程序运行时,主线程完成主控模块功能,即响应用户操作并做出对应的视频处理、显示界面控制。创建9个子线程:1个定时轮切子线程、4个数据接收子线程和4个视频解码子线程。子线程数目看似比较多,但实际运行时,只有一路活动监控视频的数据接收和视频解码子线程被执行,其他路监控视频的子线程处于挂起状态,不占用CPU资源。Java实现多线程有继承Thread类和实现Runnable接口两种方法,由于Java禁止一个类多重继承,但允许一个类实现多个接口,而本文程序子线程数目较多,故只能采用第二种方式,即通过实现java.lang.Runnable接口来完成。另外,对于多线程需要利用synchronized关键字和wait()、notify()等方法实现线程间的同步,以避免各线程访问共享资源时发生冲突。

3.3 网络通信模块

3.3.1 网络通信协议

手机监控客户端与服务器之间的通信内容包括信令和数据,数据主要是视频流(监控信息和安全信息也包含在其中)和交互数据。本文使用HTTP协议实现客户端与服务器之间链接与交互(视频数据传输除外),方法是采用Android提供的3种HTTP接口之一的Apache接口(org.apache.http),使用其HttpClient类来实现,交互需调用的函数有DafaultHttpClient(),HttpGet(),HttpPost()和HttpResponse()等。对于视频数据传输部分,媒体会话采用RTSP实时流传输协议,视频数据使用RTP/RTCP机制完成传输控制。其中,RTP实时传输协议是一个针对IP网络数据流的传输协议,虽然提供的是一个不可靠连接,但保障了数据的实时性。RTCP实时传输控制协议负责传输质量管理,提供流量控制和拥塞控制服务,它很好地保障了视频数据传输的网络自适应性[7]。

3.3.2 主要交互流程

客户端与服务器之间的主要交互流程有:

1)用户登录,第一次使用监控客户端程序,都需要登录服务器并在其管理程序中登记、注册,进行验证授权。

2)实时流请求,主要为实时监控服务,包括媒体链路的创建和撤消。

3)录像回放,主要为客户端调阅存储在服务器上的监控历史视频服务,同样包括媒体链路的创建和撤消。

4)用户操作命令发送,数据在主控模块中获得。如ROI区域参数的获得需利用onTouchListener触屏事件接口:在Android平台上重写View类提供的onTouchEvent(MotioEvent event)方法,MotioEvent分别有按下、抬起、移动和取消4个动作,而event.getX()和event.getY()可记录触点坐标值;当使用按下、移动、抬起3个动作时,记录按下、抬起的坐标就可以确定ROI的矩形区域。

4 手机监控客户端测试与结果

为了对本文设计的视频监控手机客户端软件进行测试验证,搭建了移动视频监控原型系统作为试验条件:监控前端采用了中星电子有限公司的高清网络摄像机VSIPC6091HC20S,它支持SVAC视频压缩标准,嵌入了视频服务器,分辨率最高25 f/s@1 080p和25 f/s@720p可选,支持编码参数动态配置,720p时支持图像基本层和增强层设置,至多支持2个ROI区;智能手机选用三星I9220,它的操作系统是Android 2.3,CPU频率为1 433 MHz,RAM容量1 Gbyte,主屏尺寸为5.3 in(1 in=2.54 cm);无线网络选用了WCDMA和WiFi。

在以上试验条件下得到的视频监控效果如图4所示。支持单画面监控和4画面监控,画面切换时长在5 s左右。网络环境良好时,单屏可播放720p高清视频,帧率可至25 f/s,多屏时可播放QIF视频,帧率可至15 f/s。对于活动窗口视频,可通过屏幕触点缩放视频,也可给监控前端设立ROI区。由于SVAC视频编码可选用白天/夜晚两种编码模式,因此全天24 h的监控视频效果并无明显差异。

图4 手机监控客户端视频效果图

5 结束语

本文设计的手机视频监控客户端达到了使用移动终端进行实时监控的目标,视频较为流畅。由于采用了SVAC视频标准,可以更好地满足安防需求;使用多画面轮切的方法实现了多路视频监控。但由于视频处理较为复杂,且需处理多画面流程,还只能选用中高档手机作为监控平台,网络传输环境要求也较高,下一步希望有所改进。另外,由于移动监控一般为非专业值守人员,需要在监控前端增加智能视频分析能力(如图像质量诊断、越界等行为分析、人脸抓拍、识别、人数统计等)[8],并将智能分析数据作为SVAC比特流中的扩展数据传输给监控终端。

[1]邓涛,曹宁.基于3G网络的手机视频监控与远程控制系统及其应用[J].电信科学,2009,25(10):101-104.

[2]NAKASHIMA Y,BABAGUCHI N,FAN J P.Intended human object detection for automatically protecting privacy in mobile video surveillance[J].Multimedia Systems,2012,18(2):157-173.

[3]吴建华,徐浩,丁月华.移动网络手机实时监控系统的设计与实现[J].计算机工程与设计,2010,31(10):2196-2198.

[4]曹晓芳,王超,李杰.一种基于Android智能手机的远程视频监控的设计[J].电子器件,2011,34(6):709-712.

[5]陈威兵,张刚林,刘光灿.AVS-S在移动视频监控网络中的应用分析[J].计算机测量与控制,2012,20(8):2114-2116.

[6]GONG Songchun,FU Songyin,CHEN Zheng.A real-time video monitoring system of mobile terminals based on android platform:a case study of electric power systems[J].Research Journal of Applied Sciences,Engineering and Technology,2013,5(7):2412-2419.

[7]邓蕊.基于Android的视频监控的研究与实现[D].西安:西安电子科技大学,2012.

[8]陈彩莲.基于Android移动平台的智能视频监控系统设计[D].天津:天津大学,2011.

猜你喜欢

线程解码客户端
《解码万吨站》
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
解码eUCP2.0
如何看待传统媒体新闻客户端的“断舍离”?
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路