送解码速度调整方法、系统、设备及介质转让专利

申请号 : CN202210098648.1

文献号 : CN114339406B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邵恒康

申请人 : 重庆紫光华山智安科技有限公司

摘要 :

本发明提出的一种送解码速度调整方法、系统、设备及介质,该方法通过获取解码图像缓存区的当前解码图像缓存区剩余容量,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度,根据当前预测解码图像处理速度调整待解码码流帧的当前送解码速度,通过当前解码图像缓存区剩余容量大小,间接判断视频智能分析的压力情况,对应调整当前送解码速度,以减小视频智能分析的处理压力,降低视频数据丢失以及视频智能分析结果丢失的风险。

权利要求 :

1.一种送解码速度调整方法,其特征在于,所述方法包括:

获取解码图像缓存区的当前解码图像缓存区剩余容量;

若所述当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度包括根据所述解码图像缓存区占用比例确定解码图像缓存占用等级,根据预设解码图像缓存占用等级‑解码图像处理速度映射关系确定所述当前预测解码图像处理速度;

根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度,根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度包括,获取待解码码流缓存区的当前待解码码流缓存区剩余容量,若所述当前待解码码流缓存区剩余容量小于预设码流缓存阈值,对获取到的至少一部分待解码码流帧不进行解码;

其中,对获取到的至少一部分待解码码流帧不进行解码包括以下至少之一,依次获取所述待解码码流帧,根据当前丢帧规则对至少一部分待解码码流帧进行丢帧处理,所述当前丢帧规则根据所述当前待解码码流缓存区剩余容量确定,所述当前丢帧规则包括间隔预设丢帧时间所丢弃待解码码流帧的数量,或间隔预设丢帧数量所丢弃待解码码流帧的数量;

获取所述待解码码流帧的清晰度,根据所述清晰度来确定是否对所述待解码码流帧进行丢帧;

创建新的暂存区,将不进行解码的至少一部分待解码码流帧存储到暂存区,并释放所述待解码码流缓存区中存储入暂存区的所述待解码码流帧对应的缓存。

2.如权利要求1所述的送解码速度调整方法,其特征在于,根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度包括以下至少之一:根据所述当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若所述图像处理速度比例小于预设比例阈值,根据所述图像处理速度比例和预设最大送解码速度确定所述当前送解码速度,所述当前送解码速度小于所述预设最大送解码速度;

根据所述当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若所述图像处理速度比例大于预设比例阈值,获取预设最大送解码速度,并将所述预设最大送解码速度确定为所述当前送解码速度;

获取待解码码流缓存区的当前待解码码流缓存区剩余容量,若所述当前待解码码流缓存区剩余容量小于预设码流缓存阈值,根据所述当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若所述图像处理速度比例小于预设比例阈值,根据所述图像处理速度比例确定送解码速度比例,所述送解码速度比例小于所述图像处理速度比例,并根据所述送解码速度比例和预设最大送解码速度确定所述当前送解码速度。

3.如权利要求1所述的送解码速度调整方法,其特征在于,所述方法还包括:

重新获取所述当前解码图像缓存区剩余容量,若所述当前解码图像缓存区剩余容量大于第二预设解码缓存阈值,进行恢复处理,所述恢复处理包括以下至少之一,对获取到的全部所述待解码码流缓存帧均进行解码;

将所述当前送解码速度调整为预设最大送解码速度。

4.一种送解码速度调整系统,其特征在于,所述系统包括:

获取模块,用于获取解码图像缓存区的当前解码图像缓存区剩余容量;

预测模块,用于若所述当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度包括根据所述解码图像缓存区占用比例确定解码图像缓存占用等级,根据预设解码图像缓存占用等级‑解码图像处理速度映射关系确定所述当前预测解码图像处理速度;

调整模块,用于根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度,根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度包括,获取待解码码流缓存区的当前待解码码流缓存区剩余容量,若所述当前待解码码流缓存区剩余容量小于预设码流缓存阈值,对获取到的至少一部分待解码码流帧不进行解码;

其中,对获取到的至少一部分待解码码流帧不进行解码包括以下至少之一,依次获取所述待解码码流帧,根据当前丢帧规则对至少一部分待解码码流帧进行丢帧处理,所述当前丢帧规则根据所述当前待解码码流缓存区剩余容量确定,所述当前丢帧规则包括间隔预设丢帧时间所丢弃待解码码流帧的数量,或间隔预设丢帧数量所丢弃待解码码流帧的数量;

获取所述待解码码流帧的清晰度,根据所述清晰度来确定是否对所述待解码码流帧进行丢帧;

