一种基于多线程队列及数组的视频推流方法及系统技术方案

技术编号:32554005 阅读:12 留言:0更新日期:2022-03-05 11:54
本发明专利技术公开一种基于多线程队列及数组的视频推流方法及系统,方法包括:实时获取视频数据,对视频数据进行提取视频帧,并将至少一个视频帧存入视频帧数组中;对视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧;将至少一个标注视频帧传输至推流缓冲区;从推流缓冲区中获取某一标注视频帧,并将某一标注视频帧发送至服务器。采用从视频流中获取图片,进行模型推理预测后放入队列中,从队列中取图片数据存入数组中,当队列为空时,从数组中取数据用于推流,当队列不为空时,从队列中取数据用于推流并将该数据更新至数组中,并通过设置两次取图片数据的时间间隔,达到控制推流每秒传输帧数,解决了推流过程出现的卡顿问题。的卡顿问题。的卡顿问题。

【技术实现步骤摘要】
一种基于多线程队列及数组的视频推流方法及系统


[0001]本专利技术属于大数据处理
,尤其涉及一种基于多线程队列及数组的视频推流方法及系统。

技术介绍

[0002]随着安防产业快速发展,电信、金融、交通等领域对视频监控平台的需求不断加大,视频监控系统被越来越广泛地应用到市场中。视频监控中需对关心的物体进行检测,需使用目标检测算法。目前大多数目标检测算法结构中只考虑处理单路视频流。从视频流中获取图片,算法模型对图片进行推理预测,将推理预测后的图片送入推流管道实现实时推流。由于整个结构为顺序执行,可以实现输入与输出同步,不会出现推流时每秒内传输帧数忽多忽少不固定的现象而导致推流卡顿等问题。然而该结构并不具备同时处理多路视频流的能力。
[0003]同时处理多路视频流能大大提高硬件的使用率,节约使用成本。目前可以采用Yolov5算法同时处理多路视频流,Yolov5算法具有训练和推理的速度快,模型小而准确度与其他目标检测算法相当或更好等优点。但是该算法中,各结构之间并非按顺序执行,因此可能会出现输入输出不同步、推流时每秒内传输帧数出现忽多忽少不固定等现象,导致推流视频卡顿,严重影响用户的使用和体验。

技术实现思路

