高建辉,黄世震
(福州大学 物理与信息工程学院,福建 福州 350116)
基于H264的远程视频监控系统设计与实现
高建辉,黄世震
(福州大学 物理与信息工程学院,福建 福州 350116)
为满足嵌入式设备在日常家居监控中的应用需求,设计了一种嵌入式视频监控系统。该系统通过调用Linux的V4L2接口完成视频图像数据的采集,使用H264标准对视频图像进行编码后,利用网络把视频图像传送到客户端,客户端调用解码程序播放视频。实验结果表明,该系统视频传输性能高效,能够满足视频监控基本需求。
视频监控;视频编码;网络传输;嵌入式
视频监控是保障家居安全的有效手段之一,也是后续视频中运行目标检测、识别、跟踪的基础。视频监控技术通过多年的发展,已经普遍使用,在各个场合都可以看到监控的身影,同时对监控性能也提出了更高要求,不断追求数字化和高清化。另一方面,嵌入式技术发展迅猛,其产品具备体积小、耗能低的优点,利用嵌入式进行视频监控是一大发展方向。一般监控系统大多只实现基本视频监控功能,而且布线繁琐、体积量大。本文设计了一种基于嵌入式的远程监控系统,轻便且容易安装,采用H264标准编码视频中采集的图像,提高视频传输质量,给日常视频监控带来了很大的益处。
本文设计的是一个运行在嵌入式ARM平台的视频监控系统,该系统分为4个部分[1]:前端USB摄像头图像采集、ARM板上H264图像编码、网络传输数据和PC端视频图像解码观看。系统整体架构如图1所示。
图1 系统整体架构
USB摄像头作为整个系统的前端进行视频图像采集,插在开发板的USB口上,将采集的图像传送到开发板,其中涉及到V4L2接口使用和摄像头驱动程序的移植。系统整体控制程序包括视频图像压缩编码和视频数据传输,在开发板上编码视频数据后,通过网络把数据传送到Windows客户端,其中涉及H264编码库移植和使用。客户端对视频图像接收后,将数据解码并显示观看,达到视频实时监控的目的。
本视频监控系统的硬件主要是ARM开发板和USB摄像头。ARM开发板包括底板和核心板,核心板采用S3C2440作为主控制器,主频可以达到400 MHz,运算速度可以达到450 MIPS。底板硬件资源包括3.5英寸LCD屏幕、COM接口电路、USB host、USB slave、音频接口电路、CMOS摄像头接口电路和JTAG仿真电路等[2]。丰富的接口为开发板的功能扩展提供了强大的支持,充足的容量保障了程序运行的流畅性、实现系统开发的可行性。
3.1视频图像采集
图2 视频采集流程
由前端摄像头对监控视频进行图像采集,其中主要的就是V4L2(Video for Linux2)的使用和摄像头驱动代码的移植。图像采集的具体过程如图2所示。首先调用程序将摄像头开启,即操控video0这个设备文件,然后查找自己使用的摄像头支持的图片格式,包括感光度和对比度等。之后根据查询到的图像格式设置对应的格式,设置好后需要分配图像的存储空间,最后采集图像,并对采集到的图像进行一定的处理,整个过程结束。
V4L2标准是Linux系统专门为摄像头采集图像制定的统一接口,有了该标准,无论使用哪种摄像头,只需要更改底层摄像头驱动程序,上层应用程序只要使用一套就可以操纵各种类型的摄像头,极大地方便用户进行程序开发,增加程序移植的便利性,缩短程序开发时间。V4L2提供了许多函数接口供用户调用,通过open和close来打开和关闭,通过read和write进行读写,mmap进行映射等。其中最重要的就是ioctl函数,该函数的第二个参数是命令控制参数,其中包含大量操控摄像头的命令,用户就是通过这些命令来实现对摄像头的控制。由于本文所使用的摄像头是内核支持的,所以对于摄像头驱动代码的移植,需要对内核进行配置[3],然后再次编译内核,将生成的内核下载到ARM板中,这样就能驱动摄像头采集图像。
3.2视频图像编码
摄像头采集的数据就是一帧帧的图片,每一帧图片占用空间都比较大,如果不进行压缩编码就传输,会造成占用带宽大,极其消耗网络资源,不利于客户端的查看,系统实时性也大为下降,所以对视频图像进行编码是非常有用的。H264是一种高性能的压缩编码方法,视频的压缩率可以达到150倍,拥有比MPEG更好的压缩质量,带宽占用量更小,使传输性能和实时性大幅度提高,对于资源较为匮乏的系统,采用H264编码标准不仅能提升系统整体性能,还能使系统更加实用,便于应用到生活中。
编码工作中最重要的就是H264库源码的移植和应用程序的编写。H264编解码库的移植步骤大致如下:首先到其官方网站下载H264的源码,目前开源代码库包含T264和X264(本文选择T264的源码库),下载后在Linux系统下解压,进入build目录下的linux目录中,可以看到里面包含makefile文件,修改文件中的编译器为Linux下的arm-linux-gcc[4],然后在该目录下执行make命令,对应目录下便可生成H264所需的目标文件,最后将这些文件包含到应用程序中,即可实现调用。
H264编码程序的编写主要涉及到编码库函数的使用,首先利用init_param函数进行编码参数初始化,然后使用T264_open函数打开编码器,之后利用T264_malloc函数进行内存分配,用于数据的存放,最后对图像数据使用T264_encode函数进行编码。
3.3视频图像传输
图3 视频传输过程
本文利用网络将编码后的视频图像传送到客户端,客户端与服务器之间的数据传输采用RTP(Real-time Transport Protocol)协议进行通信[5]。RTP是一种实时通信协议,传输效率高,但是其底层应用的还是UDP协议,所以也是无连接,数据传输不可靠,其广泛应用于音视频传输中。整个传输过程的流程如图3所示。
由图3可知首先要对RTP协议的参数进行初始化,然后建立连接并进行数据传输,传输完成后对传输情况进行判断,如果传输的数据都接收完毕,就关闭连接,结束传输,否则继续传输。由于其下层应用的是UDP协议,所以需要建立套接字进行通信。
3.4视频图像显示
对于图像的显示,是在PC端建立一个应用程序作为客户端,接收开发板传输过来的每一帧图像数据,然后对图像数据进行解码并显示,用户就可以通过该客户端实时查看视频监控的情况。该客户端是PC上的应用程序,采用微软的集成开发环境进行开发,利用Visual Basic语言进行程序设计。
为了验证系统的运行状况,对其进行了两方面测试。第一是编码测试,第二是最终图像显示测试。编码结果如图4所示,可以看出编码前每帧图像大小为38 016 B,编码后每帧图像大小为几百字节,极大地提高了压缩性能。最终显示的图像截图如图5所示,表明系统能够稳定地运作,满足视频监控的需要。
图4 编码效果
图5 解码后视频图像
本文基于嵌入式平台设计了远程视频监控系统,采用H264编码标准进行视频数据的编码和解码,完成了视频中图像的采集、编码、传输、解码以及显示的整套过程。整个系统运行稳定,实时性好,具有广阔的发展前景,也为后续视频中目标的检测和识别打下了良好的基础。
[1] 吴进进. 基于Web技术的嵌入式无线网络视频监控系统的设计[D].南京:南京师范大学,2012.
[2] 王龙兴. 嵌入式智能家居系统的设计与研究[D].郑州:郑州大学,2015.
[3] 程凡. 基于ARM智能家居远程视频监控系统设计与实现[D].西安:西安电子科技大学,2015.
[4] 艾红,钱运锴. 嵌入式远程视频监控与数据传输系统研究[J]. 仪表技术与传感器,2015(6):66-70.
[5] 褚典. 基于SIP和RTP/RTCP协议的视频监控系统的研究与实现[D].成都:电子科技大学,2014.
Design and implementation of remote video surveillance system based on H264
Gao Jianhui, Huang Shizhen
(College of Physics and Information Engineering, Fuzhou University, Fuzhou 350116, China)
In order to meet the demand of the embedded device in daily home surveillance, an embedded video surveillance system is designed. The system uses V4L2 interface of Linux to accomplish acquisition of video image data, uses H264 standard to code video image, and transmits video image to client via network. The client calls decoder to play video. The experimental results demonstrate that the system has high performance of video transmission and can satisfy the basic needs of video surveillance.
video surveillance; video coding; network transmission; embedded
TP277
A
10.19358/j.issn.1674- 7720.2017.19.027
高建辉,黄世震.基于H264的远程视频监控系统设计与实现[J].微型机与应用,2017,36(19):93-94,98.
2017-04-12)
高建辉(1992-),男,硕士研究生,主要研究方向:嵌入式系统。黄世震(1968-),男,博士,高级工程师,主要研究方向:集成电路设计、嵌入式系统。