闫光来,张卫强,李维
(宁波大学 信息科学与工程学院,浙江 宁波 315211)
基于4G+VPN技术的视频监控系统设计与实现
闫光来,张卫强,李维
(宁波大学 信息科学与工程学院,浙江 宁波 315211)
为了克服传统视频监控系统的缺陷,实现在偏远地区进行远程视频监控的需求,设计了一种基于4G和VPN(Virtual Private Network)技术的移动监控系统。系统以ARM11为硬件平台,运行Linux操作系统,利用V4L2接口从摄像头采集图片并使用CPU内部MFC模块编码成压缩率高的H.264视频流,以RTP/RTCP协议进行实时网络传输。同时采用VPN技术,搭建专用网络解决了4G私有IP地址的问题。经验证,该系统传输稳定、画面流畅、实时性高,可被应用于众多领域。
4G;监控系统;VPN;H.264
视频监控,作为一种有效的技术手段,在商场、交通、居家安全等领域发挥着日益重要的作用。传统的有线视频监控,必须要铺设网线或电缆,成本较高,架设线路受环境的限制较大,而且维护费用高,故障排除麻烦[1]。随着信息技术的飞速发展,无线网络通信技术不断成熟,以4G为代表的无线网络视频监控技术能够很好地解决有线方式的弊端。自2013年12月工信部发放4G牌照以来,TDD-LTE的4G通信技术日渐成熟。相比于3G网络,4G网络的传输速率可达到20 Mbps,最高甚至可以达到100 Mbps,传输速度是3G时代的50倍[2],能够更好的支持高清视频监控。
1.1 系统硬件结构
系统所使用的硬件平台为友善之臂的Tiny6410开发板。该开发板的核心芯片为三星的S3C6410处理器,该处理器具有低功率、高性价比、高性能的优点。内部集成有硬件编解码器,支持MPEG4、H.263以及H.264格式的编解码。开发板有3路USB Host的USB口,可以满足本设计所需。摄像头使用罗技的一款C270高清USB摄像头,采集的图片有YUV和MJPEG格式。4G无线网卡使用中兴的一款ME3760V2上网卡模块。系统硬件结构如图1所示。
图1 系统结构图
1.2 系统软件设计
系统采用的操作系统为Linux系统。Linux操作系统具有体积小、系统开源、移植方便的优点,被广泛应用在移动设备上。本设计采用的Linux内核版本为Linux-2.6.38。为了调试方便,测试阶段采用宿主机挂载根文件的形式。宿主机为装有Fedora14的PC机,通过网线、串口和开发板连接。通过裁剪移植完成了针对于开发板工作的最小u-boot、kernel和根文件系统。在裁剪内核时,需要添加对UVC格式的USB摄像头的驱动支持以及4G上网模块的驱动及通信协议支持[3]。
视频采集程序调用Linux内核提供的V4L2接口,通过内存映射的方法,调用mmap函数把保存在内核空间的采集的视频数据所在的缓冲区映射到用户空间,这样可以有效地减少数据的交互。同时定义2个队列,视频输入和视频输出队列,用来存放帧缓冲刚取到的和应用程序已处理的数据。采集流程如图2所示。
图2 视频采集流程图
视频采集流程如下:
①打开视频设备,fd=open(video0,O_RDWR);获得设备属性,调用ioctl(fd,VIDIOC_ QUERYCAP,&v4l2_def),将设备参数保存在v4l2_ def结构体中;
②调用ioctl(fd,VIDIOC_S_FMT,&format)设置视频采集的参数如帧格式、图片大小等;
③调用ioctl(fd,VIDIOC_REQBUFS,&reqbuf)申请帧缓冲区存放视频数据,并通过mmap函数将其映射到用户空间以便应用程序操作;
④开始视频数据的采集。调用ioctl(fd,VIDIO_ STR-EAMON,&way)命令获取一帧数据,应用程序处理后,帧缓存区的数据再次刷新载入,这样实现了视频数据的循环采集;
⑤视频采集结束,停止采集,调用close函数关闭视频设备。
系统在设计时还要完成一步图像格式的转换,因为硬件编码器要求的标准输入格式为YUV420[4],而本设计采用的摄像头采集的格式为YUV422。两者的区别在于,YUV422采样是每两个Y共用一组UV分量,而YUV420是每4个Y共用一组UV分量,所以在采集之后需要软件方法进行格式转换。这里编写YUV422转YUV420的转换函数YUV422to420(unsigned char*pYUV,unsigned int *yuv,int Width,int Height)。
视频压缩编码部分使用的是硬件编码法,利用S3C6410芯片内置的MFC进行H.264格式的硬件编码。S3C6410芯片内部集成有硬件编解码器MFC模块,能够支持30 fps的标清H.264、H.263、MPEG4视频格式的编解码[5]。H.264是新一代的一种视频压缩的标准,在同等图像质量下,它的压缩比是上一代的压缩标准MPEG2的2~3倍,相比于MPEG4,也平均减少39%的传输码流,具有较高的图片压缩效率和较高的网络传输效率,容错能力强[6]。因此,H.264编码格式常被用在高清录像机和实时监控领域。
系统的视频硬件编码流程如图3所示。
硬件编码步骤如下:
①调用函数SsbSipH264EncodeInit(width,height,frame_rate,bitrate,gop)进行编码器的初始化。包括对每一帧图像的长宽、帧速率、比特率及编码质量系数设定;
②调用函数SsbSipH264 EncodeGetInBuf(handle,size)获取前面采集程序中图像数据的buffer地址;
③第一次编码需要传入设置的参数,调用函数SsbSipH264EncodeGetConfig(handle,H264_ENC_GETCONF_HEADER_SIZE,&cofi_size);
④调用SsbSipH264 EncodeExe(handle)执行H.264格式编码;
⑤调用SsbSipH264 EncodeGetOutBufAddr(handle,size)获取编码输出后的数据地址;
⑥编码结束,调用SsbSipH264EncodeDeInit(handle)解除内存映射,释放并关闭编码器。
这样经过S3C6410芯片的硬件编码器压缩编码后,得到了采集图像的H.264格式的视频流,经压缩后的数据,相比于原始图片格式,图像内存减少了很多,网络传输效果更佳。
图3 硬件编码流程图
3.1 流媒体传输协议
系统采用的是专门应用在流媒体音视频传输的实时传输协议(Real-time Transport Protocol,RTP),此协议用来传输视频数据,提供了具有实时性特征、一对一或一对多的数据传输服务。但是此协议无法提供可靠的传输机制,视频传输质量无法保障。这里配合使用控制协议RTCP(RTP Control Protocol),通过RTCP的报文信息,根据接收端接收数据包的丢包、延时及网络带宽情况作出反馈,动态自适应调整视频流的包发送,从而保证了视频的传输质量[7]。网络协议基于UDP协议,相比于TCP协议的三次握手和四次挥手机制,UDP协议是一个非面向连接的通信协议,传输的报头信息简短,传递效率高,因此,非常适合用来实时视频的传输服务[8,9]。
ARM平台移植一个JRTPLIB的C++库,该库是根据RTP标准RFC3550而编写的。用户只需要修改调用相应的API函数,就可以配置网络,通过RTP协议发送数据了。移植的步骤如下:①获取源码,解压缩;②配置安装选项,选择编译环境为armlinux-gcc;③运行make命令完成编译;④运行make install完成安装,注意库文件和头文件的安装目录。
在经过编码后的数据分为一个个的NAL单元结构,包括了NAL的起始码,NAL头部以及编码的视频数据。建立RTP会话时,会加上RTP的头部报文,包含了头部单元格式、RTP载荷类型等信息。在UDP传输时,又需要打上UDP头部信息,包括了端口号、UDP数据长度等信息[10]。传输时要注意RTP包长度要小于MTU(最大传输单元)。
基于RTP的会话传输主要步骤如下:
①初始化RTP会话
②发送数据流
③接收数据
调用RTPsession类的函数遍历所有源,检测到有效数据源后,调用GetNextPacket()提取其中的RTP数据报文,然后进行处理工作。
3.2 网卡的驱动加载
本系统的4G上网卡选用的是中兴的ME3760V2的一款上网模块,该模块支持TDD-LTE的band38、band39、band40、band41频段,同时向下兼容TD-SCDMA及GSM频段,支持最大的150 Mbps的上行数据传输速率。该模块支持Linux操作系统。
在内核文件drivers/usb/serial/options.c中添加该网卡的ID号,添加cdc_encap和cdc_ether的源码文件,通过make menuconfig命令,添加内核对usbnet驱动的支持。
执行make zImage命令,编译通过后,将生成的内核镜像下载到开发板上。上电启动后,会看到内核打印信息,通过lsusb会看到/dev目录下出现三个串口。通过AT指令方式拨号后,可连接至Internet,并返回动态IP地址[11]。查询IP的指令为“AT+CGPADDR=1”,返回“+CGPADDR:1,“10.62.154.254””。通过udhcpc指令可动态获取IP配置,此时,开发板已具有上网功能,可以用于视频数据的网络传输。连接成功后udhcpc命令输出如下所示。
4G上网卡产生的IP为移动运营商分配的私网,由于网络NAT技术的存在,用户在PC端的另一局域网内是无法实现与开发板的网络互访的。这里,采用搭建VPN虚拟专用网络的方法,通过组建VPN网络,使得开发板和客户端处于同一局域网内,从而实现两端的访问。VPN的实现基于隧道协议,通过既定的隧道协议,可以把一种协议以外的一种协议或者相同的协议进行封装,还可以给用户提供加密等安全服务。VPN服务器必须和客户端使用相同的隧道协议,这样才能实现VPN的连接。目前常用的隧道协议有以下3种:PPTP、L2TP和IPSec[12]。本设计选择的协议是点对点隧道协议(Point-to-Point Tunneling Protocol,PPTP)。
VPN服务器选择具有双网卡的PC机,安装Windows Server2008,搭建VPN的服务器。这台PC机具有公网IP,可被访问。用于视频监控的客户端PC同样安装客户端程序,接入的网络为局域网。该客户机被设定为user1,接入VPN网络后,会被分配一个VPN局域网内的虚拟IP地址,如表1所示。
表1 实验中VPN网络环境中各终端的IP地址信息
在开发板上需要添加对PPTP协议的支持,宿主机下载Linux系统下的PPTP客户端程序后,解压缩编译,将可执行文件拷贝到开发板。在配置iptable防火墙放行和转发规则后,建立一个VPN连接脚本文件,写入本机的用户名、带有公网的VPN服务器的IP地址等信息。配置执行成功后,可以查看到本机被分配的同监视端同一网段的虚拟IP地址。这样,客户端PC机就可以同开发板处在了同一局域网环境内,就可以IP互访,实现视频的传输了。
在PC端,使用VLC播放器来播放实时视频流。VLC不仅可以播放本地多媒体文件,还可以播放网络视频,既能用作媒体流服务器,又可以当成客户端接收网络流。在开发板端,连接网络后,PC机打开VLC软件,打开“媒体”,选择“打开网络串流”,输入网络的URL,这里输入在VPN局域网内开发板端获得的虚拟IP地址及端口号:rtp// 192.168.1.20:1240,同时导入名为h.264_live的sdp文件,内容为“m=video 1240 RTP/AVP 96 a=rtpmap:96 H264a=framerate:26c=IN IP4 192.168.1.30”经过测试,视频播放流畅,画面清晰。
经过系统测试,本系统可以很好地编码并传输USB摄像头采集的视频图像,经过4G网络传输,在VPN局域网内的客户端VLC播放器上可进行实时播放。由于开发板的USB1.1口的限制,本系统在帧速为26 fps,分辨率为176*144的图像编码后传输的效果较好,通过抓包工具测试在连续接收3 h左右,丢包率在2.1%,画面流畅清晰,显示出4G的网络环境能够很好地支持网络视频的传输。本系统经过扩展和改进,可以很好地应用于移动无线视频监控领域。伴随着4G技术更加成熟,加上H.265等更加有效的视频压缩技术,移动网络下的高清网络视频监控行业将会有更大的进步。
[1]林承德,李少林,谢雄.基于3G无线网络的视频监控系统[J].计算机系统应用,2012,21(3):209-212.
[2]田庆吉.探析4G网络中的关键技术[J].软件,2014,35 (1):141-142.
[3]Zhao Qian.Research on family and shops real-time status of 3G Wireless Remote Monitoring System[J].Journal of Software,2011,6(5):814-818.
[4]蔡丽艳.基于H.264嵌入式网络视频监控系统的研究与实现[D].南京:南京邮电大学,2013:37-40.
[5]游向东,刘福良,刘军,等.S3C6410中MFC的研究与应用[J].电子产品世界.2011(12):36-37,40.
[6]李波,卢文科,朱文超.基于3G和H.264的无线视频监控系统的设计[J].微计算机信息,2011,27(5):78-79,19.
[7]西刹子.安防天下-智能网络视频监控技术详解与实践[M].北京:清华大学出版社,2010.
[8]宋敬彬,孙海滨.Linux网络编程(第2版)[M].北京:清华大学出版社,2014.
[9]郑庆红.基于H.264的视频传输系统的设计与实现[J].无线电工程,2011,41(8):12-14,40.
[10]王春香,纪松波.基于4G网络的移动多媒体传输关键技术[J].无线电通信技术,2014,40(5):40-43.
[11〛王志超,刘波,花於锋.基于移动4G与ZigBee无线传感网的网关设计[J].计算机测量与控制,2014,22 (3):863-865,878.
[12〛龚辰杰.基于VPN的远程视频监控的实现[J].电脑知识与技术,2013,9(7):1529-1531.
Design and Implement of Video Monitoring System Based on 4G+VPN Technologies
YAN Guang-lai,ZHANG Wei-qiang,LI Wei
(College of Information Science and Engineering,Ningbo University,Ningbo Zhejiang 315211,China)
A monitoring system based on 4G and VPN(Virtual Private Network)is designed to overcome the drawbacks of traditional way and realize the demand of video monitoring in the remote areas.This video surveillance system uses ARM11 as the hardware platform,and works on embedded Linux operating system.It uses the V4L2 interface to capture image data,CPU integrated MFC module to code these image data to H.264 video stream with high compression ratio,and implements realtime video transmission by using RTP/RTCP protocol.Also,in this system,a VPN network is built by using VPN technology to solve the problem of private IP address when using 4G module access to the Internet.The experiment results show that the system has stable operation,smooth stream and low delay,and it can be used in various fileds.
4G;monitoring system;VPN;H.264
TN929.5
A
1003-3114(2015)05-81-5
10.3969/j.issn.1003-3114.2015.05.22
闫光来,张卫强,李维.基于4G+VPN技术的视频监控系统设计与实现[J].无线电通信技术,2015,41(5):81-85.
2015-05-21
国家自然科学基金项目(61271137)
闫光来(1991—),男,在读研究生,主要研究方向:嵌八式系统。张卫强(1963—),男,副教授,硕士生导师,主要研究方向:嵌入式系统。