[0004]本专利技术提供一种基于多线程队列及数组的视频推流方法及系统,用于解决输入输出不同步、推流时每秒内传输帧数出现忽多忽少不固定等现象,导致推流视频卡顿的技术问题。
[0005]第一方面,本专利技术提供一种基于多线程队列及数组的视频推流方法,包括:实时获取视频数据,基于预设的读取时间对所述视频数据进行提取视频帧,并将至少一个视频帧存入视频帧数组中;对所述视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧;将所述至少一个标注视频帧传输至推流缓冲区,所述推流缓冲区包括至少一个线程和至少一个队列,所述至少一个队列的长度为一帧,其中,所述至少一个队列输出某一标注视频帧的时刻与另一标注视频帧进入所述至少一个队列的时刻的差值与所述读取时间相等;从所述推流缓冲区中获取某一标注视频帧,并将所述某一标注视频帧发送至服务器。
[0006]第二方面,本专利技术提供一种基于多线程队列及数组的视频推流系统,包括:提取模块,配置为实时获取视频数据,基于预设的读取时间对所述视频数据进行提取视频帧,并将至少一个视频帧存入视频帧数组中;标注模块,配置为对所述视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧;传输模块,配置为将所述至少一个标注视频帧传输至推流缓冲区,所述推流缓冲区包括至少一个线程和至少一个队列,所述至少一个队列的长度为一帧,其中,所述至少一个队列输出某一标注视频帧的时刻与另一标注视频帧进入所述至少一个队列的时刻的差值与所述读取时间相等;发送模块,配置为从所述推流缓
冲区中获取某一标注视频帧,并将所述某一标注视频帧发送至服务器。
[0007]第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术任一实施例的基于多线程队列及数组的视频推流方法的步骤。
[0008]第四方面,本专利技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行本专利技术任一实施例的基于多线程队列及数组的视频推流方法的步骤。
[0009]本申请的一种基于多线程队列及数组的视频推流方法及系统,采用从视频流中获取图片,进行模型推理预测后放入队列中,从队列中取图片数据存入数组中,当队列为空时,从数组中取数据用于推流,当队列不为空时,从队列中取数据用于推流并将该数据更新至数组中,并通过设置两次取图片数据的时间间隔,达到控制推流每秒传输帧数,解决了推流过程出现的卡顿问题。
附图说明
[0010]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0011]图1为本专利技术一实施例提供的一种基于多线程队列及数组的视频推流方法的流程图;
[0012]图2为本专利技术一实施例提供的又一种基于多线程队列及数组的视频推流方法的流程图;
[0013]图3为本专利技术一具体实施例提供的一种基于多线程队列及数组的视频推流方法的流程图;
[0014]图4为本专利技术一实施例提供的再一种基于多线程队列及数组的视频推流方法的流程图;
[0015]图5为本专利技术又一具体实施例提供的一种基于多线程队列及数组的视频推流方法的流程图;
[0016]图6为本专利技术一实施例提供的一种基于多线程队列及数组的视频推流系统的结构框图;
[0017]图7是本专利技术一实施例提供的电子设备的结构示意图。
具体实施方式
[0018]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0019]请参阅图1,其示出了本申请的一种基于多线程队列及数组的视频推流方法的流
程图。
[0020]如图1所示,在步骤S101中,实时获取视频数据,基于预设的读取时间对所述视频数据进行提取视频帧,并将至少一个视频帧存入视频帧数组中;
[0021]在步骤S102中,对所述视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧;
[0022]在步骤S103中,将所述至少一个标注视频帧传输至推流缓冲区,所述推流缓冲区包括至少一个线程和至少一个队列,所述至少一个队列的长度为一帧,其中,所述至少一个队列输出某一标注视频帧的时刻与另一标注视频帧进入所述至少一个队列的时刻的差值与所述读取时间相等;
[0023]在步骤S104中,从所述推流缓冲区中获取某一标注视频帧,并将所述某一标注视频帧发送至服务器。
[0024]在本实施例中,首先,从原始视频文件或视频流地址中获取视频数据,从视频数据中每隔一帧时间提取图片,并将其存入数组1中,数组1中图片数据始终为最新提取的图片,数组1中已存在的图片数据将被最新提取的图片替代;其次,对所述数组1中的图片内容进行识别并标注,获得图片处理后具有标注信息的图片,并将其存入队列中;接着,采用Yolov5模型从所述数组1中获取图片数据并将其存入所述队列中;所述队列最大长度为1;若所述队列为空,则将所述数组1中的图片数据存入所述队列中;否则,不存入所述队列中;然后,当所述队列不为空时,从所述队列中取出图片数据存入数组2中,完成所述数组2数据初始化;最后,当需要图片用于推流时,若此时所述队列为空本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多线程队列及数组的视频推流方法,其特征在于,包括:实时获取视频数据,基于预设的读取时间对所述视频数据进行提取视频帧,并将至少一个视频帧存入视频帧数组中;对所述视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧;将所述至少一个标注视频帧传输至推流缓冲区,所述推流缓冲区包括至少一个线程和至少一个队列,所述至少一个队列的长度为一帧,其中,所述至少一个队列输出某一标注视频帧的时刻与另一标注视频帧进入所述至少一个队列的时刻的差值与所述读取时间相等;从所述推流缓冲区中获取某一标注视频帧,并将所述某一标注视频帧发送至服务器。2.根据权利要求1所述的一种基于多线程队列及数组的视频推流方法,其特征在于,所述对述所述视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧包括:基于预设的Yolov5模型对所述视频帧数组中的视频帧进行识别并标注,使得到至少一个标注视频帧。3.根据权利要求1所述的一种基于多线程队列及数组的视频推流方法,其特征在于,所述将所述至少一个标注视频帧传输至推流缓冲区包括:将某一标注视频帧传输至某一线程,并判断与所述某一线程相对应的某一队列中是否存在视频帧;若与所述某一线程相对应的某一队列中存在视频帧,则停止传输所述某一标注视频帧;若与所述某一线程相对应的某一队列中不存在视频帧,则基于预设时间段将所述某一标注视频帧传输至所述某一队列中。4.根据权利要...

【专利技术属性】
技术研发人员:吴君卓桂栋夏志超陶俊
申请(专利权)人:江西电信信息产业有限公司
类型:发明
国别省市:

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

1