基于gstreamer的流媒体AI推理的延迟控制方法技术

技术编号:32532064 阅读:14 留言:0更新日期:2022-03-05 11:26
本发明专利技术公开基于gstreamer的流媒体AI推理的延迟控制方法,包括如下步骤:实时监测infer推理插件的接口处的推理数据帧信息;获取等待推理的数据帧的数量,判断等待推理的数据帧的数量是否大于最大预设值,若是,则丢弃当前数据帧,返回;若否,则进入下一步;获取最后一次加入等待推理的数据帧的时间戳与当前数据帧的时间戳的时间差,判断时间差是否小于最小预设值,若是,则丢弃当前数据帧,返回;若否,则进入下一步;使当前数据帧加入infer推理插件的等待队列。本发明专利技术通过外部监测推理插件内部的帧数量,有效控制推理插件的内部数据帧缓存数量,来保证输出延迟在控制范围内,不至于一直累计放大,避免程序崩溃。避免程序崩溃。避免程序崩溃。

【技术实现步骤摘要】
基于gstreamer的流媒体AI推理的延迟控制方法


[0001]本专利技术涉及通信
,尤其涉及基于gstreamer的流媒体AI推理的延迟控制方法。

技术介绍

[0002]基于gstreamer的多媒体架构方案是目前时下应用(包括媒体播放器,流媒体处理器等)比较多的架构方案,大致架构如图2所示,其中,source插件:就是数据来源,可能是文件,流媒体,或其他应用生成;queue插件:在gstreamer中起到缓存和分线程的作用;infer插件:机器视觉的推理插件;sink插件:数据输出,可能是直播、文件或者显示等。
[0003]常见设计,如图3所示,在这个pipeline架构设计中,每个插件都是直接调穿,不会独立线程执行,用queue插件来分线程和缓存,也利用queue插件的leaky属性来丢帧,来保持媒体的实时性。
[0004]在这个架构模型中,保持实时性的先决条件是所有插件(除了queue插件)都直接调穿,这样才能让所有的数据帧都在queue插件中累计,queue插件来计算有多少缓存,然后启动丢帧来保证实时性。
[0005]Gstreamer的设计年代较早,初衷是为流媒体服务的,但是当应用到机器视觉等领域的时候,这个延迟控制方法就失去了原有的能力,因为机器视觉的CV filter插件需要用SOC的神经网络硬件或GPU硬件来推理,经常会启动独立线程来处理推理逻辑,所以会把上游的数据帧缓存在推理插件内部,造成推理插件上游的queue插件内部无法缓存累计,也就不能触发丢帧逻辑了。导致的现象是,如果推理算力跟不上媒体流的速度,就会有越来越多的数据帧在推理插件内部累计,输出延迟越来越大。
[0006]有一种可行的解决方法是直接联系SOC方案商修改推理插件内部逻辑,如果积压数据帧数量超过了我们预定义的数量,就阻塞接口函数。那每次更新都需要进行同步,存在较大代码风险,且很多SOC方案商的推理插件并不开源也就没法实现自己修改了。

技术实现思路

