本发明涉及一种nvr显示系统的开发方法,具体为一种基于socnvr显示系统的快速开发方法,属于智能软件技术领域。
背景技术:
网络视频监控系统根据产品架构分为嵌入式nvr和x86架构的nvr。
目前嵌入式nvr通常采用海思系列芯片,优点是解码能力强,可以使用海思sdk自带的解码api开发,缺点就是开发周期长,整个开发周期中包含pcb设计,底层驱动开发,上层应用开发,同时在拉取网络视频流的协议需要移植兼容等,对前期投入的人力成本和资金要求较高。
基于x86架构的nvr使用pc机的硬件,运行nvr的应用程序。技术含量低,开发难度小,但其采用软解码方式进行视频解码,即系统拿出部分cpu的资源进行专门的解码显示,因此解码能力弱,解码显示延时长,且稳定性差,当系统任务在短时间内加重时,容易造成系统宕机,且无法自动启动,造成录像丢失等问题。
基于此,本申请提出一种基于socnvr显示系统的快速开发方法。
技术实现要素:
本发明的目的就在于为了解决问题而提供一种基于socnvr显示系统的快速开发方法,相较于嵌入式nvr减少了大量的开发工作,与x86相比,本系统提供了更加稳定的状态和更加强大的解码能力。
本发明通过以下技术方案来实现上述目的:一种基于socnvr显示系统的快速开发方法,包括nvr显示系统;所述nvr显示系统的硬件主控芯片为一片arm和硬核解码的国产soc,所述硬件主控芯片分为arm端和图像处理两部分,所述arm端运行linux操作系统,结合其丰富的外设资源和高性能,实现码流拉取存储以及gui人机交互功能,所述图像处理部分实现图像处理、编解码、拼接以及显示功能;
其开发方法包括以下步骤:
步骤一、nvr显示系统通过以太网交换机连接外围监控设备;
步骤二、linux系统的arm端运行的ffmpeg支持rtmp、rtsp、http、udp、tcp协议的视频流拉取,并将拉取到的视频流存放在本地内存中,使用国产soc提供的视频处理接口,将本地内存中的视频帧传入视频缓存池,进行下一步的处理或者存储到本地sata硬盘中;
步骤三、图像处理系统在视频缓冲池中统一处理来自各个监控设备的图像,最后将图像拼接或者叠加放回到视频缓冲池中,等待显示或者存储;
步骤四、最后linux系统运行的qt提供人机交互,将图像叠加在qt的界面上,并利用qt的交互功能,完成整个系统的显示。
作为本发明再进一步的方案:所述nvr显示系统运行环境的搭建包括:
a、开源网站上可以获取qt和ffmpeg的源码,使用ubuntu操作系统安装国产soc的交叉编译环境,使用这个编译器编译qt和ffmpeg的源码,生成两者的动态链接库;
b、将编译器编译qt和ffmpeg的源码的动态链接库布署到国产soc运行的linux操作系统中,并将库的路径添加到环境变量中,运行应用程序即可引用。
作为本发明再进一步的方案:所述arm端使用soc的rgmii接口进行码流的拉取。
作为本发明再进一步的方案:所述步骤一中,nvr显示系统支持16路1080p@30hz的外围监控设备的视频输入。
作为本发明再进一步的方案:所述步骤四中,qt所提供的人机交互包括鼠标功能和便于开发的图形界面。
作为本发明再进一步的方案:所述ubuntu操作系统安装qtcreator即可使用qt的集成开发环境,在开发qt程序时,将ffmpeg和国产soc的库文件链接到程序编译环境中,linux操作系统设置qt输出的界面重定向到hifb上,应用程序开发完成后在linux操作系统上运行即可将监控画面从hdmi接口显示。
本发明的有益效果是:该国产socnvr显示系统的快速开发方法设计合理:
1、在qt中整合了ffmpeg,并将两者移植到国产soc上,避免了复杂协议移植到nvr系统上,使开发工作量减少,并缩短了开发周期;
2、可以实时解码16路1080p视频,较传统nvr性能提升4倍。同时使用本方法解码视频时,当对视频直接解码不做处理时播放延时不高于80ms,在进行拼接,锐化,曝光处理后解码延时仍不高于200ms。因此解码性能有较大提升;
3、系统解码使用soc自带的硬核解码,降低cpu占有率,减少系统运行的故障。同时使用硬件看门狗,在系统宕机时可以自行复位重启,期间画面丢失时间控制在10s内;
4、系统整体架构仅板载国产soc和外围器件,加上存储图像所需sata硬盘,无需其他器件,拥有巨大的成本优势。
附图说明
图1为本发明系统框架示意图;
图2为本发明运行环境示意图;
图3为本发明软件开发工作量对比示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1~3,一种基于socnvr显示系统的快速开发方法,包括nvr显示系统;所述nvr显示系统的硬件主控芯片为一片arm和硬核解码的国产soc,所述主控芯片分为arm端和图像处理两部分,所述arm端运行linux操作系统,结合其丰富的外设资源和高性能,实现码流拉取存储以及gui人机交互功能,所述图像处理部分实现图像处理、编解码、拼接以及显示功能;
其开发方法包括以下步骤:
步骤一、nvr显示系统通过以太网交换机连接外围监控设备;
步骤二、linux系统的arm端运行的ffmpeg支持rtmp、rtsp、http、udp、tcp协议的视频流拉取,并将拉取到的视频流存放在本地内存中,使用国产soc提供的视频处理接口,将本地内存中的视频帧传入视频缓存池,进行下一步的处理或者存储到本地sata硬盘中;
步骤三、图像处理系统在视频缓冲池中统一处理来自各个监控设备的图像,最后将图像拼接或者叠加放回到视频缓冲池中,等待显示或者存储;
步骤四、最后linux系统运行的qt提供人机交互,将图像叠加在qt的界面上,并利用qt的交互功能,完成整个系统的显示。
在本发明实施例中,所述nvr显示系统运行环境的搭建包括:
a、开源网站上可以获取qt和ffmpeg的源码,使用ubuntu操作系统安装国产soc的交叉编译环境,使用这个编译器编译qt和ffmpeg的源码,生成两者的动态链接库;
b、将编译器编译qt和ffmpeg的源码的动态链接库布署到国产soc运行的linux操作系统中,并将库的路径添加到环境变量中,运行应用程序即可引用。
在本发明实施例中,所述arm端使用soc的rgmii接口进行码流的拉取。
在本发明实施例中,所述步骤一中,nvr显示系统支持16路1080p@30hz的外围监控设备的视频输入,其他x86nvr可同时解码4路1080p的视频,本方法解码性能较传统nvr性能提升4倍。同时传统nvr解码延时大概为300ms,使用本方法解码视频时,当对视频直接解码不做处理时播放延时不高于80ms,在进行拼接,锐化,曝光处理后解码延时仍不高于200ms。因此解码性能最高提升2.75倍,至少提升50%。
在本发明实施例中,所述步骤三中,图像处理系统对各个监控设备的图像处理包括去噪、锐化、解码,缩放,鱼眼校正等。
在本发明实施例中,所述步骤四中,qt所提供的人机交互包括鼠标功能和便于开发的图形界面,可以极大的减少开发的工作量。
在本发明实施例中,所述ubuntu操作系统安装qtcreator即可使用qt的集成开发环境,在开发qt程序时,将ffmpeg和国产soc的库文件链接到程序编译环境中,linux操作系统设置qt输出的界面重定向到hifb上,应用程序开发完成后在linux操作系统上运行即可将监控画面从hdmi接口显示。实现网络视频的拉取,解码,存储和显示功能,qt和ffmpeg移植的工作量为25人时,较传统协议开发,使用本方法在本阶段工作中,工作量缩减87.5%。本方法视频解码比传统dsp开发解码工作量减少70人时。因此传统nvr软件开发的工时为780人时,使用本方法软件工作量为525人时。因此在整个软件开发过程中开发周期减少48%。
工作原理:在使用该国产socnvr显示系统的快速开发方法时,直接在国产soc上运行qt和ffmpeg,利用qtcreator提供的简化开发环境和ffmpeg的网络拉取功能,无需在裸机上开发界面,缩短界面开发周期,同时使用ffmpeg的视频流获取库直接拉取各种网络协议的码流,避免底层驱动、外部接口和协议兼容等复杂的软件工作。同时国产soc提供了硬件实解码和hdmi显示的功能,可以将解码视频实时显示。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
1.一种基于socnvr显示系统的快速开发方法,包括nvr显示系统;
其特征在于:所述nvr显示系统的硬件主控芯片包括arm和硬核解码的国产soc;
所述硬件主控芯片分为arm端和图像处理两部分,所述arm端运行linux操作系统,实现码流拉取存储以及gui人机交互功能;所述图像处理实现图像处理、编解码、拼接以及显示功能;
其开发方法包括以下步骤:
步骤一、nvr显示系统通过以太网交换机连接外围监控设备;
步骤二、linux系统的arm端运行的ffmpeg支持rtmp、rtsp、http、udp、tcp协议的视频流拉取,并将拉取到的视频流存放在本地内存中,使用国产soc提供的视频处理接口,将本地内存中的视频帧传入视频缓存池,进行下一步的处理或者存储到本地sata硬盘中;
步骤三、图像处理系统在视频缓冲池中统一处理来自各个监控设备的图像,最后将图像拼接或者叠加放回到视频缓冲池中,等待显示或者存储;
步骤四、最后linux系统运行的qt提供人机交互,将图像叠加在qt的界面上,并利用qt的交互功能,完成整个系统的显示。
2.根据权利要求1所述的一种基于socnvr显示系统的快速开发方法,其特征在于:所述nvr显示系统运行环境的搭建包括:
a、开源网站上可以获取qt和ffmpeg的源码,使用ubuntu操作系统安装国产soc的交叉编译环境,使用这个编译器编译qt和ffmpeg的源码,生成两者的动态链接库;
b、将编译器编译qt和ffmpeg的源码的动态链接库布署到国产soc运行的linux操作系统中,并将库的路径添加到环境变量中,运行应用程序即可引用。
3.根据权利要求1或2所述的一种基于socnvr显示系统的快速开发方法,其特征在于:所述arm端使用soc的rgmii接口进行码流的拉取。
4.根据权利要求1所述的一种基于socnvr显示系统的快速开发方法,其特征在于:所述步骤一中,nvr显示系统支持16路1080p@30hz的外围监控设备的视频输入。
5.根据权利要求1所述的一种基于socnvr显示系统的快速开发方法,其特征在于:所述步骤四中,qt所提供的人机交互包括鼠标功能和便于开发的图形界面。
6.根据权利要求2所述的一种基于socnvr显示系统的快速开发方法,其特征在于:所述ubuntu操作系统安装qtcreator即可使用qt的集成开发环境,在开发qt程序时,将ffmpeg和国产soc的库文件链接到程序编译环境中,linux操作系统设置qt输出的界面重定向到hifb上,应用程序开发完成后在linux操作系统上运行即可将监控画面从hdmi接口显示。
技术总结