刘浩,何岩
(1.武汉邮电科学研究院 湖北 武汉 430074;2.烽火通信科技股份有限公司 湖北 武汉 430074)
基于海思平台的NVR拼接预览方案的设计与实现
刘浩1,何岩2
(1.武汉邮电科学研究院 湖北 武汉 430074;2.烽火通信科技股份有限公司 湖北 武汉 430074)
随着数字化、网络化进程的不断提高,安防产业的快速发展,NVR作为新一代视频监控的代表产品已经逐渐取代DVR的地位。但随着NVR接入前端IPC设备数量和质量的不断提高,保证客户端在低带宽环境下多通道预览的实时性是具有重要价值的。本文以海思3535平台为基础,提出并设计了一种视频拼接预览方案,将需要网传的多通道码流拼接编码成单通道码流供客户端使用。经过验证测试,该方案成功将16个D1码流拼接编码成1个D1码流,并在客户端显示,有效的降低了客户端多通道画面预览所需的码流带宽,保证了在低带宽环境下客户端预览的实时性。
NVR;视频拼接;低带宽实时预览;海思平台
随着数字化、网络化进程的不断发展,以及市场对视频监控系统的网络化功能及网络适应性要求的不断提高,NVR(Network Video Recorder即网络视频录像机)作为下一代视频监控的代表产品已经逐渐取代DVR(digital Video Recorder即数字视频录像机)的位置,在视频监控领域扮演着越来越重要的角色[1]。全网络化时代的视频监控行业正逐步表现出IT行业的特征,作为网络化监控的核心产品NVR,已经从本质上变成了IT产品。NVR最主要的功能是通过网络接收前端IPC(网络摄像机)、DVS(视频编码器)等设备传输的数字视频码流,在本地端进行预览、存储和管理,同时也可以通过客户端如IE客户端、手机客户端经由局域网或互联网进行多通道视频预览和控制[2]。
由于前端IPC性能和NVR本身性能的日渐强大,接入的前端设备的数量和质量都有极大提升。在低带宽、网络状况较差的环境下,需要通过网络传输的客户端码流就可能会出现延时和丢帧,极大的降低了用户体验。本文以海思公司生产的hi3535芯片为基础,采用嵌入式开发方式,提出并设计一种视频拼接预览方案供客户端使用。在多画面同时预览时,在牺牲一部分视频质量的条件下,将客户端需要预览的各通道视频码流拼接为1路视频码流,来保证网络客户端预览的实时性。
由于嵌入式单板的资源有限,功能简单,不能在它上面运行开发和调试工具[3]。因此采用“交叉编译调试”的方式进行开发和调试,如图1所示,对于本系统来说,交叉编译就是在PC机的Linux服务器系统上编译生成能在NVR嵌入式单板上运行的代码。
在Linux服务器上安装uclibc交叉编译工具。
图1 Hi3535 Linux开发环境Fig.1 Linux development environment of Hi3535
1)解压并展开Hi3535_SDK_V1.0.4.0包
在Linux服务器上,使用命令:tar-zxf Hi3535_SDK_V 1.0.4.0.tgz,解压缩该文件,可以得到一个Hi3535_SDK_V 1.0.4.0目录。在该目录下运行./sdk.unpack会展开SDK包打包压缩存放的内容。
2)安装uclibc交叉编译器
进入/osdrv/toolchain/arm-hisiv100nptl-linux目录,运行./cross.install后,打开Linux中的/etc/profile配置文件,在文件末尾增加如下字段:export PATH=”/home/lh/by/toolchains/armlinux/bin:${PATH}”,最后重新启动Linux服务器。
交叉编译器安装完成之后,进行Bootloader和linux内核的移植,完成根文件系统和NFS文件系统的建立,最后对系统环境进行配置之后,使linux系统能够顺利在hi3535平台上运行。
本系统中硬件开发平台和软件平台分别是基于hi3535和linux3.08。图2为NVR软件系统方案框图。系统以模块化的设计思想,将系统各个部分独立起来封装起来,满足软件系统中低耦合的要求[4-6]。从图中可以看出,基于ONVIF标准的视频接口采用HTTP协议使前端IPC和NVR进行通信;NVR嵌入式服务器用来实现IE客户端和手机客户端与本地NVR设备之间的通信,满足C/S通信模式的需求;系统逻辑管理层负责一些软件上的逻辑处理,并完成各模块间交互和事件处理;NVR功能实现层负责具体功能的实现,如预览、回放、备份等。
NVR功能实现层可以对从前端IPC获得的音视频数据进行存储,视频编解码、预处理、输出等处理,客户端预览所需要的正是经过hi3535芯片处理之后的音视频数据。所以我们的重点放在NVR功能实现层上面。
图2 NVR软件系统方案Fig.2 Software system program of NVR
2.1 方案可行性分析
在普通预览场景下,客户端看到的每一路窗口画面都是通过NVR将对应IPC的网络数据包转发到客户端,然后每一路窗口数据包在客户端解码之后拼接成的一幅预览画面[7]。假设在客户端需要同时预览16路通道,每一路通道传输码率为512K的D1(704*576)子码流,那么客户端需要8M的总入口带宽。16路D1的原始像素拼接,将获得2816*2304像素图像,但绝大多数终端的显示器最多只有1920*1080像素,所以拼接前会对D1的画面进行缩小然后再拼接到符合终端显示器的像素大小,多余的像素实际上也浪费了。
采用拼接预览方案,是将需要网络传输的预览画面在本地NVR内进行尺寸缩小和拼接,再将拼接好的视频以D1的大小发送。此时不论有多少个预览通道,发送的远程预览带宽都只有一个D1的带宽。
2.2 开发平台简介
Hi3535是针对多路高清或多路D1 NVR产品应用开发的专业SOC芯片。内置高性能A9处理器和具有高达5路1080P解码能力的多协议视频解码引擎,集成了具备多项复杂图像处理算法的高性能视频/图像处理引擎,结合双路高清显示输出能力,为客户产品提供优质的图像质量。Hi3535芯片逻辑框图如图3所示。
Hi3535提供的媒体处理软件平台MPP(Media Process Platform),可支持应用软件快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MPP Program Interface)接口完成相应功能。主要分为视频输入(VI)、视频处理(VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)等模块。
图3 Hi3535芯片逻辑框图Fig.3 Chip logic diagram of Hi3535
2.3 拼接预览方案的实现
我们可以根据具体情况,决定是否使用码流拼接功能。如在局域网内的带宽状况良好,为保证视频的质量,我们可以选择不开启码流拼接;若在互联网上传输,则可以开启码流拼接。在视频编码模块,我们使用H.264视频压缩算法,它通过采用现有的基本算法和结构,通过精心优化计算流程和方法来取得更好视频编码性能[8]。具体实现方案如图4所示。
图4 拼接预览流程图Fig.4 Flow chart of stitching preview
绑定,即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将自动发送给接收者。
虚拟VO设备,虚拟VO设备是软件上的概念,没有实际对应的物理设备,虚拟设备和标清设备相同,标清设备的通道通过hi3535自带的VGS(Video Graphics Sub-System,即视频图形子系统)模块实现缩放,并叠加为一整幅图像。
在本地NVR获取到各个IPC传输过来的已编码的数据后,我们可以选择使用或者不使用码流拼接。
若不使用拼接码流,则直接通过网络线程将每个IPC需要在客户端进行预览的码流发送到NVR嵌入式服务器,再网传到客户端,最终在客户端对每个码流进行逐一解码,以达到多画面预览的效果。
若使用拼接码流,我们的系统绑定关系式是虚拟VO绑定VDEC,VENC绑定虚拟VO。首先将每个IPC的码流在NVR本地端通过VDEC模块进行解码,将解码后的数据通过绑定直接输出到虚拟VO设备上,再利用虚拟VO设备完成多路图像的缩小并拼接到一个图像画面的大小,最后对拼接后的图像经由VENC模块进行编码。这样就将需要在客户端预览的所用通道图像拼接成了一个通道图像。这时,我们就可以将拼接码流通过嵌入式服务器网络传输到客户端。
在视频解码模块VDEC,采用按帧发送,用户每次发送完整一帧码流到解码器,每调用一次发送接口,解码器就认为该帧码流已经结束,开始解码图像,流程如下:
1)设置解码通道属性并创建视频解码通道HI_MPI_VDE C_CreateChn;
2)解码器开始接收用户发送过来的视频数据码流HI_M PI_VDEC_StartRecvStream;
3)设置解码通道参数,包括图像解码模式、图像输出顺序、图像数据格式、图像压缩模式等 HI_MPI_VDEC_Set ChnParam
4)根据相应需要,设置协议相关的内存分配通道参数HI_MPI_VDEC_SetProtocolParam;
5)向视频解码通道发送从前端IPC过来的码流数据HI_MPI_VDEC_SendStream。
在视频编码模块VENC,采用固定比特率CBR,保证码率统计时间内编码码率的平稳性,稳定性可以通过创建编码通道时的码率统计时间和码率的波动等级确定,流程如下:
1)根据需要设置编码通道属性并创建编码通道,HI_MP I_VENC_CreateChn;
2)开启编码通道,接收虚拟VO设备缩小拼接之后的图像HI_MPI_VENC_StartRecvPic;
3)将编码通道作为数据接收者绑定到虚拟VO设备HI_ MPI_SYS_Bind。
经过上述方案的设计,使用交叉编译器将NVR功能实现层模块编译成动态库的形式嵌入到系统的软件平台上,供上层程序调用。在对其它系统模块也进行相应的调整之后,需要预览的拼接码流可以在客户端界面显示出来。
在NVR本地端接入16个基于ONVIF协议的IPC,其主码流为分辨率720P(1280*720)、帧率30fps、码率3.5M;子码流为分辨率D1(704*576)、帧率30fps、码率512K。然后在IE客户端进行16画面预览,选用子码流,分别使用和不使用拼接码流,显示效果分别如图5和图6所示。从两个图中对比可以看出,图5显示的是16个通道拼接成1个通道的预览画面;而图6显示的画面是NVR将16个IPC的子码流转发到IE客户端而显示的。
图5 使用拼接功能客户端Fig.5 The client used stitching function
图6 未使用拼接功能客户端Fig.6 The client did not use stitching function
在上述对比试验的情况下,我们分别查看IE客户端所在PC的Windows任务管理器里面的联网状态。在百兆网卡下,使用拼接码流的网络应用使用率为0.8%;在未使用拼接码流的网络应用使用率为8%。可以明显看出,使用拼接码流的确有效的降低了16画面预览所需的带宽流量,保证了在低带宽环境下的多画面实时预览。
方案的实质是将本应该在客户端进行的图像缩小功能放在本地NVR嵌入式设备上来实现,并将缩小后的视频图像经过拼接、编码到目标尺寸,用以达到多通道预览时降低码流带宽的目的。但由于NVR本身的编/解码能力是有限的,使用拼接功能时可能会影响到系统以有功能的性能,所以需要根据实际使用情况进行权衡和选择,当然也需要对NVR系统进行更好的软件优化。总之,在低带宽环境下,此拼接预览方案对于保证客户端多画面预览的实时性是有效的,具备实用价值。
[1]西刹子.安防天下-智能网络视频监控技术详解与实践[M].北京:清华大学,2010.
[2]徐飞明.基于ONVIF协议的NVR软件平台的设计与开发[D].浙江大学,2012.
[3]郑灵翔.嵌入式Linux系统设计[M].北京:北京航空航天大学出版社,2008.
[4]刘峥嵘.嵌入式Linux应用开发详解[M].北京:机械工业出版社,2004.
[5]赵俊生.嵌入式Linux系统图形界面显示方法的实现[J].工业仪表与自动化装置,2014(2):53-55.ZHAO Jun-sheng.Implementation of embedded Linux system graphical interface display method[J].Industrial Instrumentation&Automation,2014(2):53-55.
[6]高凯武,任传胜.基于嵌入式Linux网页服务器的大坝安全监测数据采集[J].工业仪表与自动化装置,2013(6):95-98.GAO Kai-wu,REN CHUAN-sheng.Dam safety monitoring data collected based on embedded Linux web server[J].Industrial Instrumentation&Automation,2013(6):95-98.
[7]高洋.基于海思Hi3510芯片的音视频服务器软件设计与实现[D].成都:电子科技大学,2012.
[8]Gary J.Sullivan,Pankaj N.Topiwala,Ajay Luthra,The H.264/AVC advanced video coding Standard:Overview and Introduction to the Fidelity Range Extensions[S].2003.
Design and implementation of NVR stitching preview project based on Hisilicon platform
LIU Hao1,HE Yan2
(1.Wuhan Research Institute of Post and Telecommunications,Wuhan 430074,China;2.Fiberhome Telecommunication Technologies Co.,Ltd.,Wuhan 430074,China)
With the continuous improvement of the digital and the networking,and the rapid development of security industry.As the representative of a new generation of video monitoring products,NVR has gradually replaced the status of the DVR.However,with the continuous improvement of the quantity and quality of front-end IPC devices accessed by NVR,in order to meet real-time for Multi-channel previews on client in the networks with low bandwidth,it has an important value.This document was based on hi3535 platform,it put forward and designed a solution of video stitching preview,Stitched and coded the multi-route flows which need transferred over the network into one route flows for the client.Through the verification testing,this project successfully stitched and coded sixteen D1 streams into a D1 stream,and displayed on the client.It effectively reduces the network bandwidth that need by Multi-channel previewing on client,ensures the real-time for client preview in low bandwidth environment.
NVR;video stitching;real-time preview in low bandwidth;hisilicon platform
TN915
A
1674-6236(2015)10-0039-04
2014-09-15 稿件编号:201409125
刘 浩(1989—),男,湖北孝感人,硕士,软件研发工程师。研究方向:通信与信息系统。