摘 要:网络视频监控系统对海量视频数据存储和智能视频分析服务的需求日益突出,针对系统硬件计算能力有限,不能满足用户需求的多样性,系统扩展性受到存储设备容量的限制等问题,通过虚拟化技术构建云计算基础资源池,以Hadoop分布式文件系统存储海量视频数据,使用MapReduce编程模型实现大规模并行计算,提高了系统的可扩展性和可靠性,为用户提供实时视频监控和智能视频分析服务。
关键词:云计算;视频监控;Hadoop
近年来,随着视频编码技术、视频存储技术、视频内容分析以及IT技术的发展,视频监控正在向网络化、高清化、智能化的方向发展。网络视频监控方案改变了模拟监控中的视频传输及存储方式,系统架构更简洁、部署实施更便捷。尽管网络视频监控系统有诸多优点,但用户的需求也在不断提高,用户希望系统要有更高的清晰度,更完善的功能,更稳定的性能,更丰富的终端等。要实现大规模智能高清监控,就必须从视频源采集、视频信号编解码和传输、视频实时监控与分析、视频文件存储与回放等环节全面支持大规模智能高清。这样就给系统设计、部署带来了一系列现实的问题:网络带宽紧张、存储空间庞大、对计算性能的要求成倍增长、投资与维护成本高昂、系统扩容升级压力等。
云计算通过虚拟化技术将大量异构的服务器和网络存储设备构建成统一的资源池,为大规模智能高清视频监控系统提供可扩展的海量存储资源和超强计算能力,灵活地为用户提供所需的视频监控服务,同时减少系统建设、升级及运维管理的成本,提高资源利用率及系统运行可靠性。
1 云计算与虚拟化技术
1.1 云计算
NIST将云计算(Cloud Computing)定义为用户可以方便地、按需通过网络访问共享资源池(网络、服务器、存储、应用和服务等),并且具有快速部署、最小的管理代价或最少的服务提供商干预的一种新型IT基础运营模式[1]。Google、亚马逊、IBM(蓝云)、Oracle、微软等公司出于不同的商业模式,对云计算给出了不同的商业概念,它们都体现了云计算五个方面的特征:超大规模、高可靠性、高可扩展性、按需服务、高可用性,同时提供三种类型的服务,分别是基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。
1.2 虚拟化技术
云计算通过互联网提供动态分配的、可扩展的和虚拟化的资源。虚拟化技术是所有云计算架构的基础技术,为快速实施存储和计算性能的无缝扩展提供了保障。虚拟化既可以将单个的物理资源(比如一台服务器,一个操作系统,一个应用程序,一个存储设备)划分成多个虚拟资源,也可以将多个物理资源(比如存储设备或服务器)整合成一个虚拟资源池,虚拟化对上层应用或用户隐藏了物理资源的底层属性。虚拟化技术可以分为存储虚拟化、计算虚拟化、操作系统虚拟化、应用虚拟化等[2]。
2 基于云计算的智能高清视频监控系统设计
2.1 网络视频监控系统
大型网络视频监控系统通常由多个分布式的监控节点组成[3],每个监控节点主要由三部分组成:前端视频采集设备、集中管理系统(CMS)及客户端。前端视频采集设备包括IP摄像机和网络视频存储设备(NVR),视频数据存储在NVR中,并由NVR向CMS和用户转发。视频智能分析通常由单独的硬件或嵌入到CMS中的软件来实现。这种方案便于对设备和视频数据进行集中管理,但是在可扩展性、资源利用率及系统性能方面却存在不足。在可扩展性方面,随着前端摄像机数量的增加,要相应地增加NVR。在资源利用率方面,NVR的剩余存储容量不能进行灵活分配。在系统性能方面,当有多个用户并发访问同一NVR或对多个视频流进行实时智能分析时,网络带宽和硬件计算能力成为系统瓶颈。
2.2 系统功能架构
基于云计算的智能高清视频监控系统在逻辑上可分为前端视频输入、云计算部分及视频输出。视频数据从前端设备上传到“云”端,在大规模视频监控系统中前端摄像机的数量可能达到数以千计,需要设计可扩展的存储架构来优化视频数据的存储和分发,同时提供进行实时视频智能分析所需的计算性能。
基于云计算的智能高清视频监控系统功能架构如图1所示。
系统主要由以下组件构成:
(1)虚拟化资源池:使用虚拟化技术将监控节点的物理资源构建成统一的资源池,形成视频监控系统的基础设施。图2表示了在虚拟机资源的分配情况。在可扩展的系统架构中,所有系统资源都是模块化的,并且可以根据实际使用情况进行动态分配。
(2)视频流采集:将前端设备输入的视频流转换为标准视频格式,通过动态地分配实时负载,支持大规模视频流采集。
(3)流媒体服务器:在分布式监控节点中的每台虚拟机上安装流媒体服务器,虚拟机之间共享计算资源和网络带宽。使用内存映射文件技术(memrory-mapped file)来存储临时视频数据,减少了用户进行实时监控视频时的磁盘I/O开销。通过集成开源软件FFmpeg,对实时监控视频进行格式和分辨率转码。
(4)Hadoop文件系统:实现分布式的视频数据存储和备份机制。在视频流采集模块处理完输入视频流后,使用Hadoop-Fuse协议将视频数据存储在Hadoop文件系统中[4]。
(5)策略控制模块:该模块通过操作分布式数据库HBase,实现访问控制并记录用户操作日志。
(6)智能分析模块:由于视频数据存储在Hadoop文件系统中,可以使用Hadoop Map/Reduce分布式计算模型来进行智能视频分析。
(7)Web服务器:用户不需要安装单独的软件,通过Web浏览器就可进行内容管理及视频检索服务。
2.3 系统部署方式
如图3所示,部署基于云计算的智能高清视频监控系统主要包括中心节点和监控节点两部分。中心节点为所有监控节点提供命名节点集群(Name node cluster)、视频分析算法函数库及控制策略,对监控节点资源进行统一分配[5]。监控节点提供计算和存储资源,负责接收处理本地输入视频流,视频数据存储在本地或相邻的监控节点上,并为用户提供远程实时视频监控和智能分析服务。
3 关键技术及实现
3.1 视频数据存储备份
系统基于Hadoop分布式文件系统的数据副本机制对视频数据进行备份。一个视频数据块有三个副本,副本的存储位置如图4所示,第一个、第二个副本放在监控节点本地的两个数据节点上,而第三个副本放在其他监控节点的数据节点上,当某一节点上的数据被破坏后,可以读取其他节点上的副本,提高了系统稳定性。
3.2 视频智能分析
视频监控系统智能分析包括实时视频分析和离线视频分析。视频数据存储在Hadoop文件系统中,可以使用Map/Reduce大规模并行计算处理图像识别、人脸识别、行为检测、移动跟踪等需要大量CPU计算能力的任务。
3.3 实时转码(Transcending)
由于用户端设备所支持的视频格式不同,并且图像显示分辨率受到传输带宽的限制,需要对源视频流进行转码,以适合用户实际的格式和分辨率。开源软件FFmpeg能够动态地对视频进行转码,但是软件本身是CPU敏感的应用,如果有大量用户访问同一服务器,会造成系统瓶颈,通过在多台服务器上存放视频流不同的副本,由多台服务器分担转码任务,较好地满足了不同的用户请求。
本文提出了一种基于云计算的智能高清视频监控系统的解决方案。通过整合视频监控系统中计算和存储硬件资源,实现了对硬件资源的统一配置,提高了系统的可扩展性、资源的使用效率,满足了用户对高清化、智能化的需求,同时对视频数据备份、视频智能分析、实时转码等关键技术进行了阐述和分析。
参考文献
[1] MELL P, GRANCE T. The NIST Definition of Cloud Computing(Draft). NIST Special Publication 800-145, January 2011.
[2] LI P. Selecting and using virtualization solutions: our experiences with VMware and VirtualBox[J]. Journal of Computing Sciences in Colleges, 2010,25(3):11-17.
[3] OSTHEIMER D, LEMAY S, GHAZAL M, et al. A modular distributed video surveillance system over IP [C]. 2006 Canadian Conference on Electrical and Computer Engineering, CCECE′06, May 7-10 2006:518-521
[4] KUO T, NI Z, DE LEO C, et al. Design and Implementation of a Wide Area, Large-Scale Camera Network[C]. IEEE Computer Society Conference on Computer Vision and Pattern Recognition, IEEE Workshop on Camera Networks, Jun. 2010.
[5] DETMOLD H, HENGEL A, DICK A, et al. Topology Estimation for Thousand-Camera Surveillance Networks[C]. IEEE Distributed Smart Cameras(ICDSC),2007:195-202.