创建新的暂存区,将不进行解码的至少一部分待解码码流帧存储到暂存区,并释放所述待解码码流缓存区中存储入暂存区的所述待解码码流帧对应的缓存。

5.一种电子设备,其特征在于,包括处理器、存储器和通信总线;

所述通信总线用于将所述处理器和存储器连接;

所述处理器用于执行所述存储器中存储的计算机程序,以实现如权利要求1‑3中任一项所述的方法。

6.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,

所述计算机程序用于使计算机执行如权利要求1‑3中任一项所述的方法。

说明书 :

送解码速度调整方法、系统、设备及介质

技术领域

[0001] 本发明涉及图像处理技术领域,尤其涉及一种送解码速度调整方法、系统、设备及介质。

背景技术

[0002] 边缘智能产品如NVR(Network Video Recorder,网络硬盘录像机)等具有智能分析功能,边缘智能产品接收到来自IPC(IP Camera,网络摄像机)、NVR或者其他网络设备的视频流后,首先做视频码流分析,得到视频原始帧(待解码码流帧),然后将待解码码流帧通过解码器进行解码,获得YUV格式图像等解码图像,之后使用解码图像做智能分析,获得智能分析结果。由于智能分析与视频内容强相关,智能分析的耗时往往是波动的。当智能分析耗时长时,解码图像处理速度慢,将会反压视频处理前级,使得视频数据丢失,以及导致视频智能分析结果丢失。

发明内容

[0003] 鉴于以上所述现有技术的缺点,本发明提供一种送解码速度调整方法、系统、设备及介质,以解决上述技术问题。
[0004] 本发明提供的一种送解码速度调整方法,其特征在于,所述方法包括:
[0005] 获取解码图像缓存区的当前解码图像缓存区剩余容量;
[0006] 若所述当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度;
[0007] 根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度。
[0008] 可选的,所述方法还包括:
[0009] 获取待解码码流缓存区的当前待解码码流缓存区剩余容量;
[0010] 若所述当前待解码码流缓存区剩余容量小于预设码流缓存阈值,对获取到的至少一部分待解码码流帧不进行解码。
[0011] 可选的,对获取到的至少一部分待解码码流帧不进行解码包括:
[0012] 依次获取所述待解码码流帧,根据当前丢帧规则对至少一部分待解码码流帧进行丢帧处理。
[0013] 可选的,所述方法还包括以下至少之一:
[0014] 根据所述当前待解码码流缓存区剩余容量确定所述当前丢帧规则;
[0015] 所述当前丢帧规则包括间隔预设丢帧时间所丢弃待解码码流帧的数量,或间隔预设丢帧数量所丢弃待解码码流帧的数量。
[0016] 可选的,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度包括以下至少之一:
[0017] 获取预设最大解码图像处理速度和所述解码图像缓存区的可缓存图像总容量,并确定解码图像缓存区占用比例,根据所述解码图像缓存区占用比例和预设最大解码图像处理速度确定所述当前预测解码图像处理速度;
[0018] 根据所述解码图像缓存区占用比例确定解码图像缓存占用等级,根据预设解码图像缓存占用等级‑解码图像处理速度映射关系确定所述当前预测解码图像处理速度。
[0019] 可选的,根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度包括以下至少之一:
[0020] 根据所述当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若所述图像处理速度比例小于预设比例阈值,根据所述图像处理速度比例和预设最大送解码速度确定所述当前送解码速度,所述当前送解码速度小于所述预设最大送解码速度;
[0021] 根据所述当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若所述图像处理速度比例大于预设比例阈值,获取预设最大送解码速度,并将所述预设最大送解码速度确定为所述当前送解码速度;
[0022] 获取待解码码流缓存区的当前待解码码流缓存区剩余容量,若所述当前待解码码流缓存区剩余容量小于预设码流缓存阈值,根据所述当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若所述图像处理速度比例小于预设比例阈值,根据所述图像处理速度比例确定送解码速度比例,所述送解码速度比例小于所述图像处理速度比例,并根据所述送解码速度比例和预设最大送解码速度确定所述当前送解码速度。
[0023] 可选的,所述方法还包括:
[0024] 重新获取所述当前解码图像缓存区剩余容量,若所述当前解码图像缓存区剩余容量大于第二预设解码缓存阈值,进行恢复处理,所述恢复处理包括以下至少之一,[0025] 对获取到的全部所述待解码码流缓存帧均进行解码;
[0026] 将所述当前送解码速度调整为预设最大送解码速度。
[0027] 本发明还提供了一种送解码速度调整系统,所述系统包括:
[0028] 获取模块,用于获取解码图像缓存区的当前解码图像缓存区剩余容量;
[0029] 预测模块,用于若所述当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于所述当前解码图像缓存区剩余容量预测当前预测解码图像处理速度;
[0030] 调整模块,用于根据所述当前预测解码图像处理速度调整待解码码流帧的当前送解码速度。
[0031] 本发明还提供了一种电子设备,包括处理器、存储器和通信总线;
[0032] 所述通信总线用于将所述处理器和存储器连接;
[0033] 所述处理器用于执行所述存储器中存储的计算机程序,以实现如上述中任一项实施例所述的方法。
[0034] 本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,[0035] 所述计算机程序用于使计算机执行如上述任一项实施例所述的方法。
[0036] 本发明的有益效果:本发明提出的一种送解码速度调整方法、系统、设备及介质,该方法通过获取解码图像缓存区的当前解码图像缓存区剩余容量,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度,根据当前预测解码图像处理速度调整待解码码流帧的当前送解码速度,通过当前解码图像缓存区剩余容量大小,间接判断视频智能分析的压力情况,对应调整当前送解码速度,以减小视频智能分析的处理压力,降低视频数据丢失以及视频智能分析结果丢失的风险。

