一种基于GStreamer框架的实时视频处理系统及方法与流程

文档序号:16588803发布日期:2019-01-14 18:55阅读:2485来源:国知局
一种基于GStreamer框架的实时视频处理系统及方法与流程

本发明涉及视频处理技术领域,特别是涉及一种基于gstreamer框架的实时视频处理系统及方法。



背景技术:

实时视频处理算法是通过获取摄像头视频流解码并通过算法对视频帧处理得出结果,所以合理高效的多媒体处理框架对于算法的集成、维护以及扩展非常重要。传统多媒体框架都使用lives555框架,lives555框架是一个实现了rtsp协议的开源流媒体框架,包含rtsp服务器端的实现以及rtsp客户端的实现。lives555框架可以将若干种格式的视频文件或者音频文件转换成视频流或者音频流在网络中通过rtsp协议分发传播,这便是流媒体服务器最核心的功能。但是由于现有技术调度框架采用的是全局单线程事件查询调度,并且在轮循线程中直接对数据进行了处理,所以在处理多路数据或处理数据时间过长带来较严重的性能问题,同时lives555框架扩展性能差,在开发中带来很大的代码量。

因此,实有必要提出一种技术手段,以解决上述问题



技术实现要素:

为克服上述现有技术存在的不足,本发明之目的在于提供一种基于gstreamer框架的实时视频处理系统及方法,以基于gstreamer框架实现实时视频处理的目的,实现了代码重用,可以简化linux下多媒体应用程序的开发,在gstreamer多媒体框架下开发的系统可以装卸载不同的插件以实现其他功能,具有良好的功能扩展性。

为达上述及其它目的,本发明提出一种基于gstreamer框架的实时视频处理系统,所述系统基于插件和管道的体系结构,所述管道包括一个实时视频处理算法要运行时的所有处理步骤以及结果输出,所述系统中的功能模块都被实现成可以插拔的组件。

优选地,所述管道包括取流插件、解码插件、n个算法插件以及sink插件,所述取流插件用于获取视频或者音频的流,产生的视频或音频流经过解码插件输出算法插件所需要的数据格式,各算法插件用于对解码后的视频或音频流进行一系列处理,所述sink插件用于将算法插件所处理的结果输出。

优选地,所有插件都通过管道机制进行统一的数据交换

优选地,各算法插件实现了视频或音频处理的一系列函数接口,封装了视频或音频的数据结构,高效地实现了视频音频数据的传输。

优选地,所述算法插件继承所述gstreamer框架的elment元素或者插件以便可以方便的应用于一个管道内,每个算法插件都独立于其应用的管道实现了即插即用。

优选地,各算法插件继承了所述gstreamer框架的类别gstvideofilter或gstaudiofilter,所述类别gstvideofilter或gstaudiofilter实现了视频或音频处理一系列的函数接口,封装了视频或音频buffer数据结构。

优选地,每个管道处理一路视频流,多个管道之间通过信号机制进行通信。

为达到上述目的,本发明还提供一种基于gstreamer框架的实时视频处理方法,所述方法基于插件和管道的体系结构,包括如下步骤:

步骤s1,利用取流插件获取视频或者音频的流;

步骤s2,将产生的视频或音频流经过解码插件输出算法插件所需要的数据格式;

步骤s3,利用n个算法插件对解码后的视频或音频进行一系列的视频或音频处理;

步骤s4,利用sink插件将算法插件所处理的结果输出。

优选地,于步骤s3中,各算法插件实现了视频或音频处理的一系列函数接口,封装了视频或音频的数据结构,高效地实现了视频音频数据的传输。

优选地,各算法插件继承了所述gstreamer框架的类别gstvideofilter或gstaudiofilter,所述类别gstvideofilter或gstaudiofilter实现了视频或音频处理一系列的函数接口,封装了视频或音频buffer数据结构。

与现有技术相比,本发明一种基于gstreamer框架的实时视频处理系统及方法基于gstreamer框架实现了实时视频处理的目的,本发明实现了代码重用,可以简化linux下多媒体应用程序的开发,在gstreamer多媒体框架下开发的系统可以装卸载不同的插件以实现其他功能,具有良好的功能扩展性。

附图说明

图1为本发明一种基于gstreamer框架的实时视频处理系统的系统结构图;

图2为本发明一种基于gstreamer框架的实时视频处理方法的步骤流程图。

具体实施方式

以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

