基于流水线架构的跨平台多路实时视频处理系统架构的利记博彩app
【技术领域】
[0001]本发明涉及视频图像处理技术,尤其涉及的是一种基于流水线架构的跨平台多路实时视频处理系统架构。
【背景技术】
[0002]随着计算机技术的飞速发展,人们对电子设备处理视频的能力要求也越来越高。同时,计算机视频处理技术也被应用到越来越多的领域,如教育,商业广告,影视娱乐,医疗,旅游,人工智能模拟等。然而当人们希望获取更宽的视角,或者大场景的全景视频时,单路的视频已经无法满足人们的需求。人们急需同时使用多路视频,获得更大的视角。
[0003]现有的多路视频处理系统在很大程度上都局限于某一专业领域,无法很轻松的扩展应用到其他的多路视频处理领域。比如多路的视频监控系统和全景监控系统的区别仅仅在于多路图像的拼接算法,但这两种系统的所有功能却都需要全部重新开发:包括视频的采集,传输,编解码,显示,存储等等。亟待开发一种视频图像系统架构应用于多路的视频处理系统。
【发明内容】
[0004]本发明的目的在于克服现有技术的不足,提供了一种基于流水线架构的跨平台多路实时视频处理系统架构
[0005]本发明是通过以下技术方案实现的:基于流水线架构的跨平台多路实时视频处理系统架构,包括系统层,抽象层和库层,所述库层包括跨平台组件c++ll,ffmpeg, sdl和opengl ;
[0006]所述系统层包括控制模块、视频图像处理模块和视频图像保存模块;所述抽象层包括视频资源获取模块、视频解码模块、视频同步模块和图像显示模块;
[0007]视频采集模块采集外部视频数据,启动控制模块,频资源获取模块自动读取采集的图像包数据,视频图像处理模块将视频资源获取模块读取采集的图像包解码为对应的图像帧;控制模块从视频同步模块中获取同步的视频帧序列,再传送于视频图像处理模块处理;控制模块获取处理后的图像视频供图像显示模块显示,同时启动视频图像保存模块保存视频图像。
[0008]作为上述方案的进一步优化,所述控制模块用于响应用户请求,并协调控制所述视频图像处理模块、所述视频资源获取模块和所述视频解码模块。
[0009]作为上述方案的进一步优化,所述抽象层还包括图像缩放处理模块,用于响应控制模块的控制指令,对视频资源获取模块获取的视频图像进行缩放处理。
[0010]作为上述方案的进一步优化,所述视频同步模块基于视频帧对应时间的同步算法实现,对应的二级的同步链表队列保存视频源中的每一帧数据。
[0011]本发明相比现有技术具有以下优点:本发明提供了一种基于流水线架构的跨平台多路实时视频处理系统架构,具有实时性,平台无关性,视频源无关性,视频格式无关性等优点。本发明提供了一种基于流水线架构的跨平台多路实时视频处理系统架将多路视频处理系统抽象为若干相互独立却又相互协作的子系统,各子系统之间不相互依赖,且可以灵活替换和组合以实现不同应用场景的需求。提高了系统组件的复用性,灵活性,可扩展性和稳定性。
【附图说明】
[0012]图1是本发明的基于流水线架构的跨平台多路实时视频处理系统架构的系统架构图。
[0013]图2是本发明的基于流水线架构的跨平台多路实时视频处理系统架构的模块交互图。
[0014]图3是本发明的基于流水线架构的跨平台多路实时视频处理系统架构的实现流程交互图。
[0015]图4是本发明的基于流水线架构的跨平台多路实时视频处理系统架构的优选实施例的同步处理示意图。
【具体实施方式】
[0016]下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0017]参见图1,为本发明的优选实施例的系统架构图。基于流水线架构的跨平台多路实时视频处理系统架构,包括系统层,抽象层和库层。库层包括跨平台组件c++ll,FFmpeg, sdlSDL和OpenGL。系统层包括控制模块、视频图像处理模块和视频图像保存模块。抽象层包括视频资源获取模块、视频解码模块、视频同步模块和图像显示模块。
[0018]抽象层将库层封装,解耦系统层和库层的依赖关系。图像显示模块封装sdl库,解耦系统层和sdl库的关联。系统层组合抽象层的功能,共同协作完成系统的功能。系统层采用MVC的架构,其中控制模块为MVC中的控制中心。
[0019]FFmpeg(Fast Forward mpeg):FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源库。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
[0020]SDL(Simple DirectMedia Layer):是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码开发跨多个平台,如Linux、Windows、Mac OS X等的应用软件。
[0021]OpenGL(Open Graphics Library):是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像,二维的亦可,是一个功能强大,调用方便的底层图形库。
[0022]c++l I (IS0/IEC 14882:2011-1nf ormat 1n technology--Programminglanguages—C++):它将取代 C++ 标准第二版 IS0/IEC 14882:2003-Programminglanguages—C++成为C++语言新标准。C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++Technical Report I程序库。
[0023]参见图2,为本发明的基于流水线架构的跨平台多路实时视频处理系统架构的模块交互图。控制模块MultiPlayer控制同步模块SyncQueue、内处理模块Player、图像缩放处理模块Scaler、视频图像处理模块ImageProcessor、视频图像保存模块Recorder,图像显示模块SDL用于显示经控制模块MultiPlayer操控的视频图像。
[0024]内处理模块Player组合视频资源获取模块PlayerSource和视频解码模块Stream从视频源获取图像并解码,并处理断开重连等。每一个视频源是一个内处理模块Player的操控对象。
[0025]同步模块SyncQueue将多个内处理模块Player解码的视频帧通过同步算法同步并交给视频图像处理模块ImageProcessor处理。视频图像处理模块ImageProcessor采用图像拼接算法将多个内处理模块Player的视频数据合并。同步模块SyncQueue基于时间同步队列TimeSyncQueue实现的,基于视频帧时间的同步算法实现。
[0026]视频资源获取模块PlayerSource获取库层FFmpeg的视频源FFmpegPlayerSource。视频解码模块Stream基于库层FFmpeg的视频流FFmpegStream实现。
[0027]视频对象基于信号量实现的泛型同步队列实现视频同步模块PacketQueue同步实现。视频对象包括图像包MyAVPacket,图像帧MyAVFrame和图片MyAVPicture。其中,图像包MyAVPacket为存储编码的视频数据,图像帧MyAVFrame存储解码后的一帧视频图像,图片MyAVPicture为存储缩放后的图像
[0028]参见图3为基于流水线架构的跨平台多路实时视频处理系统架构的实现流程交互图。视频采集模块采集外部视频数据,启动控制模块MultiPlayer,内处理模块Player启动内部线程从频资源获取模块PlayerSource自动读取采集的图像包MyAVPacket数据;内处理模块Player的内部线程将视频资源获取模块PlayerSource读取采集的图像包MyAVPacket解码为对应的图像帧MyAVFrame ;控制模块MultiPlayer从视频同步模块中的时间同步队列TimeSyncQueue获取同步的视频帧序列,再传送于视频图像处理模块ImageProcessor处理;控制模块MultiPlayer获取处理后的图像视频供图像