基于H.264的云端视频监控系统设计
2015-03-17艾博文沈永良张金富
艾博文,沈永良,张金富
(黑龙江大学 电子工程学院,哈尔滨 150080)
基于H.264的云端视频监控系统设计
艾博文,沈永良*,张金富
(黑龙江大学 电子工程学院,哈尔滨 150080)
提出了一种基于H.264视频编码算法并采用云服务器实现的视频监控系统设计方案。该方案是视频采集端与监控控制端分离的分布式监控系统。视频采集部分采用三星Exynos4412处理器基于Linux实时操作系统进行软件设计;视频实时编码采用FFmpeg音视频解决方案,对USB摄像头采集的视频基于H.264编码,选用实时消息传输协议(RTMP)通过网络传输给监控控制端。监控控制端基于云服务器平台设计,云服务器选用流媒体直播服务器,对视频数据进行实时解码、播放与存储。测试结果显示,系统具有良好的实时性,满足了基本的设计需求。
H.264;云服务器;视频监控;FFmpeg
0 引 言
2015年的《政府工作报告》中指出,制定“互联网+”行动计划,推动移动互联网、云计算、大数据、物联网等与现代制造业结合,而在“互联网+”时代下,安防领域将迎来前所未有的机遇和挑战。如今,基于H.264视频编码算法[1]的720P高清实时监控的码率达到2 Mbps,录像1 h·d大约需要21 GB存储空间,这对于传统监控设备来说,需要巨大的存储空间,价格不仅十分昂贵,由于各个监控设备的存储空间是分离的,无法整合存储资源,从而导致了资源浪费。随着云计算、大数据的蓬勃发展与成熟,云视频监控系统[2]的出现使得上述问题得到了很好的解决,它将云端存储空间进行合理整合并分配。
基于现有的云视频监控系统方案设计复杂、占有带宽高等情况,本文提出了一种新的分布式的云视频监控系统方案,并且给出了更加详尽的设计方法。本文所采用的H.264视频编码算法能在相同视频质量的情况下节约30%的网络带宽[3]。针对监控控制端,本方案提出了一种新的设计思想。监控控制端不再采用传统的视频采集监控一体的监控设备,而是以云服务器为监控控制平台,对视频流数据进行实时解码播放,从而实现流媒体的直播,并且利用云服务器巨大的存储空间,对视频数据进行实时存储。
1 系统方案及硬件平台
本系统采用友善之臂最新推出的NanoPC-T1[4]开发板作为视频监控端的硬件平台,开发板的软件平台基于Linux系统。系统的总体方案设计流程如下:USB高清摄像头采集到实时视频数据流,数据流经H.264算法编码后,利用实时消息传输协议(RTMP)将编码后的视频数据传送到云端服务器,云服务器集成的流媒体服务器可以对视频数据进行解码播放及存储,最终用户可通过PC终端或手机APP访问及控制云端服务器。系统结构图见图1。
图1 系统结构图Fig.1 Structure chart of the system
由于视频监控的数据采集及编码对实时性要求很高,尤其是基于H.264视频编码算法,更需要性能优异的CPU。因此本文所采用的硬件平台是基于三星Exynos4412四核处理器的一款高性能开发板。Exynos4412是一款基于ARM Cortex-A9架构研发的CPU,其主频最高达到1.5 GHz,并且支持USB 2.0版本的通信协议从而能实时读取USB摄像头采集的数据,此外它还支持视频图像的硬件编解码[5]。本系统的USB摄像头采用Gsou A20高清USB摄像头,采集640×480的视频帧,采样速率为30 fps/s,完全满足实验需求。
2 软件平台设计
2.1 操作系统平台搭建
嵌入式Linux操作系统主要由Bootloader、Linux内核、根文件系统和应用程序4部分组成[6]。
Bootloader是Linux系统的引导加载程序。本系统采用UBoot作为引导加载程序,它是开源的,最后根据源代码编译成适合于本系统硬件平台的二进制文件。Linux内核采用Linux 3.5版本的内核。在内核的配置中,主要添加USB、USB摄像头、网卡、串口等驱动程序,最终编译成二进制文件。根文件系统是用busybox软件制作而成的Ext4文件系统,是目前主流的文件系统之一[7]。它是第四代扩展文件系统,能够支持大容量文件系统和大容量文件。在进行项目开发时,则采用NFS网络文件系统,方便程序的调试,提高开发效率。
2.2 视频采集端主程序设计
2.2.1 视频采集总体方案
视频采集端的主程序设计是本文设计的核心部分,该应用程序是基于FFmpeg音视频解决方案之上的二次开发。FFmpeg是一款优秀的多媒体框架,它集成了视频的解码、编码、转码、流化、滤波、复用以及播放为一体,为视频类应用程序开发者提供了完整的解决方案[8-9]。主程序采用Linux V4L2采集USB视频数据,它是Linux系统中针对USB免驱设备的编程框架,简化了视频系统的开发[10]。视频传输部分采用实时消息传输协议(RTMP),它是一种实时数据通信的网络协议,广泛用于直播、点播、聊天等应用。
主程序流程图见图2。采用Linux V4L2采集USB视频数据,用X264编码器进行视频数据编码,最后基于RTMP协议传输视频数据。
图2 主程序流程图Fig.2 Flow chart of the main program
2.2.2 USB摄像头视频采集
基于Linux V4L2的USB摄像头视频采集流程图见图3。
图3 V4L2视频捕捉流程图Fig.3 Flow chart of video capture based on V4L2
在此视频捕捉过程中,采用了内存映射的方式,提高了视频原始数据的采集速度。由于V4L2在FFmpeg中已经封装好了对应函数,只需要调用即可,FFmpeg中V4L2部分的函数调用步骤见图4。
图4 视频捕捉函数调用流程图Fig.4 Flow chart of function call about video capture
2.2.3 视频编码
H.264是国际标准化组织和国际电信联盟共同提出的新一代数字视频编码算法,它是当前在视频监控设备中运用最广泛的。H.264具有抗误码特性强、丢包率高自适应调节的特点,而且在干扰严重的信道中也能有很好的表现。因此本文设计的系统采用H.264视频编码算法。
目前,基于H.264标准的编码器主要分为硬件解码器和软件解码器,为节约成本,本文采用软件编码器。H.264软件编码器主要有JM、T264、X264。
JM:实现了H.264算法标准的所有要求,但其程序结构复杂,编码复杂度很高,不实用。
T264:由T264编码器编码的视频数据只能由T264进行解码,因此其通用性较弱。
X264:开源且注重实用。在基本不降低编码性能的前提下,计算复杂度却低于前两者,源代码结构类似于Linux系统源代码,适合于Linux程序员使用,并且软件更新频率比较高。
基于以上对比,本系统采用X264作为视频的软件编码器。
基于X264编码器的视频编码流程图见图5。
图5 视频编码流程图Fig.5 Flow chart of video encoding
由于FFmpeg中集成多种编码器于一体,其中也支持X264编码器,但是对于不同编码器,其函数调用却相同。FFmpeg中视频编码部分的函数调用步骤见图6。
图6 视频编码函数调用流程图Fig.6 Flow chart of function call about video encoding
2.2.4 视频传输
视频传输部分基于RTMP协议,主要实现过程分为握手、建立网络连接、建立网络流3个步骤。FFmpeg中基于RTMP协议传输H.264压缩视频的函数调用步骤见图7。
图7 RTMP数据发送函数调用流程图Fig.7 Flow chart of function call about RTMP data-sending
2.3 云端服务器设计方案
本系统,采用了杭州奥点科技有限公司的云服务器,该公司主要为客户提供流媒体直播、智能通讯等PaaS云平台服务。该公司的流媒体直播服务LSS(Live Streaming Service)可适用于远程视频监控服务。
若购买奥点云500 M以上的云流媒体服务,就可使一千个用户同时使用,配置先进。如果选用该公司的流媒体服务,只需要花费很短的时间,就能在业务系统中运行,并且奥点云服务器在网络节点货服务器发生故障时,不会导致用户无法访问,实时监控并检测着各个服务环节,确保服务器正常运行。这给开发者带来了便利。
鉴于以上优点,本系统租用了10 GB直播流量,10 GB点播流量,10 GB存储容量的套餐。此云服务器只需输入RTMP输出流地址,即自动生成HTML语言,用户可在远程访问并录制视频。
3 系统测试
3.1 系统测试平台
系统的嵌入式平台选用友善之臂公司的NanoPC开发系统,嵌入式系统内核版本采用Linux-3.5,交叉编译工具选用arm-linux-gcc-4.5.1,编码器版本为x264-snapshot-20141218-2245,接收端是云服务器端。本系统采用了NFS网络文件系统,有助于开发时的调试,调试时宿主机为Linux虚拟机,通过RS232串口输出调试信息。
3.2 测试结果分析
首先连接好硬件平台,挂载NFS文件系统,并且设置Linux虚拟机与ARM开发板在同一个网段下并且能ping通网络,则说明网络连接正确;当插入USB摄像头后,在终端运行cat /dev/video15命令,若有数据输出则表明当前USB摄像头驱动在当前Linux中运行正确。当主程序运行后,登录云服务器网页就可看见实时视频播放效果,见图8。
经过多次实验测试,在编码640×480分辨率的实时视频时,在最大编码速度情况下本系统可达到20 fps的码率,基本满足了实时性的要求。
图8 户外实时视频画面Fig.8 Real-time video outdoors
4 结 论
本系统采用了三星Exynos4412四核处理器作为控制芯片,以云服务器为基础,设计了一种基于H.264的云端视频监控系统,系统运行于友善之臂NanoPC开发系统之上,通过移植Linux操作系统,FFmpeg音视频处理库,X264编码库,使用RTMP网络协议,实现了视频的实时编码与云端的显示。实验过程中,发现长时间的视频监控会导致视频延迟比较严重,这是由于视频采集端与接收端时间戳的设计不理想,今后将对此缺陷深入的研究与实践。
[1]毕厚杰. 新一代视频压缩编码标准H.264/AVC[M]. 北京: 人民邮电出版社,2005.
[2]熊永华, 张因升, 陈 鑫, 等. 云视频监控系统的能耗优化研究[J]. 软件学报, 2015, (3):680-698.
[3]张洪涛, 王 洋, 毛洪飞, 等. 基于H.264的嵌入式视频监控系统的设计[J]. 湖北工业大学学报, 2010, (5): 11-13.
[4]Nano PC User’s Manual[EB/OL]. http://www.arm9.net, 2013.
[5]Samsung Electronics. Exynos4412 SCP RISC Microprocessor User’s Manual(revision 0.10)[EB/OL]. http:// www.samsung.com, 2012.
[6]韦东山. 嵌入式Linux应用开发完全手册[M]. 北京: 人民邮电出版社, 2008.
[7]陈海燕, 任松岩. 嵌入式Linux根文件系统的研究[J]. 现代电子技术, 2010, (4): 73-75.
[8]Wikipedia.FFmpeg[EB/OL]. http://en.wikipedia.org/wiki/FFmpeg.[9]孙艳茹,沈永良.基于相位相关匹配法的图像复原技术[J].黑龙江大学工程学报,2014,5(4):69-75.[10]Video for Linux Two API Specification(revision 3.19)[EB/OL].http://www.linuxtv.org, 2014.
Design of cloud video surveillance system based on H.264
AI Bo-Wen, SHEN Yong-Liang*, ZHANG Jin-Fu
(School of Electronic Engineering, Heilongjiang University, Harbin 150080, China)
A design method of the video surveillance system based on H.264 and cloud server is proposed. It is a distributed monitoring system which separates the video capture and monitor control into two parts. The software design of video capture part using a central processing unit from Samsung named Exynos4412 is based on the Linux real-time operating system. The real-time encoding of video uses FFmpeg solution which encodes the video captured by USB camera based on H.264 and then transmits it by real time messaging protocol through the Internet. The control and monitoring system is based on cloud server, adopting the live streaming server. It has the function of real-time decoding, real-time playing and storage. According to the test results, the system has good real-time capability and meets the need of design requirement.
H.264; cloud server; video surveillance; FFmpeg
10.13524/j.2095-008x.2015.04.067
2015-07-14;
2015-08-05
2015年黑龙江大学研究生创新科研项目(YJSCX2015-019HLJU)
艾博文(1991-),男,江苏常熟人,硕士研究生,研究方向:智能仪器和智能测控技术,E-mail:252719278@qq.com;*通讯作者:沈永良(1964-),男,黑龙江双鸭山人,教授,博士,研究方向:图像检测与测控仪表,E-mail:shen-yl@163.com。
TP277
A
2095-008X(2015)04-0068-05