gstreamer是多媒体开发的应用框架,采用面向对象的设计思想,通过插件和管道形式构建了开发体系结构,gstreamer开发框架最重要的组成部分就是插件,gstreamer提供一个框架,通过插件形式把需要的元件模块、数据输入输出等都可以集成到系统中。gstreamer为应用程序员提供简单的api,就像操作系统内核一样,使得上层应用程序不直接与底层硬件设备驱动打交道,这样有利于上层程序的开发。使用gstreamer开发框架,能够更加快速的开发多媒体应用程序,降低开发难度,gstreamer最主要的就是它的核心库函数以及其他一些动态库。gstreamer核心库特点:允许任意的管道建设,基于面向对象的设计;并且继承glib2.0对象模型,采用少量插件能够透明的构建多线程管道,开发出来的应用程序拥有良好的服务质量;为开发者提供了完整的系统核心和插件,为插件和应用程序开发者提供了简单方便快捷的api。

gstvideofilter插件是gstreamer用于视频处理的插件,提供了视频处理有用的处理函数,本发明之实时视频处理系统继承了该类别,相应的gstaudiofilter是基于音频算法的插件,音频处理可以集成该类别,gstreamer框架的完备性和可扩展性给了音视频算法集成很好的环境。

本发明之实时处理系统基于rk3288嵌入式开发板,主要针对视频算法集成,主要包括视频流的获取,视频解码,图像预处理和算法模块处理以及结果输出,视频处理算法的设计者只需要将算法继承gstreamer的elment元素或者插件(plugin)便可以方便的应用于一个管道内,每个算法模块都独立于其应用的管道实现了“即插即用”的效果。

图1为本发明一种基于gstreamer框架的实时视频处理系统的系统结构图。如图1所示,本发明一种基于gstreamer框架的实时视频处理系统,基于插件(plugin)和管道(pipeline)的体系结构,所述管道包含一个实时视频处理算法要运行时的所有处理步骤以及结果输出,其包括取流(source)插件、解码插件、n个算法插件以及sink插件,其中,取流(source)插件用于获取视频或者音频的流,例如在本发明具体实施例中,视频用rtspsrc,音频用alsasrc;产生的视频或音频流经过解码插件输出算法插件所需要的数据格式,各算法插件实现了视频或音频处理的一系列函数接口,封装了视频或音频buffer数据结构,高效地实现了视频音频数据的传输,在本发明具体实施例中,算法插件还实现了视频自动丢帧机制,为算法开发和集成提供了很大的便利,在本发明具体实施例中,算法插件继承了原有的类别gstvideofilter(视频)或gstaudiofilter(音频),这样保证了各个算法结构的一致性,gstvideofilter或gstaudiofilter实现了视频或音频处理一系列的函数接口,封装了视频或音频buffer数据结构,高效的实现了视频或音频数据的传输;sink插件则用于将算法插件所处理的结果输出,这里的sink插件则是作为数据的“消费者”。

在本发明具体实施例中,该实时视频处理系统采用了基于插件(plugin)和管道(pipeline)的体系结构,系统中所有的功能模块都被实现成可以插拔的组件(component),并且在需要的时候能够很方便地安装到任意一个管道上,由于所有插件都通过管道机制进行统一的数据交换,因此很容易利用已有的各种插件“组装”出一个功能完善的多媒体应用程序。本发明在视频算法集成中一个管道只要输出的数据格式对应上即可以接上任意个算法模块对视频流进行分析。图1中管道包含一个算法要运行时的所有处理步骤以及结果输出,一般每个管道处理一路视频流,多个管道之间可以通过信号机制进行通信。

图2为本发明一种基于gstreamer框架的实时视频处理方法的步骤流程图。如图2所示,本发明一种基于gstreamer框架的实时视频处理方法,所述实时视频处理方法基于插件(plugin)和管道(pipeline)的体系结构,其包括如下步骤:

步骤s1,利用取流(source)插件获取视频或者音频的流,例如在本发明具体实施例中,视频用rtspsrc,音频用alsasrc;

步骤s2,将产生的视频或音频流经过解码插件输出算法插件所需要的数据格式;

步骤s3,利用n个算法插件对解码后的视频或音频进行一系列的视频或音频处理,在本发明具体实施例中,n个算法插件实现了视频或音频处理的一系列函数接口,封装了视频或音频buffer数据结构,高效地实现了视频音频数据的传输,在本发明具体实施例中,算法插件还实现了视频自动丢帧机制,为算法开发和集成提供了很大的便利,在本发明具体实施例中,算法插件继承了原有的类别gstvideofilter(视频)或gstaudiofilter(音频),这样保证了各个算法结构的一致性,gstvideofilter或gstaudiofilter实现了视频或音频处理一系列的函数接口,封装了视频或音频buffer数据结构,高效的实现了视频或音频数据的传输;

步骤s4,利用sink插件将算法插件所处理的结果输出,在本发明具体实施例中,sink插件则是作为数据的“消费者”。

综上所述,本发明一种基于gstreamer框架的实时视频处理系统及方法基于gstreamer框架实现了实时视频处理的目的,本发明实现了代码重用,可以简化linux下多媒体应用程序的开发,在gstreamer多媒体框架下开发的系统可以装卸载不同的插件以实现其他功能,具有良好的功能扩展性。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1