匡 艳,董 骞,王晓东
(公安部第一研究所,北京 100048)
HVR系统中多路视频接入和处理的软件设计
匡 艳,董 骞,王晓东
(公安部第一研究所,北京 100048)
针对多路混合型硬盘录像机系统中多路摄像机视频的接入和处理问题,在基于服务器和编码板卡构架的HVR系统基础上提出了可靠高效的多路视频接入和处理软件方案,并实现了此方案。在多路视频接入和处理中,需对多通道视频并行处理及同一视频通道同时执行多个功能,针对此过程中可能存在的资源冲突问题进行了优化,提出了完善的多通道并发操作及视频码流分发机制、功能会话安全结束机制。测试结果表明,应用该软件方案的系统可接入能力强,资源占用率低、系统稳定可靠。
混合型硬盘录像机;视频;接入
随着视频编码及网络通信技术的发展,高清化和数字化的网络视频技术逐渐取代传统的模拟视频技术,但由于高清网络视频技术成本以及发展成熟性的限制,在市场上的应用还存在一定的局限性。因此目前仍然是模拟视频和高清网络视频并存的局面。针对目前视频技术发展现状,视频存储厂商推出了混合型硬盘录像机(HVR)[1]产品模型。
HVR既能接入模拟摄像机,又能接入高清网络摄像机,实现了二者的并发接入和视频存储管理。因为其融合了DVR(数字硬盘录像机)[2]产品成熟的功能,结合了NVR(网络硬盘录像机)高清和网络的优势,逐渐成为市场的主流。现有的录像机分为基于PC服务器构架的硬盘录像机和嵌入式硬盘录像机[3],由于基于PC服务器构架的硬盘录像机具有存储容量大、存储效率高、可接入性能强等优势,得到了越来越多的应用。
本文介绍了基于服务器构架的HVR的系统框架,提出高效可行的多路摄像机视频接入和处理软件方案并进行实现。
1.1 系统硬件框架
本系统采用基于服务器的硬件构架,该服务器采用INTEL 64位CPU处理器,处理性能优越。此外,该服务器提供硬盘阵列的RAID管理,保证了视频数据的高效安全存储。通过服务器的PCIe接口插槽接入编码板卡,实现模拟视频数据的采集及模拟摄像机的接入,通过服务器的双千兆以太网分别实现高清网络摄像机的视频接入和HVR设备的联网功能。系统硬件框图如图1所示。
图1 系统硬件框图
该系统的硬件构架和处理性能保证其具有对多路视频的接入和运算处理能力,并利用RAID硬盘阵列技术实现图像数据的可靠高效存储。
1.2 系统软件框架
系统软件功能主要由模拟视频采集和压缩编码、多路摄像机视频接入和处理、图像数据存储三部分组成。模拟视频采集和压缩编码功能软件在服务器外接的编码板卡上运行,其余功能软件模块均在服务器上运行。服务器和编码卡通过PCIe接口通信,保证大量视频数据的高速交换,在服务器端通过调用编码板卡提供的接口函数和驱动实现对编码板卡的控制。系统软件框架如图2所示。
图2 系统软件框图
模拟视频的采集和压缩编码软件主要负责实现对模拟视频数据的采集、预处理和压缩编码[4]。其可对接入的16路PAL制模拟视频信号进行采集,对采集到的模拟视频进行预处理,变换为YUV格式数字视频信号,最后对预处理后数字视频信号分别进行H.264格式的压缩编码。
多路摄像机视频接入和处理主要负责实现多路模拟摄像机和高清网络摄像机视频的接入[5],并对所接入的视频数据进行相应处理,是系统功能实现的核心部分。该部分由模拟摄像机视频接入和处理、高清网络摄像机视频接入和处理两个模块组成。
图像数据存储主要负责将从多路摄像机视频接入和处理软件模块获取的处理后图像数据按一定存储规则写入本地硬盘阵列,并按存储规则建立视频流索引文件,保证对存储视频数据的快速检索回放。
2.1 多路模拟摄像机视频接入和处理
多路模拟摄像机视频接入和处理部分主要通过调用编码板卡接口函数对编码板卡进行初始化配置、控制编码板卡的视频压缩编码、从编码板卡获取编码后视频数据流(Element Stream, ES)或YUV格式视频数据,完成多路模拟视频的接入功能,并把多路ES数据流封装为可以播放的节目流(Program Stream,PS)[6],最后对PS流进行相应处理和传输,为系统录像、历史视频回放、视频实时播放等功能提供符合特定流媒体格式要求的数据源。
模块启动时主要完成读取配置文件信息、对编码板卡进行初始化设置工作。主要包括编码板卡固件升级、编码板参数设置、编码板上各个视频通道参数设置等。通过调用编码板卡驱动对编码板卡进行初始化。
模块启动流程如图3所示。
图3 启动流程图
模块初始化完成后,可接收外部会话消息,根据消息启动对应线程执行相应功能,实现系统中各个应用功能。在此创建外部消息会话接收处理线程,负责接收外部会话消息,并根据不同会话类型触发相应事件处理线程。外部消息会话接收处理线程是软件模块的主线程,线程接收的主要会话类型包括实时点播会话、图像数据存储会话、历史视频回放会话。会话处理流程如图4所示。
2.2 多路高清网络摄像机视频接入和处理
多路高清网络摄像机视频接入和处理主要实现高清网络摄像机的接入,并通过网络接口获取高清网络摄像机的视频码流,进行处理后发送给相应功能模块进行存储和播放控制。图5为模块主程序流程图。
图4 外部会话接收处理线程
图5 模块主程序流程图
为了能够兼容不同厂商的网络摄像机,对于高清网络摄像机的接入采用GB/T 28181—2011标准规定的SIP协议[7]实现,主要包括标准中规定的网络摄像机的注册、心跳报送、点播等功能。在模块中根据配置的网络摄像机基本信息实现对网络摄像机的注册认证,根据接收到的摄像机心跳信息,可判断摄像机的在线状态[7],实现网络摄像机在系统中的接入。
外部会话接收处理线程负责接收外部会话,并根据不同会话类型启动相应子线程执行不同处理,完成对网络摄像机通道视频流的获取及点播、录像、回放等操作。该模块通过向在线网络摄像机发送视频点播SIP信令获取码流,然后创建RTP接收子线程接收网络摄像机的RTP格式媒体流并根据不同会话类型对媒体流进行相应处理。
2.3 多通道并发操作及视频码流分发机制
在多路摄像机视频接入过程中,需要同时获取多个摄像机通道的视频码流,且对一路摄像机视频流可能同时进行实时点播、视频存储、视频回放操作,对会话和通道资源的管理不恰当,会造成通道视频资源的冲突。针对以上问题,设计了一套完善的多通道并发操作[8]及视频码流分发机制。
为了对多个摄像机通道及会话进行管理,定义以下几个数据结构和类:
1)struct VRLSTRUCT,该数据结构管理摄像机通道资源,一个该数据结构对象对应一路摄像机通道资源,根据配置文件对该结构体成员变量进行赋值,并对摄像机通道初始化,对该路摄像机通道初始化完成后将该通道资源提交到摄像机通道资源安全列表[9]中,由通道资源安全列表对多路摄像机通道资源进行统一管理。该结构体包含以下关键成员变量:
(1)CMyESSession *m_pMyESSession,该成员变量类负责管理相应通道视频流的获取和图像数据处理操作,对该类的详细说明见下文。
(2)nt m_nCameraNo,该成员变量定义摄像机通道号,标识对应的摄像机通道内部编号。
2)class CMyESSession,该类负责对相应通道视频流的获取和图像数据处理进行管理,包含以下关键成员变量及函数:
(1)LPVRLSTRUCT m_pVRL,该成员变量使得CMyESSession类和摄像机通道资源建立对应关系。
(2)static UINT ProcessVideoQueue(),该成员函数为获取相应通道编码后视频流并进行处理的线程函数。
3)class CP2PSession,该类管理对摄像机通道的会话请求,对于一路摄像机通道资源中的每一个不同会话,创建一个CP2PSession类,该类是会话最小单元,同一摄像机通道资源的所有该会话类由会话资源列表统一管理。该类的成员变量及函数如下:
(1)enum SessionType,该成员变量为枚举类型,定义会话类型,主要包括实时播放、视频存储、视频回放会话类型。
(2)LPVRLSTRUCT m_pVRL,该成员变量使得视频会话和对应摄像机通道资源建立对应关系。
(3)m_nRequestID,需求ID,每一个不同会话请求都会有一个需求ID参数,该ID是会话的唯一标识,用以对不同会话进行区分。
(4)UINT ReadStreamThreadFunc(),该成员函数为线程处理函数,负责从存储模块码流共享队列中获取对应通道的检索历史视频流。
(5)void PushStreamData(),该成员函数负责对对应通道PS码流进行RTP封装及发送,实现实时点播及历史视频回放功能中的视频流传输。
通过以上几个数据结构和类,实现了不同摄像机通道资源和会话的关联。图6为摄像机视频通道资源和会话关联结构图。
当有新的会话请求时,对于会话的处理过程如下:
1)新建CP2PSession会话对象,根据会话请求信息实例化该对象的成员变量。
2)根据会话请求的摄像机通道ID在摄像机通道资源列表中找到对应的摄像机通道资源。判断会话类型,若为实时点播或视频存储会话,执行过程3),若为历史视频回放会话,执行过程5)。
图6 视频通道资源和会话关联结构图
3)若为实时点播及视频存储会话,需共用从摄像机通道获取的编码后ES流,并进行视频流分发,对于这两种类型会话,首先判断对应摄像机通道资源pPVL有无实例化的m_pMyESSession成员变量类,若没有则说明在该会话之前没有获取该通道视频流记录,需要新建CMyESSession类的对象并实例化该成员变量,将摄像机通道资源和m_pMyESSession对象绑定,然后执行过程4)。
4)启动CMyESSession对象中的视频处理线程,接收对应通道编码后视频数据并进行封装及相应处理,然后轮询查询会话列表,根据不同会话个数及会话类型对视频流进行分发。
5)启动CP2PSession对象中的ReadStreamThreadFunc()线程从存储模块获取对应通道的历史视频流,并调用该对象中的PushStreamData()函数将码流发送至显示端口。
通过以上多通道视频资源和会话的关联,使多通道并发操作及码流分发机制更加完善,避免了在多个视频通道并发操作以及一个视频通道同时进行多个会话时的资源冲突问题。
2.4 会话安全结束机制
如果同一摄像机通道有多个会话开启时,在一个会话结束时,需安全有效地释放为该会话申请的资源。如果对会话占用资源的释放不彻底,会造成内存泄漏,该情况的累积可能会使系统崩溃;另一方面,会话所占用资源的不当释放又可能会影响其他会话功能。对此设计了一套会话的安全结束机制,该机制可保证系统对会话资源有效地释放,既不影响其他会话功能又不会造成系统内存泄漏。清除过程如下:
1)从会话列表中清除该会话。
2)判断待结束的会话类型,如果为实时点播或视频存储,则执行过程3),其余会话类型执行过程4)。
3)判断会话列表中有无会话占用m_pMyESSession对象资源,若无会话占用该对象资源,则删除该对象,释放其占用的所有资源,停止对象中的视频处理线程,并调用编码卡驱动结束对应通道编码。然后执行过程4)。
4)删除该CP2PSession会话对象,释放该对象占用的所有资源。
经过测试,基于该构架的HVR系统存储容量大、存储效率高、可接入能力强,性能可靠稳定,测试结果和预期基本吻合。上述多路摄像机接入和图像数据处理软件的设计保证系统具有以下优势:
1)可同时接入16路模拟摄像机和32路高清网络摄像机(等效128路数字D1)。
2)可同时对模拟摄像机和网络摄像机通道进行录像和16路视频预览或回放操作,系统资源占用率仅为30%左右。
3)对获取的多路视频进行处理后视频画质清晰,预览或回放效果良好,满足安防行业监控需求。
由于其既可接入模拟摄像机,又可接入数字网络摄像机,布局灵活,具有良好的应用前景。本文中多路视频接入和处理软件部分的设计与实现是系统功能和性能优势得以体现的核心部分,对于HVR系统开发具有一定的参考价值。
[1]陈刚.视频监控系统常用存储技术及发展趋势[J].数字技术与应用,2013(3): 234-236.
[2] 赵传跃,彭宏.DVR系统中视频采集压缩的软件设计[J].杭州电子科技大学学报,2010,30(5):145.
[3]马喜廷,孟荣芳.数字硬盘录像机[J].电视技术,2003,27(6):87-88.
[4]李少龙.视频数据采集及编码技术的研究与实现[D].西安:西安电子科技大学,2012.
[5]王健,宋颖慧,向建军.远程无线多路视频处理系统设计与实现[J].测控技术,2013,32(12):20-23.
[6]尹睿男.音视频采集与传输系统设计[D].北京:北方工业大学,2012.
[7]GB/T28181—2011,安全防范视频监控联网系统信息传输、交换、控制技术要求[S].2011.
[8]杨开杰,刘秋菊,徐汀荣.线程池的多线程并发控制技术研究[J].计算机应用与软件, 2010,27(1):168-170.
[9]常奇峰.基于VC++的数字图像处理软件开发[M].南京:南京航空航天大学出版社,2010.
匡 艳,女,工程师,主研智能信息处理、图像处理与应用;
董 骞,副研究员,主研智能信息处理、图像处理与应用;
王晓东,工程师,主研智能信息处理、图像处理与应用。
责任编辑:闫雯雯
Software Design of Complex Channel Video Connecting and Processing in HVR System
KUANG Yan,DONG Qian,WANG Xiaodong
(FirstResearchInstituteoftheMinistryofPublicSecurityofPRC,Beijing100048,China)
Point at the complex channel video connecting and processing question in Hybrid Video Record system, a reliably and high efficiency way to realize the complex channel video connecting and processing in the Hybrid Video Record system is given in this paper, which based on the hardware structure of server mainboard and encoding card.To deal with the problem of the resource conflicting while multi-channel video signal processing and performing several functions in one channel at the same time, a perfect mechanism of the parallel operation to multi-channel and the video stream distributing as well as how to exit one function safely is also designed in this paper.The actual test results prove that the system have high ability of the video connection, low occupancy rate of system resources, high quality of video and stability of performance.
hybrid video record; video; connecting
国家科技支撑计划项目(2012BAH21B02)
TN94
A
10.16280/j.videoe.2015.05.012
2014-07-24
【本文献信息】匡艳,董骞,王晓东.HVR系统中多路视频接入和处理的软件设计[J].电视技术,2015,39(5).