一种基于golang的高并发信号处理平台制造技术

技术编号:38471754 阅读:10 留言:0更新日期:2023-08-11 14:48
本发明专利技术提供了一种基于golang的高并发信号处理平台,包括视频处理模块、弹幕渲染模块、并发协调模块;视频处理模块记录和转换数字音频和视频,并将其转化为流数据;视频处理模块对多个任务进行多线程处理;视频处理模块将一些常用的资源存储至内存中,进行复杂操作前,通过操作系统进行预先提取;当用户输入弹幕时,弹幕渲染将弹幕图片投放至视频流中;并发协调模块将任务按照优先级分配到不同的队列中,通过协程池来消费,消息队列中的任务。本发明专利技术有益效果:具有高效并发控制和协程调度的能力,内存消耗低,跨平台支持,运行速度快。运行速度快。运行速度快。

【技术实现步骤摘要】
一种基于golang的高并发信号处理平台


[0001]本专利技术属于视频监控领域,尤其是涉及一种基于golang的高并发信号处理平台。

技术介绍

[0002]在视频监控领域,对于视频的处理与协调是非常重要的一环,尤其是直播过程中,更需要对信号以及现场数据有着快速的反应,同时需要对视频进行快速处理,现有技术往往需要耗费大量的时间和计算资源,由于传统的视频处理技术采用多线程或者分布式系统来支持高并发处理,因此其内存消耗非常庞大;从而导致了现有技术很难在短时间内完成对大量视频数据的处理,并且经常需要使用专门的集群环境才能够支撑大规模的视频处理需求,导致后台往往需要非常多的工作人员对视频进行处理,工作效率低,耗费大量人力成本,且需要高额的维护成本。

技术实现思路