附图说明

[0037] 图1是本发明一实施例中提供的一种视频解码智能控制流程的一种示意图;
[0038] 图2是本发明一实施例中提供的一种具体的视频解码智能控制流程的一种示意图;
[0039] 图3是本发明一实施例中提供的送解码速度调整方法的一种流程示意图;
[0040] 图4是本发明一实施例中提供的具体的送解码速度调整方法的一种流程示意图;
[0041] 图5是本发明一实施例中提供的具体的送解码速度调整方法的另一种流程示意图;
[0042] 图6是本发明一实施例提供的基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度的一种流程示意图;
[0043] 图7是本发明一实施例提供的对获取到的至少一部分待解码码流帧不进行解码的具体实现方式的一种流程示意图;
[0044] 图8是本发明一实施例提供的送解码速度调整系统的一种结构示意图;
[0045] 图9是本发明一实施例提供的一种电子设备的结构示意图。

具体实施方式

[0046] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0047] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0048] 在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
[0049] 参见图1,图1为一种视频解码智能控制流程示意图。如图1所示,设备通过视频拉流接收到来自IPC、NVR或者其他网络设备的视频流后,首先做视频码流分析,进行视频解析,得到视频原始帧,然后将视频原始帧通过解码器进行视频解码,获得YUV格式图像,之后使用YUV图像做智能分析,获得智能分析结果。
[0050] 参见图2,图2为一种具体的视频解码智能控制流程示意图。如图2所示,该视频解码智能控制过程由三个线程协同完成,线程A为码流解析线程,该线程从网络中获取通道n的一帧视频码流(通道n码流),识别解析码流协议,进行视频码流解析,获取到原始的视频编码码流,并将该码流帧放入到待解码码流缓存区,然后继续分析下一通道;线程B为解码线程,该线程主动从待解码码流缓存区获取一帧码流数据N(待解码码流缓存帧),然后送硬件解码器进行视频解码,解码后得到YUV图像M,将YUV图像M存放到待送智能YUV缓存区,同时释放该待解码码流缓存帧N在待解码码流缓存区的缓存;线程C为智能分析线程,该线程主动从待送智能YUV缓存区中获取一张YUV图像M,送不同的算法做智能分析,得到处理结果后算法释放待送智能YUV缓存区中的YUV图像M缓存,并上报智能结果。当通道n码流已经缓存完毕后,接着缓存通道(n+1)的视频码流。
[0051] 在上述过程中,存在智能分析的耗时不稳定问题。智能分析的耗时与画面中目标个数强相关。例如目前广泛使用的人脸识别算法,YUV图像中人脸数量8个,与人脸数量1个相比,算法分析耗时相差10余毫秒。当画面(接收到的YUV图像)中持续保持高目标数时,会导致本路视频码流分析耗时长,线程C中智能分析耗时长会引起待送智能YUV缓存区中的YUV图像缓存释放不及时,进而导致线程B待送智能YUV缓存区满,阻塞解码;线程B解码阻塞,又将导致待解码码流缓存区中的待解码码流缓存帧的缓存释放不及时,反压前级线程A待解码码流缓存区满。由于待解码码流缓存区满,此时线程A不能再接收网络视频(通道n码流),最终导致一定时段的视频丢帧,也即会导致一定时长的全部视频帧均丢失,最终导致智能分析结果丢失。
[0052] 为解决上述问题,如图3所示,本实施例提供了一种送解码速度调整方法,该方法包括:
[0053] 步骤S101:获取解码图像缓存区的当前解码图像缓存区剩余容量;
[0054] 步骤S102:若当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度;
[0055] 步骤S103:根据当前预测解码图像处理速度调整待解码码流帧的当前送解码速度。
[0056] 可选的,当前解码图像缓存区剩余容量的获取方式可以是以下至少之一:
[0057] 通过检测解码图像缓存区中的剩余容量量来实现;
[0058] 通过检测解码图像缓存区的已缓存数据量,根据解码图像缓存区的总容量和已缓存数据量确定当前解码图像缓存区剩余容量;
[0059] 根据平均送解码速度、智能结果平均上传速度、运行时间确定。
[0060] 当前解码图像缓存区剩余量可以是实时监测或者间隔一定时间进行检测,这样可以更加及时的发现智能分析速度(解码图像处理速度)的变化,以及时调整当前送解码速度,进一步避免极端情况(由于解码图像处理速度过慢,导致当前解码图像缓存区和待解码码流缓存区趋近于满载),进而导致视频丢失的故障发生。
[0061] 在一个实施例中,送解码速度包括但不限于待解码码流缓存区的送帧速度或视频解码速度。
[0062] 可选的,解码图像缓存区可以理解为图2中的待送智能YUV缓存区。
[0063] 可选的,解码图像的格式可以是YUV等本领域技术人员所需要的格式。
[0064] 可选的,平均送解码速度可以是设备在运行时间段内的平均的送解码速度,此时解码图像缓存区中存储的数据量可以忽略不计或已知。智能结果平均上传速度与平均送解码速度类似,也是设备在运行时间段内的平均的智能结果上传速度。这样,若运行时间段的初始时刻解码图像缓存区中存储的数据量可以忽略不计,解码图像缓存区的已缓存数据量=(平均送解码速度‑智能结果平均上传速度)*运行时间。若运行时间段的初始时刻解码图像缓存区中存储的数据量已知,解码图像缓存区的已缓存数据量=(平均送解码速度‑智能结果平均上传速度)*运行时间+运行时间段的初始时刻解码图像缓存区中存储的数据量。平均送解码速度、智能结果平均上传速度可以由本领域技术人员所知晓的方式确定。
[0065] 在一个实施例中,当前解码图像缓存区剩余容量的获取方式还可以是:
[0066] 对待解码码流帧进行解码,生成解码图像和该解码图像的图像序号;
[0067] 获取当前上传的智能分析结果对应的解码图像的已分析解码图像序号,以及当前解码得到的最新的解码图像的最新解码图像序号;
[0068] 根据已分析解码图像序号和最新解码图像序号确定未分析解码图像的图像数量,确定解码图像缓存区的已缓存数据量;
[0069] 根据解码图像缓存区的已缓存数据量和解码图像缓存区的总容量确定当前解码图像缓存区剩余容量。
[0070] 在一个实施例中,解码图像缓存区的已缓存数据量为解码图像缓存区中缓存的解码图像的总量,该数值可以以本领域技术人员预先设定的方式表示,如数据大小、数据数量等。解码图像缓存区可以用户缓存解码图像。通过视频拉流,进行视频码流解码,得到原始编码视频帧(待解码码流帧),将该待解码码流帧存储于待解码码流缓存区,通过在待解码码流缓存区获取待解码码流帧并进行解码,以得到解码图像。解码图像的解码格式可以是本领域技术人员所预先设定的格式。
[0071] 在一个实施例中,若所述当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度的方式包括:
[0072] 获取预设最大解码图像处理速度和解码图像缓存区的可缓存图像总容量,其中,预设最大解码图像处理速度为预先设定的智能分析过程中,对解码图像的预先设定的最大分析速度;
[0073] 根据可缓存图像总量和当前解码图像缓存总容量确定解码图像缓存区占用比例;
[0074] 根据该解码图像缓存区占用比例和预设最大解码图像处理速度确定当前预测解码图像处理速度。
[0075] 第一预设解码缓存阈值以及后续提到的第二预设解码缓存阈值可以为本领域技术人员所预先设定的值,如将可缓存图像总容量的一半作为该预设解码缓存阈值等。
[0076] 在一个实施例中,若当前解码图像缓存区剩余容量大于第二预设解码缓存阈值,则当前预测解码图像处理速度为预设最大解码图像处理速度,此时当前送解码速度为预设最大送解码速度。
[0077] 可选的,当前预测解码图像处理速度=解码图像缓存区占用比例*预设最大解码图像处理速度。
[0078] 可选的,当前预测解码图像处理速度的确定方式包括:
[0079] 根据解码图像缓存区占用比例确定解码图像缓存占用等级,根据预设解码图像缓存占用等级‑解码图像处理速度映射关系确定当前预测解码图像处理速度。
[0080] 例如,预设解码图像缓存占用等级‑解码图像处理速度为:四级(解码图像缓存区占用比例小于50%),预设最大解码图像处理速度V1max;三级(解码图像缓存区占用比例大于50%且小于65%),预设最大解码图像处理速度的四分之三,3/4V1max;二级(解码图像缓存区占用比例大于65%且小于80%),预设最大解码图像处理速度的二分之一,1/2V1max;一级(解码图像缓存区占用比例大于80%),预设最大解码图像处理速度的四分之一,1/
4V1max;若解码图像缓存占用比例为60%,此时,对应的解码图像缓存占用等级为三级,则当前预测解码图像处理速度为预设最大解码图像处理速度的四分之三(3/4V1max)。
[0081] 可选的,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度的方式还可以是本领域技术人员所知晓的其他方式。
[0082] 在一个实施例中,根据当前预测解码图像处理速度调整待解码码流帧的当前送解码速度包括以下至少之一:
[0083] 方法一、根据当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若图像处理速度比例小于预设比例阈值,根据图像处理速度比例和预设最大送解码速度确定当前送解码速度,当前送解码速度小于预设最大送解码速度;
[0084] 方法二、根据当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若图像处理速度比例大于预设比例阈值,获取预设最大送解码速度,并将预设最大送解码速度确定为当前送解码速度;
[0085] 方法三、获取待解码码流缓存区的当前待解码码流缓存区剩余容量,若当前待解码码流缓存区剩余容量小于预设码流缓存阈值,根据当前预测解码图像处理速度和预设最大解码图像处理速度确定图像处理速度比例,若图像处理速度比例小于预设比例阈值,根据图像处理速度比例确定送解码速度比例,送解码速度比例小于图像处理速度比例,并根据送解码速度比例和预设最大送解码速度确定当前送解码速度。
[0086] 其中,预设码流比例阈值为本领域技术人员预先设定的值,预设最大送解码速度可以是本本领技术人员所预先设定的速度,也可以根据当前智能分析的能力所确定。可选的,预设最大送解码速度还可以是根据最近一段(本领域预设的平均速度取值时间段,如前5分钟等)时间的平均速度确定。
[0087] 若图像处理速度比例小于预设比例阈值,其中,预设比例阈值小于100%,说明解码图像处理速度较慢,若不对送解码速度进行调整,将导致解码图像缓存区满载。若图像处理速度比例大于预设比例阈值,说明解码图像处理速度相对比较正常,可以按照之前所设定的预设最大送解码速度来继续进行待解码码流帧的解码。
[0088] 可选的,图像处理速度比例=当前预测解码图像处理速度/预设最大解码图像处理速度*100%。图像处理速度比例也可以通过本领域技术人员所知晓的其他方式来确定。
[0089] 在一个实施例中,针对上述方案一,当前送解码速度=图像处理速度比例*预设最大送解码速度。
[0090] 在另一个实施例中,针对上述方案一,当前送解码速度可以先根据图像处理速度比例确定当前处理程度等级,每一个处理程度等级均预先设定有对应的送解码速度比例,进而根据该图像处理速度比例对应的送解码速度比例和预设最大送解码速度确定当前送解码速度,例如,图像处理速度比例为30%,预先设定对应的送解码速度比例为20%,则当前送解码速度=送解码速度比例*预设最大送解码速度。
[0091] 在一个实施例中,该方法还包括:
[0092] 获取当前待解码码流缓存区的当前待解码码流缓存区剩余容量;
[0093] 若当前待解码码流缓存区剩余容量小于预设码流缓存阈值,对获取到的至少一部分待解码码流帧不进行解码。
[0094] 若当前待解码码流缓存区剩余容量小于预设缓存阈值,也即,待解码码流缓存区中存储的当前待解码码流缓存帧的数据量处于高位时,说明当前的送解码速度慢于待解码码流帧存入待解码码流缓存区中的存储速度,此时,若不能加快待解码码流帧从待解码码流缓存区的流出速度,待解码码流缓存区将很快存满,进而导致后续的视频丢失。此时可以有选择的对一部分待解码码流帧进行丢帧处理,不再进行解码,这样,可以既满足了智能解析的样本全面的需要,又能够避免待解码码流缓存区存满,没有剩余空间,导致大量连续的视频帧被损失。
[0095] 在一个实施例中,对获取到的至少一部分待解码码流帧不进行解码包括:
[0096] 依次获取待解码码流帧,根据当前丢帧规则对至少一部分待解码码流帧进行丢帧处理。
[0097] 解码过程中,对于一个通道的视频帧通过一个或多个解码进程对一个或多个待解码码流缓存区中的待解码码流帧进行解码,当后端智能分析部分的解码图像处理速度较慢时,将导致对应的当前送解码速度变慢,此时,可以将获取到的待解码码流帧进行丢帧处理,以加快待解码码流帧的处理速度,进而加快待解码码流帧从待解码码流缓存区的释放速度,避免待解码码流缓存区存满。
[0098] 可选的,不进行解码也可以是通过创建一个新的暂存区,将不进行解码的至少一部分待解码码流帧存储到暂存区,并释放待解码码流缓存区该待解码码流帧的缓存实现。
[0099] 对于进行解码的待解码码流帧的选取可以采用当前丢帧规则确定,也可以通过对待解码码流帧的清晰度等参数的获取后,根据清晰度等参数来确定是否进行丢帧。比如,提升清晰度阈值,将低于一定清晰度阈值的待解码码流帧进行丢帧。直到当前预测解码图像处理速度达到预设最大解码图像处理速度,则停止丢帧。
[0100] 在一个实施例中,当前丢帧规则根据当前待解码码流缓存区剩余容量确定。例如,当前待解码码流缓存区剩余容量达到第一预设码流缓存阈值,此时采用第一丢帧规则;当前待解码码流缓存总量达到第二预设码流缓存阈值,此时采用第二丢帧规则……,其中第一预设码流缓存阈值为各个预设码流缓存阈值中的最大值,根据第一丢帧规则所丢弃的待解码码流帧的数量最多。
[0101] 在一个实施例中,当前丢帧规则包括丢帧频率,丢帧频率包括:
[0102] 间隔预设丢帧时间所丢弃待解码码流帧的数量,例如每间隔1秒丢弃10帧待解码码流帧,这10帧可以是连续的待解码码流帧,或者分析1秒中所获取到的各待解码码流帧的清晰度等丢帧参数后,将丢帧参数较差的10帧待解码码流帧丢弃;
[0103] 或,
[0104] 间隔预设丢帧数量所丢弃待解码码流帧的数量,例如每接收到5帧待解码码流帧将后续接收到的第6帧待解码码流帧丢弃,或者每间隔一帧待解码码流帧丢弃一帧待解码码流帧等。
[0105] 可选的,丢帧频率可以根据当前待解码码流缓存总量进行实时调整,当当前待解码码流缓存总量增加时,提升丢帧频率,也即丢弃更多的待解码码流帧,以减轻待解码码流缓存区的存储压力;当当前待解码码流缓存总量减少时,降低丢帧频率,提升解码的待解码码流帧的数量,进而提升后续智能分析的准确性和全面性。
[0106] 在一个实施例中,该方法还包括:
[0107] 重新获取当前解码图像缓存区剩余容量,若当前解码图像缓存区剩余容量大于第二预设解码缓存阈值,进行恢复处理,其中恢复处理包括以下至少之一,
[0108] 对获取到的全部待解码码流缓存帧均进行解码;
[0109] 将当前送解码速度调整为预设最大送解码速度。
[0110] 在一个实施例中,若第一预设解码缓存阈值小于第二预设解码缓存阈值,若当前解码图像缓存区剩余容量增大到大于第一预设解码缓存阈值时,可以不急于解除丢帧和增加当前送解码速度,当检测到当前解码图像缓存区剩余容量增大到大于第二预设解码缓存阈值时再执行恢复处理,这样可以防止震荡。
[0111] 可选的,第一预设解码缓存阈值也可以等于第二预设解码缓存阈值,此时该方法依然可以实现,但存在一定恢复处理反复震荡的可能。
[0112] 也即,丢帧处理为一种暂时的处理方式,一旦当前待解码码流缓存总量较少(待解码码流缓存区的剩余容量较大)则恢复到原来的解码方式。
[0113] 上述实施例提供了一种送解码速度调整方法,该方法通过获取解码图像缓存区的当前解码图像缓存区剩余容量,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度,根据当前预测解码图像处理速度调整待解码码流帧的当前送解码速度,通过当前解码图像缓存区剩余容量大小,间接判断视频智能分析的压力情况,对应调整当前送解码速度,以减小视频智能分析的处理压力,利用时间换空间的思想,降低视频数据丢失以及视频智能分析结果丢失的风险。
[0114] 可选的,当检测到待解码码流缓存区的当前待解码码流缓存区剩余容量小于预设码流缓存阈值,此时,简单的调整送解码速度并不足以对冲掉视频智能分析处理压力,此时为了防止由于待解码码流缓存区满而导致视频丢失,可以对获取到的至少一部分待解码码流帧不进行解码,例如按照当前丢帧规则对一部分待解码码流帧进行丢帧处理,该手段可以大幅降低智能分析压力,并最大程度的保留视频算法结果。
[0115] 可选的,当前丢帧规则包括间隔预设丢帧时间所丢弃待解码码流帧的数量,或间隔预设丢帧数量所丢弃待解码码流帧的数量,这样可以实现均匀的丢弃待解码码流帧,不至于丢失某一时段的所有视频,最大程度的保留该时段的视频算法结果。
[0116] 可选的,丢帧规则可以根据当前待解码码流缓存区剩余容量确定,当当前待解码码流缓存区剩余容量较大时,当前丢帧规则中所丢弃的待解码码流帧数量较少,反之,当当前待解码码流缓存区剩余容量较小时,当前丢帧规则中所丢弃的待解码码流帧数量较多。可以实时检测当前待解码码流缓存区剩余容量,进而及时调整当前丢帧规则,特别是丢弃待解码码流帧的数量多少。
[0117] 可选的,通过重新检测当前待解码码流缓存区剩余容量,一旦当前待解码码流缓存区剩余容量大于预设缓存阈值,对获取到的全部待解码码流缓存帧均进行解码,停止丢帧。
[0118] 上述实施例提供的方法,通过智能视频帧缓冲区的剩余容量大小,来间接判定目前该路视频智能分析的压力,与其他方案相比,该方案不需要读取其他复杂数据和计算,简单高效;视频智能分析压力大时,提供了多级调节机制,最大限度保证算法结果不丢失;当识别到智能算法压力大时,通过使用多级调节机制,充分利用待解码缓冲区,逐步降低智能送送解码速度,该调节手段通过时间换空间,不会造成智能数据丢失;此外通过逐步的丢帧机制,进一步降低算法压力,同时能比较好的保留智能分析结果。
[0119] 参见图4,图4为一种具体的送解码速度调整方法的流程示意图。通过引入算法压力监测机制,从上述图1和图2提供的控制流程分析,在该系统中,算法承压直接导致了两个缓冲区堆积(待解码码流缓存区和待送智能YUV缓存区),本实施例的方法通过在线程B中,增加YUV缓存区容量监测模块,该YUV缓存区容量监测模块模块会实时读取第一缓存区剩余可用容量(当前解码图像缓存区剩余容量),通过该第一缓存区容量大小来确定推定实时算法处理速度S1(当前预测解码图像处理速度)。当第一缓存区剩余容量高时,S1低,反之S1高;在线程A中,增加待解码码流缓存区监测模块,该待解码码流缓存区监测模块会实时获取码流缓存区剩余可用容量(待解码码流缓存区剩余容量),根据该码流缓存区剩余可用容量和前述推定实时算法处理速度(当前预测解码图像处理速度)S1来调节当前送解码速度S2。通过增加上述两个监控模块,实现了通过缓存区容量来间接识别算法压力(视频智能分析压力)目的。
[0120] 参见图5,图5为另一种具体的送解码速度调整方法的流程示意图。如图5所示,在图4的基础上,在线程B中,根据当前送解码速度S2来送视频帧(待解码码流帧)进行解码。当算法处理压力大时,或反压待送智能YUV缓冲区,此时推定实时算法处理速度S1变小,在线程A中,S2速度判定模块识别到S1变小,主动降低S2速度,达到减缓智能处理压力的目的,利用时间换空间的思想,保证视频数据不丢失。
[0121] 当线程A中监测到待解码码流缓存区剩余容量低于阈值THD1(预设码流缓存阈值)时,任务此时S2调节机制不足以对冲掉算法处理压力。此时为了防止由于待解码码流缓存区满而导致视频丢失,在线程B中增加智能丢帧机制,均匀的丢弃视频帧,该手段可以大幅降低智能分析压力,并且不至于丢失该时段的所有视频,最大程度的保留该时段的视频算法结果。
[0122] 当线程B监测到待送智能YUV缓冲区的剩余容量增多到阈值THD2(第二预设解码缓存阈值)时,此时说明算法压力已经变小,对应调大S1,触发S2恢复为正常值(预设最大送解码速度),智能丢帧机制不再丢帧(对获取到的全部待解码码流缓存帧均进行解码)。
[0123] 通过监测智能处理缓冲区剩余容量(待送智能YUV缓冲区的剩余容量)来动态、间接地判定智能分析处理压力,并通过二级视频帧控制机制来调整智能送帧速度(送解码速度),以减小智能算法处理压力,其中:
[0124] 控制级别一,算法压力大时,依次将送解码速度降低至3/4预设最大送解码速度、1/2预设最大送解码速度、1/4预设最大送解码速度,减小算法处理压力,该机制不会导致智能结果丢失;
[0125] 控制级别二,当降低视频送解码速度也不足以减缓智能压力时,也即当前待解码码流缓存区剩余容量小于预设码流缓存阈值时,依次按照1/4档(每4帧丢弃1帧)、1/2档(每4帧丢弃1帧)、3/4档(每4帧丢弃1帧)次均匀丢帧,进一步降低算法压力,同时尽可能多的保留智能数据;
[0126] 通过监测智能算法压力,具体的通过监测待送智能YUV缓冲区的剩余容量大小,来间接判定目前该路视频智能分析的压力,与其他方案相比,该方案不需要读取其他复杂数据和计算,简单高效;智能分析压力大时,提供了多级调节机制,最大限度保证算法结果不丢失。
[0127] 当识别到智能算法压力大时,通过使用多级调节机制。首先,充分利用待解码码流缓冲区,逐步降低当前送解码速度,该调节手段通过时间换空间,不会造成智能数据丢失;其次,通过逐步的丢帧机制,进一步降低算法压力,同时能比较好的保留智能分析结果。
[0128] 以解码图像缓存区为待送智能YUV缓冲区为例,参见图6,图6为一种基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度的具体实现方式。如图6所示:
[0129] 获取待送智能YUV缓冲区剩余容量(图中的YUV缓存池剩余容量),根据待送智能YUV缓冲区剩余容量来确定当前预测解码图像处理速度S1属于哪个速度档位;
[0130] 当待送智能YUV缓冲区剩余容量处于100%~50%之间时,S1=1;当50%~35%时,S1=3/4;当35%~20%时,S1=1/2;当<20%时,S1=1/4;
[0131] 当容量大于50%时,判定此时S1是否是正常速(预设最大送解码速度),如果是正常速则结束;否则,此时非正常速,需要当待送智能YUV缓冲区剩余容量达到80%才恢复正常速,防止调节震荡。
[0132] 参见图7,图7为一种对获取到的至少一部分待解码码流帧不进行解码的具体实现方式。
[0133] 如图7所示:
[0134] 获取码流缓存区(待解码码流缓存区)的剩余容量,当容量大于50%(待解码码流缓存区的一半)时,此时缓存区有足够额容量来实现时间换空间的机制。获取S1的值,如果S1为非正常速,说明此时算法处理压力大,需要减缓送解码速度。对应S1,分别将S2设置为3/4预设最大送解码速度、1/2预设最大送解码速度、1/4预设最大送解码速度;同时,此时由于缓存容量大,关闭丢帧机制(此前可能已经开启);
[0135] 当码流缓存区(待解码码流缓存区)的剩余容量小于50%时,此时说明S2的调节已经不足以对冲算法压力,此时需要更加强力的丢帧机制介入。根据码流缓存的容量分段,当剩余容量处于当50%~35%时,采用3/4丢帧;当35%~20%时,采用1/2丢帧;当<20%时,采用3/4丢帧。
[0136] 例如,线程B使用计算后的S2速度进行视频解码,例如正常解码25Fps的视频流,每秒解码25帧,当S2调节到3/4速时,则送送解码速度变为25*3/4=18帧/s。视频解码后得到YUV数据(解码图像),经过智能丢帧模块过滤,如果丢帧未启用,则送智能速度也为18帧/s;如果触发了智能丢帧,例如为1/4丢帧,则此时需要均匀得每隔4帧丢弃一帧,实际送智能分析帧率=18*(1‑1/4)=4.5帧/s。当S1恢复到正常速度时,A线程中会将S2恢复正常速同时关闭丢帧机制,流程恢复到正常状态。
[0137] 请参阅图8,本实施例提供了一种送解码速度调整系统800,包括:
[0138] 获取模块801,用于获取解码图像缓存区的当前解码图像缓存区剩余容量;
[0139] 预测模块802,用于若当前解码图像缓存区剩余容量小于第一预设解码缓存阈值,基于当前解码图像缓存区剩余容量预测当前预测解码图像处理速度;
[0140] 调整模块803,用于根据当前预测解码图像处理速度调整待解码码流帧的当前送解码速度。
[0141] 在本实施例中,该图像采样系统实质上是设置了多个模块用以执行上述实施例中的方法,具体功能和技术效果参照上述方法实施例即可,此处不再赘述。
[0142] 参见图9,本发明实施例还提供了一种电子设备1000,包括处理器1001、存储器1002和通信总线1003;
[0143] 通信总线1003用于将处理器1001和存储器连接1002;
[0144] 处理器1001用于执行存储器1002中存储的计算机程序,以实现如上述实施例一中的一个或多个所述的方法。
[0145] 本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,[0146] 计算机程序用于使计算机执行如上述实施例一中的任一项所述的方法。
[0147] 本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例的实施例一所包含步骤的指令(instructions)。
[0148] 需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
[0149] 上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
[0150] 可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0151] 附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0152] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。