[0007]为了解决上述技术问题,本专利技术提出基于gstreamer的流媒体AI推理的延迟控制方法。
[0008]为了达到上述目的,本专利技术的技术方案如下:
[0009]基于gstreamer的流媒体AI推理的延迟控制方法,包括如下步骤:
[0010]步骤S1,实时监测infer推理插件的接口处的推理数据帧信息;
[0011]步骤S2,根据推理数据帧信息获取等待推理的数据帧的数量,判断等待推理的数据帧的数量是否大于最大预设值,若是,则丢弃当前数据帧,返回;若否,则进入步骤S3;获取等待推理的数据帧的数量并判断等待推理的数据帧的数量是否大于最大预设值
[0012]步骤S3,获取最后一次加入等待推理的数据帧的时间戳与当前数据帧的时间戳的时间差,判断时间差是否小于最小预设值,若是,则丢弃当前数据帧,返回;若否,则进入步
骤S4;
[0013]步骤S4,使当前数据帧加入infer推理插件的等待队列。
[0014]优选地,所述推理数据帧信息包括推理完成的数据帧累计数量、准备加入推理缓存的数据帧累计数量以及加入推理缓存的数据帧的时间戳。
[0015]优选地,所述等待推理的数据帧的数量等于准备加入推理缓存的数据帧累计数量减去推理完成的数据帧累计数量。
[0016]优选地,所述infer推理插件的接口包括输入端口和输出端口。
[0017]优选地,所述步骤S1,具体包括如下步骤,在infer推理插件的接口处调用prob探针函数,用于实时监测infer推理插件的接口处的推理数据帧信息。
[0018]基于上述技术方案,本专利技术的有益效果是:
[0019]1)本专利技术通过外部监测推理插件内部的帧数量,可以不依赖插件内部不能有缓存和分线程的先决条件,有效控制机器视觉的CV filter插件用SOC的神经网络硬件或GPU硬件来推理,启动独立线程来处理推理逻辑时推理插件的内部数据帧缓存数量,来保证输出延迟在控制范围内,不至于一直累计放大,避免程序崩溃;
[0020]2)本专利技术无需修改推理插件内部逻辑,通过外部监测推理插件内部的帧数量,不会有技术耦合,避免直接通过SOC方案商维护推理插件,无需更新同步。
附图说明
[0021]下面结合附图对本专利技术的具体实施方式作进一步详细的说明。
[0022]图1是一个实施例中基于gstreamer的流媒体AI推理的延迟控制方法流程图;
[0023]图2是基于gstreamer的AI推理架构图;
[0024]图3是现有gstreamer的多媒体架构设计图;
[0025]图4是一个实施例中改进后的基于gstreamer的AI推理架构图。
具体实施方式
[0026]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。
[0027]如图1所示,本实施例提供一种基于gstreamer的流媒体AI推理的延迟控制方法,包括如下步骤:
[0028]步骤S1,在infer推理插件的输入端口sink pad和输出端口src pad上分别增加一个prob探针函数来动态追踪infer推理插件内部的数据帧数量,如图4所示,输出端口处prob探针函数(prob src)记录推理完成的数据帧累计数量;输入端口处prob探针函数(prob sink)记录准备加入推理缓存的数据帧累计数量以及加入推理缓存的数据帧的时间戳(PTS);
[0029]步骤S2,根据推理数据帧信息获取等待推理的数据帧的数量,所述等待推理的数据帧的数量等于准备加入推理缓存的数据帧累计数量减去推理完成的数据帧累计数量,判断等待推理的数据帧的数量是否大于最大预设值,若是,则丢弃当前数据帧,返回;若否,则进入步骤S3;
[0030]步骤S3,获取最后一次加入等待推理的数据帧的时间戳与当前数据帧的时间戳的
时间差,判断时间差是否小于最小预设值,若是,则丢弃当前数据帧,返回;若否,则进入步骤S4;
[0031]步骤S4,使当前数据帧加入infer推理插件的等待队列。
[0032]以上所述仅为本专利技术所公开的基于gstreamer的流媒体AI推理的延迟控制方法的优选实施方式,并非用于限定本说明书实施例的保护范围。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于gstreamer的流媒体AI推理的延迟控制方法,其特征在于,包括如下步骤:步骤S1,实时监测infer推理插件的接口处的推理数据帧信息;步骤S2,根据推理数据帧信息获取等待推理的数据帧的数量,判断等待推理的数据帧的数量是否大于最大预设值,若是,则丢弃当前数据帧,返回;若否,则进入步骤S3;步骤S3,获取最后一次加入等待推理的数据帧的时间戳与当前数据帧的时间戳的时间差,判断时间差是否小于最小预设值,若是,则丢弃当前数据帧,返回;若否,则进入步骤S4;步骤S4,使当前数据帧加入infer推理插件的等待队列。2.根据权利要求1所述的基于gstreamer的流媒体AI推理的延迟控制方法,其特征在于,所述推理数据帧信息包括推理完成的数据...

【专利技术属性】
技术研发人员:汤巍敏杜剑锋
申请(专利权)人:北京激浊扬清文化科技有限公司
类型:发明
国别省市:

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

1