[0003]有鉴于此,本专利技术旨在提出一种基于golang的高并发信号处理平台,以期解决上述部分技术问题中的至少之一。
[0004]为达到上述目的,本专利技术的技术方案是这样实现的:本专利技术第一方面提供了,一种基于golang的高并发信号处理平台,包括视频处理模块、弹幕渲染模块、并发协调模块;视频处理模块通过ffmpeg记录和转换数字音频和视频,并将数字音频和视频转化为流数据;视频处理模块使用Goroutine对多个任务进行多线程处理;视频处理模块将一些常用的资源存储至内存中,进行复杂操作前,通过操作系统进行预先提取;弹幕渲染模块内存储有,对原始弹幕进行预先处理后得到的弹幕图片,当用户输入弹幕时,将弹幕图片投放至视频流中;并发协调模块使用MQ工具将任务按照优先级分配到不同的队列中,通过golang的协程池来消费,消息队列中的任务。
[0005]进一步的,视频处理模块使用ffmpeg处理数据的过程如下:A1、视频编码和解码:打开指定的输入文件,调用ffmpeg方法库创建一个NewTranscoder对象,并将视频解码器转换为h264编码后开始转码;A2、剪裁视频:打开指定的输入文件,创建一个新的filter对象作为过滤器,创建一个新的输出文件开始剪裁操作;A3、合并视频:打开需要合并的多个输入文件,创建一个新的Transcoder对象作为转码器,定义一个输出选项结构体来配置输出格式和合并选项,创建一个新的输出文件进行开始合并操作。
[0006]进一步的,视频处理模块进行多线程处理的过程如下:
读取输入视频文件列表中的所有mp4视频文件,对于视频文件列表中的每一个视频文件,都使用Goroutine并发执行转码任务,等待所有Goroutine执行完毕之后,结束程序。
[0007]进一步的,视频处理模块进行预处理操作的过程如下:将要提取的资源文件加载到内存中的缓冲区并存储,在应用程序启动时,使用操作系统的I/O操作从磁盘上提取资源到内存中,并保留在内存中,当需要更改或访问某个图像资源时,从内存中获取相应的缓存,并进行操作。
[0008]进一步的,弹幕渲染模块进行预处理操作的过程如下:根据原始弹幕的文字内容,使用一些图形库或字体渲染技术将其渲染成图片;将弹幕图片的背景设置为透明,以免遮挡住其他内容;对弹幕图片进行压缩处理;弹幕渲染模块进行弹幕投放的过程如下:根据视频内容和当前时间等因素计算出新弹幕图片应该在视频中出现的位置;控制当前弹幕的总数量,规定弹幕速度和密度;根据计算出的弹幕位置和已有弹幕的状态信息,将弹幕图片添加到视频流中。
[0009]进一步的,并发协调模块进行高并发处理的过程如下:选择RabbitMQ作为消息队列工具,设计任务结构,包括任务类型、优先级、执行参数;使用Golang实现并发协调模块,利用协程池控制并发数量;根据任务的优先级,在消息队列中创建不同的队列;进一步的,在服务器端,将任务按照优先级分配到对应的队列中;在客户端,根据队列中的任务启动Golang协程,并从协程池中分配协程执行任务。
[0010]本专利技术第二方面提供了,一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述第一方面任一所述的一种基于golang的高并发信号处理平台。
[0011]本专利技术第三方面提供了,一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如第一方面任一所述的一种基于golang的高并发信号处理平台。
[0012]本专利技术第四方面提供了,一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现第一方面任一项所述的一种基于golang的高并发信号处理平台。
[0013]相对于现有技术,本专利技术所述的一种基于golang的高并发信号处理平台具有以下有益效果:本专利技术所述的一种基于golang的高并发信号处理平台:具有高并发处理能力:轻松地实现高效的并发控制和协程调度。
[0014]内存消耗低:由于Golang语言采用基于并发和通信的轻量级机制,因此其内存消耗较低,能够较好地支持高并发处理任务。
[0015]跨平台支持:Golang具有跨平台的特性,能够支持多种不同操作系统和硬件架构下的视频处理需求,从而提高了其应用范围。
[0016]运行速度快:Golang编译生成的二进制文件具有高速执行和低资源消耗的特性,能够有效缩短视频处理时间。
附图说明
[0017]构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例所述的一种基于golang的高并发信号处理平台示意图。
具体实施方式
[0018]需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。
[0019]下面将参考附图并结合实施例来详细说明本专利技术。
[0020]实施例一:一种基于golang的高并发信号处理平台,包括视频处理模块、弹幕渲染模块、并发协调模块;视频处理模块通过ffmpeg记录和转换数字音频和视频,并将数字音频和视频转化为流数据;视频处理模块使用Goroutine对多个任务进行多线程处理;视频处理模块将一些常用的资源存储至内存中,进行复杂操作前,通过操作系统进行预先提取;弹幕渲染模块内存储有,对原始弹幕进行预先处理后得到的弹幕图片,当用户输入弹幕时,将弹幕图片投放至视频流中;并发协调模块使用MQ工具将任务按照优先级分配到不同的队列中,通过golang的协程池来消费,消息队列中的任务。
[0021]视频处理模块使用ffmpeg处理数据的过程如下:A1、视频编码和解码:A101、打开输入文件inputFile,err:=os.Open("input.mp4")iferr!=nil{panic(err)}deferinputFile.Close()使用os.Open()函数打开指定的输入文件,如果操作失败则会panic,否则在函数结束时及时关本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于golang的高并发信号处理平台,其特征在于:包括视频处理模块、弹幕渲染模块、并发协调模块;视频处理模块通过ffmpeg记录和转换数字音频和视频,并将数字音频和视频转化为流数据;视频处理模块使用Goroutine对多个任务进行多线程处理;视频处理模块将一些常用的资源存储至内存中,进行复杂操作前,通过操作系统进行预先提取;弹幕渲染模块内存储有,对原始弹幕进行预先处理后得到的弹幕图片,当用户输入弹幕时,将弹幕图片投放至视频流中;并发协调模块使用MQ工具将任务按照优先级分配到不同的队列中,通过golang的协程池来消费,消息队列中的任务。2.根据权利要求1所述的一种基于golang的高并发信号处理平台,其特征在于:视频处理模块使用ffmpeg处理数据的过程如下:A1、视频编码和解码:打开指定的输入文件,调用ffmpeg方法库创建一个NewTranscoder对象,并将视频解码器转换为h264编码后开始转码;A2、剪裁视频:打开指定的输入文件,创建一个新的filter对象作为过滤器,创建一个新的输出文件开始剪裁操作;A3、合并视频:打开需要合并的多个输入文件,创建一个新的Transcoder对象作为转码器,定义一个输出选项结构体来配置输出格式和合并选项,创建一个新的输出文件进行开始合并操作。3.根据权利要求1所述的一种基于golang的高并发信号处理平台,其特征在于:视频处理模块进行多线程处理的过程如下:读取输入视频文件列表中的所有mp4视频文件,对于视频文件列表中的每一个视频文件,都使用Goroutine并发执行转码任务,等待所有Goroutine执行完毕之后,结束程序。4.根据权利要求1所述的一种基于golang的高并发信号处理平台,其特征在于:视频处理模块进行预处理操作的过程如下:将要提取的资源文件加载到内存中的缓冲区并存储,在应用程序启动时,使用操作系统的I/O操作从磁盘上提取资源到内存中,并保留在内存中,当需要更改或访问某个图像资源时,从内存中获取相应的缓存,并进行操作。5.根据...

【专利技术属性】
技术研发人员:朱利人
申请(专利权)人:奥视天津科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1