文 凯,张 润,王尚波
(1.重庆邮电大学 通信新技术应用研究中心,重庆 400065;2.重庆信科设计有限公司,重庆 400065)
基于Hi3531的NVR软件平台的设计与实现
文 凯1,2,张 润1,王尚波1
(1.重庆邮电大学 通信新技术应用研究中心,重庆 400065;2.重庆信科设计有限公司,重庆 400065)
为了满足市场对兼容性强和简单易用的NVR软件平台的需求,通过分析和研究Hi3531媒体处理平台、ONVIF、流媒体、Qt等技术,设计并提出了一种NVR软件平台设计方案。介绍了NVR系统和软件架构的设计方法,重点讨论了NVR实时预览和录像回放模块的实现。最后,给出了平台的运行效果。
NVR;Hi3531;实时预览;录像回放
随着国民安防意识的增强,以及平安城市建设步伐的加快,国内网络视频监控进入迅猛的发展时期。但是市面上,由于存在各厂家设备的兼容性差和传输距离短等问题,严重影响网络视频监控系统的普及,标准化和网络化的NVR软件平台已成为研究热点。
Hi3531平台由华为海思公司制造,具有8路D1或5路1 080p的解码能力,同时提供视频处理功能,能满足多数视频监控系统的需求[1]。本NVR系统采用Hi3531平台,结合Web、流媒体技术、ONVIF和Qt等主要技术,实现了一个具有兼容性好、实用性强的NVR软件平台。
1.1 系统架构概述
NVR以海思Hi3531为媒体处理平台,采用ONVIF作为信息交互协议。NVR系统设计原理如图1所示,NVR首先通过ONVIF获得IPC的媒体URL,流媒体客户端通过此URL向IPC请求视频数据,然后将请求到的数据经Hi3531解码模块之后显示。在本地客户端呈现远程设备管理、系统管理和录像回放等功能。NVR同时响应远程Web客户端的请求,并通过网络向远端的PC用户转发IPC的音视频数据和网络控制消息,实现远程实时预览、远程录像、远程报警、远程回放及远程云台控制等功能。
图1 NVR系统设计原理
1.2 软件架构设计
NVR系统软件架构如图2所示。
图2 NVR系统软件架构
下面简要介绍NVR的主要模块:
1)协议服务模块
本模块用于实现协议通信服务,由ONVIF协议和Web服务器组成。ONVIF协议描述网络视频的接口、数据类型和数据交互的模式[2],Web服务器为网页浏览提供服务。
2)逻辑处理模块
该模块负责完成系统的逻辑功能,主要包括录像回放、实时预览、系统管理和远程设备管理等。本模块的主要任务是实现实时预览和录像回放,因为在协议服务模块中实现了其他逻辑业务,比如远程设备管理[3]。
视频解码模块主要是通过解码引擎处理接收到的音视频数据。为了实现图像数据的预览、编码或抓怕,将解析后的数据发往视频处理子系统 (Video Processing Sub System,VPSS)进行处理,VPSS可对图像进行图像增强、锐化、去噪等处理,并同源输出多路不同分辨率的图像数据,最后把数据送到显示设备上显示。
录像回放模块主要是请求视频流,按照录像策略,将视频数据生成某种特定的格式写入硬盘,并能通过通道号、日期实现快速录像查询。
3)客户端
系统采用C/S和B/S相结合的架构,客户端分为Web客户端和本地客户端,用于将系统功能以界面的方式呈现给用户,客户端通过SOAP协议实现与协议服务模块之间的通信。Web客户端用户只需输入服务器的IP就能访问服务器,下载并安装视频插件,通过C/S的安全登录认证,就能登录服务器并访问设备。本地客户端由Qt开发,具有可移植性强,开发周期短、模块程度高、支持2D/3D图形渲染等特点[4]。
4)操作系统
操作系统层采用Linux 3.0.8内核,其专门用于海思系列多媒体Soc。该系统具有精简的内核,媒体处理层驱动在启动时通过模块的方式动态加载,因而应用程序具有更高的灵活性。
NVR逻辑处理主要完成系统管理、实时预览、录像回放和远程设备管理等功能,本节重点讨论实时预览模块和录像回放模块。
2.1 实时预览模块
实时预览是NVR最重要的功能之一,该模块涉及ONVIF、流媒体和解码等技术。ONVIF主要用于发现设备,获得设备IP地址、设备能力、码流令牌等。流媒体则根据码流令牌获得码流的URI,通过URI请求码流。视频解码其是对码流解压缩的过程,为了满足实时性要求,NVR采用的是Hi3531的硬件解码器。该芯片具有高达5路1 080p实时多协议解码能力,保证了系统的流畅性和实时性。
1)获得码流令牌
码流分为主码流和子码流,通过不同的令牌标记。要获得码流令牌,需要完成以下步骤:首先,当摄像头接入监控网络中时,会多播包含设备类型、作用域和IP的hello报文。其次,NVR收到报文后,多播包含设备类型和作用域的probe报文。然后,所有在网摄像头解析报文,提取设备信息查看是否匹配,如果匹配成功,则返回包含设备类型、作用域和IP的match报文。最后,将设备增加到NVR的设备列表中,有了摄像头的IP地址就能获得设备的能力,得到设备的媒体服务信息地址mediauri,获得摄像头的所有配置文件(profiles)信息,进而获得码流令牌profiletoken,格式如:videosource_192_168_1_108_0_000。通过ONVIF获得码流令牌,极大的提高了平台的兼容性。
2)请求码流
通过码流令牌,构造流媒体地址URI,格式如:rtsp://192.168.1.134:554/cam/realmonitor?profile=videosource_192_168_1_109_0_000&streamname=108。由于Live555容易扩展,采用它完成RTSP传输和接收功能,降低了平台的开发难度。通过流媒体地址URI与IPC流媒体服务器建立连接,创建RTP/RTCP会话,并持续接收媒体流数据,发往解码引擎。
3)视频解码
视频解码器对码流进行解码,之后对图像进行处理,如去噪、锐化和图像增强等[5]。视频解码过程如图3所示。
2.2 录像回放模块
录像回放模块是NVR最重要的功能之一,主要包括存储和回放两部分。
2.2.1 录像存储
1)存储策略
在录像存储的过程中,会频繁读写和删除文件。频繁删除文件会造成大量碎片,因而严重影响文件的读写速度,造成硬盘的空间利用率低。早期的解决方法是把录像文件都保存在同一个文件中,处理方式简单,可以避免碎片。但是由于视频数据连续存储,无法实现随机的录像回放,会严重影响录像查询的时间。并且没有记录视频帧的时间戳信息,无法实现同步[6]。
为解决这些问题,本文根据硬盘存储容量,将整个硬盘空间预先分割成若干固定大小的数据文件和索引文件,尽量确保同一通道的录像文件在硬盘存储地址的连续性,以减少碎片。并且一个录像文件只存放相同通道的视频数据,便于录像查询。当硬盘的剩余空间小于某一特定值时,覆盖最早的录像文件。如果录像文件大小超出锁设定大小时,在新的录像文件中继续录像。
2)文件结构
在存储放视频帧的时候,分别将视频数据写入数据文件,索引信息写入索引文件。录像存储所涉及的文件包括硬盘挂载信息文件mountinfo、管理文件recordtotalinfo.index、数据文件recorddata.data和索引文件recordindex.index,下面将对每个文件的组织和功能进行分析:
(1)mountinfo文件主要记录硬盘挂载的时间。
(2)recordtotalinfo.index文件用于管理整个分区,它记录了分区中所有数据文件和索引文件的信息。
(3)recordindex.index索引文件主要存放若干片段和索引文件状态信息。片段由帧接收到的时间、帧在数据文件的位置、片段大小和录像类型组成,索引文件状态信息包括URL、第一个片段的开始时间、最后一个片段的开始时间、包的大小、数据文件中已存放帧的大小、片段的总大小、状态标志、片段的总数量、每个数据头后关键帧的数量以及数据头的数量。
(4)recorddata.data数据文件用于存放视频帧,包括关键帧和非关键帧,由片段头部、帧头部和数据3部分组成。片段头部由数据段的开始时间、帧率、宽度、高度、帧数、每帧的长度,帧头部包括帧的类型、数据长度和时间戳。
3)存储实现
启动一个录像任务,分配一块录像缓冲区recordbuffer,Rtsp客户端向IPC请求视频数据,接收到一帧数据时,判断该帧是否需要进行录像存储,如果需要则将视频数据存储到分配好的recordbuffer中。启动录像存储线程,判断缓冲区是否已满,如果是则把缓冲区中的所有数据写入数据文件,把缓冲区的片段和和索引文件状态信息写入索引文件中,否则继续接收一下帧。
在录像存储实现中,采用recordbuffer缓存机制,即在视频流写到数据文件的过程中,引入了recordbuffer。利用这一机制,降低了读写硬盘的频率,提高了系统性能。在数据文件写满时,可先将视频流存放在缓存中,然后再打开空余的数据文件继续写入,防止在切换数据文件时视频流的丢失,保证视频流的完整性[6]。
此外,将缓存区的内容写入数据文件前,需先从对应索引文件状态消息中获得数据文件的大小和数据文件已存放帧的大小,与缓冲区的大小进行判断,设置数据文件的状态标志(已满、空闲和正在使用)。索引文件的状态信息中记录了最早的录像时间,当所有的数据文件中录满之后,可以覆盖最早的数据文件,提高了录像的连续性和硬盘空间的利用率[6]。
2.2.2 录像回放
1)查询录像
当查询某通道某特定时刻的视频录像时,会启动一个查询线程。首先,遍历系统中的所有分区,判断分区的挂载时间是否满足查询时间的要求。其次,遍历硬盘的所有索引文件,找到与待查询通道相同的URL索引文件。最后,遍历索引文件,判断索引文件状态信息中第一个片段的起始时间和最后一个片段的起始时间是否在查询时间范围内,如果是,则将相应的片段保存到单向录像查询链表中。录像查询流程图如图4所示。
图4 录像查询流程图
2)播放视频录像
首先,根据开始播放时间,在录像查询链表找到对应的录像片段;其次,根据录像片段的开始位置,确定数据帧在数据文件的起始位置;然后,读取数据信息,包括数据长度、帧率、时间戳、宽度、高度、时间。最后,将数据送到解码通道,播放录像文件。
Web客户端运行效果如图5所示。Web客户端分实时预览、录像查询、告警设置和系统配置4部分。实时预览界面由设备列表、视频显示区、分屏区和云台控制区组成,视频显示区可最多显示16路视频。云台控制区用于操作云台,如旋转、变倍和变焦等。录像查询主要是查询和播放Web服务器的录像文件。报警设置用于配置告警信息,如:告警时间段、录像时长、抓图等。系统配置用于用户管理、网络设置、录像配置等[7]。
图5 视频监控客户端的运行效果图(截图)
目前,本NVR软件平台已经商用,兼容性、实时性、稳定性和操作性都等到了广泛认可。文中给出了软件平台的架构,以及视频解码器和录像回放实现的基本方法,对安防领域的开发者具有一定参考价值。随着安防领域的迅猛发展,本文提出的软件平台设计方法具有一定的应用价值。
[1]深圳海思半导体有限公司. Hi3531/Hi3532媒体处理软件开发参考[Z].深圳:深圳海思半导体有限公司,2012.
[2] ONVIF Core specification version 2.0[S]. 2010.
[3]徐飞明.基于ONVIF协议的NVR软件平台的设计与开发[D].杭州:浙江大学,2012.
[4]HUANG Y, LI J, XU F, et al. Intelligent fault diagnosis system in large industrial networks[C]//Proc. IEEE International Conference on Apperceiving Computing and Intelligence Analysis. Chengdu: IEEE Press, 2008:319-323.
[5]深圳海思半导体有限公司. Hi3531 H.264编解码处理器简介[Z].深圳:深圳海思半导体有限公司, 2012.
[6]司小海,马跃.数字视频系统录像与回放技术的研究[EB/OL].[2014-04-24].http://www.paper.edu.cn/html/releasepaper/2012/11/363/.
[7] 郭耸,洪炳镕,陈凤东.基于嵌入式Linux和Web服务器的网络视频监控系统[J].哈尔滨商业大学学报:自然科学版, 2005, 21(6):736-738.
责任编辑:李 薇
Design and Implementation of NVR Software Platform Based on Hi3531
WEN Kai1,2, ZHANG Run1,WANG Shangbo1
(1.ResearchCentreforApplicationofNewCommunicationTechnologies,ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China;2.ChongqingInformationTechnologyDesigningCo.,Ltd.,Chongqing400065,China)
In order to meet the market demand for compatibility and facility of the NVR software platforms, through the method of analyzing and researching Hi3531 media processing platform, ONVIF, streaming media, Qt technology, et al, a design of a NVR software platform is put forward. The architecture of NVR system and software are explained. The realization of NVR video decoding and video playback module are emphasized. Finally, the result of the platform is given.
NVR; Hi3531; live preview; playback
TN946
A
10.16280/j.videoe.2015.01.016
2014-05-31
【本文献信息】文凯,张润,王尚波.基于Hi3531的NVR软件平台的设计与实现[J].电视技术,2015,39(1).