音视频多路并发解码方法、装置和计算机设备与流程

    专利2022-07-07  124


    本发明涉及音视频解码技术领域,尤其涉及一种音视频多路并发解码方法、装置和计算机设备。



    背景技术:

    音视频解码技术中可以分为硬解和软解两种。硬解是指不依赖于cpu,通过专用的硬件设备单独完成音视频的解码,而软解是通过解码软件利用cpu对音视频进行解码处理。在实际应用中,硬解码资源往往是有限的,并且只支持特定格式的音视频解码。因此,可利用解码软件对音视频进行软解码,以提高解码能力,并且能够支持多种音视频格式。但是,软解码会占用大量的cpu资源,尤其是针对高压缩率编码算法的高清视频,会消耗更多的cpu资源。在一些要求多路内容实时分析或者同步播放的场景下,对解码软件的解码能力要求较高,需要尽可能多的开辟解码进程或者线程。而且多路音视频解码需要为每一路会话分配解码前和解码后的数据缓冲区,还会分配额外的空间用于保存支持中断解码或者分段解码的场景下的中间解码数据。如果会话数量过多,可能会占用很多的系统资源如cpu和内存,从而对系统运行产生影响。目前,解码软件只支持固定数量的解码并发数和会话数,或者只能通过命令行或配置文件来调整解码并发数和会话数。当解码软件运行在一个新的硬件配置平台上,需要重新评估调整参数(解码并发数和会话数)。并且在确定参数之后,一旦开始解码过程,解码软件便无法对这些参数进行修改。然而在大多数业务场景下,原始待解码数据流都是不停变化的,这就会发生系统资源利用不充分或超负荷的问题。如果没有充分利用系统硬件资源,即cpu或者内存空闲,会导致大量数据排队等候处理,效率低;如果系统硬件资源使用超限,会导致系统运行卡顿或者其它异常。因此,亟需一种针对多路并发音视频的解码方法,在充分利用系统硬件资源,提高解码效率的同时,又能够保证系统运行稳定。



    技术实现要素:

    本发明的目的旨在至少在一定程度上解决上述的技术问题之一。

    为此,本发明的第一个目的在于提出一种音视频多路并发解码方法,能够充分利用系统硬件资源,提高解码效率,同时保证系统的运行稳定。

    本发明的第二个目的在于提出一种音视频多路并发解码装置。

    本发明的第三个目的在于提出一种计算机设备。

    本发明的第四个目的在于提出一种非临时性计算机可读存储介质。

    为了实现上述目的,本发明第一方面实施例提出一种音视频多路并发解码方法,该方法包括:

    获取用于解码音视频的解码参数和系统资源的使用数据,其中,所述解码参数包括:解码并发数和软解码会话数,所述系统资源包括如下至少之一:cpu占用率、内存占用率、系统解码负荷度和会话占用率;

    通过监控所述系统资源的使用数据,调整所述解码参数;

    基于调整后的解码参数对所述音视频进行解码。

    可选的,基于每一路会话的解码负荷度计算得到所述系统解码负荷度。

    可选的,基于当前已缓存数据会话数和所述软解码会话数计算得到所述会话占用率。

    可选的,基于每一路会话的解码负荷度计算得到所述系统解码负荷度,包括:

    计算所述每一路会话的解码负荷度;

    基于所述每一路会话的解码负荷度计算出所有会话的解码负荷度的平均值,并将所述平均值作为所述系统解码负荷度。

    可选的,当前会话为视频解码时,计算所述每一路会话的解码负荷度,包括:

    获取当前会话的视频刷新率fps、解码时长、解码输出帧数量和视频解码加权值,其中,所述视频解码加权值与视频分辨率和视频编码复杂度成正比;

    根据所述视频刷新率fps、所述解码时长、所述解码输出帧数量和所述视频解码加权值计算出所述当前会话的解码负荷度。

    可选的,当前会话为音频解码时,计算所述每一路会话的解码负荷度,包括:

    获取当前会话的音频码率、解码时长、音频解码字节数和音频解码加权值;

    根据所述音频码率、所述解码时长、所述音频解码字节数和所述音频解码加权值计算出所述当前会话的解码负荷度,其中,所述音频解码加权值与音频编码复杂度成正比。

    可选的,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述cpu占用率是否小于cpu可分配阈值;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述cpu占用率小于所述cpu可分配阈值,则增加所述解码并发数。

    可选的,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述软解码会话数是否大于最小支持会话数;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    可选的,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述系统解码负荷度是否小于最小解码负荷度,所述会话占用率是否大于最大会话占用阈值,所述内存占用率是否小于内存可分配阈值;

    如果所述系统解码负荷度小于最小解码负荷度,所述会话占用率大于最大会话占用阈值,且所述内存占用率小于所述内存可分配阈值,则增加所述软解会话数。

    可选的,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述内存占用率是否大于内存上限阈值,所述软解码会话数是否大于最小支持会话数;

    如果所述内存占用率大于内存上限阈值,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    可选的,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述cpu占用率是否大于cpu上限阈值,所述解码并发数是否大于最小支持解码并发数;

    如果所述cpu占用率大于cpu上限阈值,且所述解码并发数大于最小支持解码并发数,则减少所述解码并发数。

    本发明实施例的音视频多路并发解码方法,通过获取用于解码音视频的解码参数和系统资源的使用数据,并通过监控所述系统资源的使用数据,调整所述解码参数,以及基于调整后的解码参数对所述音视频进行解码,在充分利用系统硬件资源,提高解码效率的同时,又保证了系统的运行稳定。

    为了实现上述目的,本发明第二方面实施例提出了一种音视频多路并发解码装置,包括:

    获取模块,用于获取用于解码音视频的解码参数和系统资源的使用数据,其中,所述解码参数包括:解码并发数和软解码会话数,所述系统资源包括如下至少之一:cpu占用率、内存占用率、系统解码负荷度和会话占用率;

    调整模块,用于通过监控所述系统资源的使用数据,调整所述解码参数;

    解码模块,用于基于调整后的解码参数对所述音视频进行解码。

    可选的,所述获取模块,用于:

    基于每一路会话的解码负荷度计算得到所述系统解码负荷度。

    可选的,所述获取模块,用于:

    基于当前已缓存数据会话数和所述软解码会话数计算得到所述会话占用率。

    可选的,所述获取模块,用于:

    计算所述每一路会话的解码负荷度;

    基于所述每一路会话的解码负荷度计算出所有会话的解码负荷度的平均值,并将所述平均值作为所述系统解码负荷度。

    可选的,所述获取模块,具体用于:

    当前会话为视频解码时,获取当前会话的视频刷新率fps、解码时长、解码输出帧数量和视频解码加权值,其中,所述视频解码加权值与视频分辨率和视频编码复杂度成正比;

    根据所述视频刷新率fps、所述解码时长、所述解码输出帧数量和所述视频解码加权值计算出所述当前会话的解码负荷度。

    可选的,所述获取模块,具体用于:

    当前会话为音频解码时,获取当前会话的音频码率、解码时长、音频解码字节数和音频解码加权值;

    根据所述音频码率、所述解码时长、所述音频解码字节数和所述音频解码加权值计算出所述当前会话的解码负荷度,其中,所述音频解码加权值与音频编码复杂度成正比。可选的,所述调整模块,用于:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述cpu占用率是否小于cpu可分配阈值;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述cpu占用率小于所述cpu可分配阈值,则增加所述解码并发数。

    可选的,所述调整模块,用于:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述软解码会话数是否大于最小支持会话数;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    可选的,所述调整模块,用于:

    判断所述系统解码负荷度是否小于最小解码负荷度,所述会话占用率是否大于最大会话占用阈值,所述内存占用率是否小于内存可分配阈值;

    如果所述系统解码负荷度小于最小解码负荷度,所述会话占用率大于最大会话占用阈值,且所述内存占用率小于所述内存可分配阈值,则增加所述软解会话数。

    可选的,所述调整模块,用于:

    判断所述内存占用率是否大于内存上限阈值,所述软解码会话数是否大于最小支持会话数;

    如果所述内存占用率大于内存上限阈值,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    可选的,所述调整模块,用于:

    判断所述cpu占用率是否大于cpu上限阈值,所述解码并发数是否大于最小支持解码并发数;

    如果所述cpu占用率大于cpu上限阈值,且所述解码并发数大于最小支持解码并发数,则减少所述解码并发数。

    本发明实施例的音视频多路并发解码装置,通过获取用于解码音视频的解码参数和系统资源的使用数据,并通过监控所述系统资源的使用数据,调整所述解码参数,以及基于调整后的解码参数对所述音视频进行解码,在充分利用系统硬件资源,提高解码效率的同时,又保证了系统的运行稳定。

    为了实现上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如第一方面实施例所述的音视频多路并发解码方法。

    为了实现上述目的,本发明第四方面实施例还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面实施例所述的音视频多路并发解码方法。

    本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

    附图说明

    构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

    图1是本发明一个实施例的音视频多路并发解码方法的流程图;

    图1a是本发明一个实施例的计算系统解码负荷度的流程图;

    图2是本发明一个具体实施例的音视频多路并发解码方法的流程图;

    图3是本发明一实施例的音视频多路并发解码装置的结构示意图。

    具体实施方式

    需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

    以下结合具体实施例对本发明作进一步详细描述,这些实施例不能理解为限制本发明所要求保护的范围。

    下面参考附图描述本发明实施例的音视频多路并发解码方法、装置和计算机设备。

    针对多路并发音视频的解码,对解码软件的解码能力要求较高,需要尽可能多的开辟解码进程或者线程。而且多路音视频解码需要为每一路会话分配解码前和解码后的数据缓冲区以及额外的空间。如果会话数量过多,会占用很多的系统资源如cpu和内存,从而对系统运行产生影响。目前,解码软件只支持固定数量的解码并发数和会话数,或者只能通过命令行或配置文件来调整解码并发数和会话数。当解码软件运行在一个新的硬件配置平台上,需要重新评估调整参数(解码并发数和会话数)。并且在确定参数之后,一旦开始解码过程,解码软件便无法对这些参数进行修改。然而在大多数业务场景下,原始待解码数据流都是不停变化的,这就会发生系统资源利用不充分或超负荷的问题。如果没有充分利用系统硬件资源,即cpu或者内存空闲,会导致大量数据排队等候处理,效率低;如果资源使用超限,会导致系统运行卡顿或者其它异常。因此,为解决现有的问题,本发明提出了一种音视频多路并发解码方法,能够在充分利用系统硬件资源,提高解码效率的同时,又能够保证系统运行稳定。

    图1是本发明一实施例的音视频多路并发解码的流程图,如图1所示,该方法包括以下步骤:

    s1,获取用于解码音视频的解码参数和系统资源的使用数据。

    解码参数包括解码并发数和软解码会话数,解码并发数和软解码会话数可以是预先设置的。例如在解码开始之前,可以根据系统硬件情况如cpu、内存的性能或使用情况等,来设置解码并发数和软解码会话数。当然,也可以手动输入设置。

    系统资源包括如下至少之一:cpu占用率、内存占用率、系统解码负荷度和会话占用率。其中,cpu占用率和内存占用率可通过监控工具例如windows系统自带的任务管理器来获取。而系统解码负荷度和会话占用率则需要计算得到。其中,会话占用率通过记录当前已缓存数据会话数和软解码会话数计算得到。而系统解码负荷度则基于每一路会话的解码负荷度计算得到。

    如图1a所示,计算系统解码负荷度可包括以下步骤:

    s11,计算每一路会话的解码负荷度。

    其中,解码负荷度可分为两种情况。第一种情况:某一路会话为视频解码,则根据视频的相关参数计算出当前会话的解码负荷度。第二种情况:某一路会话为音频解码,则根据音频的相关参数计算出当前会话的解码负荷度。

    第一种情况:

    先获取当前会话的视频刷新率fps、解码时长、解码输出帧数量和视频解码加权值。其中,所述视频解码加权值与视频分辨率和视频编码复杂度成正比。同一编码格式下,高分辨率视频的解码加权值大于低分辨率视频的解码加权值;编码复杂度高的视频的解码加权值大于编码复杂度低的视频的解码加权值。

    在获取上述视频参数之后,便可以根据视频刷新率fps、解码时长、解码输出帧数量和视频解码加权值计算出视频会话的解码负荷度。例如,针对某一路视频会话i,可利用公式一计算出其所对应的解码负荷度lri。

    公式一:lri=wi*fps/(fi/ti)

    其中,lri为解码负荷度,wi为视频解码加权值,fps为视频刷新率,fi为解码输出帧数量,ti为解码时长(单位为秒)。

    第二种情况:

    先获取当前会话的音频码率、解码时长、音频解码字节数和音频解码加权值,然后根据所述音频码率、所述解码时长、所述音频解码字节数和所述音频解码加权值计算出所述当前会话的解码负荷度。其中,所述音频解码加权值与音频编码复杂度成正比。

    针对某一路音频会话j,可利用公式二计算出其所对应的解码负荷度lrj。

    公式二:lrj=wj*bps/(bj*8/tj)

    其中,lrj为解码负荷度,wj为音频解码加权值,bps为音频码率,bj为音频解码字节数,tj为解码时长(单位为秒)。其中,音频码率bps=采样率×采样位深×声道数。

    由于音频解码对资源的消耗远小于视频解码,因此所有的音频会话的解码加权值wj应在其原值基础上乘以一个小于1的系数m。

    s12,基于每一路会话的解码负荷度计算出所有会话的解码负荷度的平均值,并将平均值作为系统解码负荷度。

    本实施例中,可利用公式三计算出系统解码负荷度。

    公式三:curlr=(lr1 lr2 ... lrnumse)/numse

    其中,curlr为系统解码负荷度,numse为软解码会话数(既可以包括音频解码会话,也可以包括视频解码会话),lr1为第一路会话的解码负荷度,lr2为第二路会话的解码负荷度,以此类推。

    而计算会话占用率的过程具体如下:

    记录当前已缓存数据会话数,并根据当前已缓存数据会话数和软解码会话数计算出会话占用率。可基于公式三计算出会话占用率cursepct。

    公式三:cursepct=当前已缓存数据会话数/软解码会话数

    其中,cursepct为会话占用率,当前已缓存数据会话数为已开始解码工作的会话数,软解码会话数为预先设置的会话数(上限值)。

    s2,通过监控系统资源的使用数据,调整解码参数。

    本步骤主要是通过获取的系统解码负荷度、会话占用率、cpu占用率以及内存占用率这些系统资源的使用数据,来自动调整解码并发数或软解码会话数。也就是说,将这些系统资源的使用数据与各自对应的预设阈值进行比较,来判断是否需要调整解码并发数或软解码会话数。上述系统资源既可单独使用,也可以多个配合使用。

    本发明的实施例中,列举了以下几种情况:

    第一种情况:系统解码负荷度与cpu占用率配合

    判断系统解码负荷度是否大于最大解码负荷度,cpu占用率是否小于cpu可分配阈值。如果系统解码负荷度大于最大解码负荷度,且cpu占用率小于cpu可分配阈值,则增加解码并发数。

    第二种情况:系统解码负荷度与软解码会话数配合

    判断系统解码负荷度是否大于最大解码负荷度,软解码会话数是否大于最小支持会话数。如果系统解码负荷度大于最大解码负荷度,且软解码会话数大于最小支持会话数,则减少软解会话数。

    第三种情况:系统解码负荷度与会话占用率、内存占用率配合

    判断系统解码负荷度是否小于最小解码负荷度,会话占用率是否大于最大会话占用阈值,内存占用率是否小于内存可分配阈值。如果系统解码负荷度小于最小解码负荷度,会话占用率大于最大会话占用阈值,且内存占用率小于内存可分配阈值,则增加软解会话数。

    第四种情况:内存占用率与软解码会话数配合

    判断内存占用率是否大于内存上限阈值,软解码会话数是否大于最小支持会话数。如果内存占用率大于内存上限阈值,且软解码会话数大于最小支持会话数,则减少软解会话数。

    第五种情况:cpu占用率与解码并发数配合

    判断cpu占用率是否大于cpu上限阈值,解码并发数是否大于最小支持解码并发数。如果cpu占用率大于cpu上限阈值,且解码并发数大于最小支持解码并发数,则减少解码并发数。

    应当理解的是,除上述列出的五种情况外,其他更多的情况本实施例不再一一赘述。此外,上述列出的情况以及未列出的情况均可以通过组合的方式实现,例如首先判断是否满足第一种情况,如果不满足,则可以继续判断是否满足第二种情况。如果不满足第二种情况,还可以继续判断第三种情况。本发明并不对判断的顺序进行限定,如可以先判断是否满足第五种情况,如果不满足,则可以继续判断是否满足第一种情况。

    s3,基于调整后的解码参数对音视频进行解码。

    在对解码并发数或软解码会话数进行调整之后,便可以基于调整后的解码并发数或调整后的软解码会话数对音视频进行解码。

    另外,可以基于预设周期对解码并发数或软解码会话数进行调整。例如,可以每隔30分钟获取系统解码负荷度、会话占用率、cpu占用率以及内存占用率这些系统资源的使用数据,基于上述使用数据对解码并发数或软解码会话数进行自动调整。

    本发明实施例的音视频多路并发解码方法,通过获取用于解码音视频的解码参数和系统资源的使用数据,并通过监控系统资源的使用数据,调整解码参数,以及基于调整后的解码参数对音视频进行解码,在充分利用系统硬件资源,提高解码效率的同时,又保证了系统的运行稳定。

    下面通过一个具体实施例,来对本发明的音视频多路并发解码方法进行详细阐述。

    图2是本发明一具体实施例的音视频多路并发解码方法的流程图。

    如图2所示,该方法包括以下步骤:

    s201,从配置文件中读取控制阈值。

    本发明设置了四个系统负载阈值作为系统资源使用的判断依据:cpu可分配阈值reusecpu、cpu上限阈值maxcpu、内存可分配阈值reusemem、内存上限阈值maxmem。这几个阈值决定了解码软件可以利用的系统资源情况,可以通过百分比来表示。当cpu占用率低于reusecpu,或者内存占用率低于reusemem时,可以增加对应资源的使用(增加软解码会话数等);当cpu占用率高于maxcpu,或者内存占用率高于maxmem时,可以减少对应资源的使用。

    本发明还设置了两个解码负荷度控制阈值,最小解码负荷度minlr和最大解码负荷度maxlr,minlr小于1,maxlr大于1。此外,还设置了一个会话占用阈值maxsepct,maxsepct表示当前已缓存会话数量占系统支持会话数的百分比,可作为调节系统解码负荷的判断依据。

    解码软件开始运行时,可从配置文件中读取系统负载阈值reusecpu、maxcpu、reusemem和maxmem;解码负荷度控制阈值minlr和maxlr;会话占用阈值maxsepct。

    s202,根据默认解码参数开始解码,并记录会话参数。

    其中,默认解码参数为预先设置的解码并发数numdecoders和软解码会话数numse。

    解码软件可按照预设的numdecoders和numse开始解码。针对每一路会话,记录用于计算解码负荷度所需要的会话参数。会话参数包括视频的fps、音频码率、解码时长、解码输出帧总数等。

    s203,计算解码负荷度、会话占用率,并获取cpu占用率和内存占用率。

    可周期性地(如每30分钟)启动调整解码参数的过程。首先读取系统当前的cpu占用率curcpu和内存占用率curmem,计算当前系统解码负荷度curlr,计算会话占用率cursepct。

    计算当前系统解码负荷度curlr,具体如下:

    某一路视频会话i的解码负荷度lri=wi*视频fps/(会话i解码输出帧总数/会话i解码时长)。其中,wi为会话i的视频解码加权值,可以根据编码格式和解码帧分辨率进行设置。

    某一路音频会话j的解码负荷度lrj=wj*bps/(bj*8/tj)。其中,wj为音频解码加权值,bps为音频码率,bj为音频解码字节数,tj为解码时长。

    由于音频解码对资源的消耗远小于视频解码,因此所有的音频会话的解码加权值wj应在其原值基础上乘以一个小于1的系数m。

    在计算出每一路会话的解码负荷度lr之后,则curlr=(lr1 lr2 ... lrnumse)/numse。会话既可以包括音频会话,也可以包括视频会话。

    计算会话占用率cursepct,具体如下:

    cursepct=(当前已缓存数据的会话量/支持的会话上限量)。当cursepct大于maxsepct时,说明系统当前会话已被大量占用,有增加会话路数上限的需求。

    在计算解码负荷度、会话占用率之后,便可以将curcpu和{reusecpu、maxcpu}相比较,将curmem和{reusemem、maxmem}相比较,将curlr和{minlr、maxlr}相比较,将cursepct和maxsepct相比较。从而根据比较结果来对解码参数进行调整。

    s204,判断curmem是否大于maxmem,并且numse是否大于minse。

    其中,minse是系统最小可支持的会话数。

    s205,如果满足,则减少可支持的会话上限,并返回步骤s203。

    s206,如果不满足,则判断curcpu是否大于maxcpu,并且numdecoders是否大于mindecoders。

    其中,mindecoders是系统最小可支持的解码并发数。

    s207,如果满足,则减少解码并发数,并返回步骤s203。

    s208,如果不满足,则判断curlr是否大于maxlr且curcpu是否小于reusecpu。

    s209,如果满足,则增加解码并发数,并返回步骤s203。

    s210,如果不满足,则判断curlr是否大于maxlr且numse是否大于minse。

    s211,如果满足,则减少可支持的会话上限,并返回步骤s203。

    s212,如果不满足,则判断curlr是否小于minlr、cursepct是否大于maxsepct且curmem是否小于reusemem。

    s213,如果满足,则增加可支持的会话上限。

    本发明针对音视频多路并发解码的场景,结合业务的实际应用场景对系统解码负荷度、会话占用率等进行周期性评估,可以在解码过程中自动调整解码软件的软解码会话路数和解码并发数,保证了在资源可用范围内,解码软件能够支持最大的软解码会话路数和解码并发数。整个调整过程是解码软件在业务运行过程中自动进行的,无须人工干预,能够自适应不同配置的硬件平台、数据流场景。并且资源的可用范围是用户可配的,用户可以灵活掌控解码软件对硬件资源的占用情况。

    为了实现上述实施例,本发明还提出了一种音视频多路并发解码装置。

    图3是本发明一实施例的音视频多路并发解码装置的结构示意图。

    如图3所示,该装置包括获取模块31、调整模块32以及解码模块33。

    获取模块31,用于获取用于解码音视频的解码参数和系统资源的使用数据。其中,解码参数包括:解码并发数和软解码会话数,系统资源包括如下至少之一:cpu占用率、内存占用率、系统解码负荷度和会话占用率。

    调整模块32,用于通过监控系统资源的使用数据,调整解码参数。

    解码模块33,用于基于调整后的解码参数对音视频进行解码。

    应当理解的是,本实施例的音视频多路并发解码装置与第一方面实施例的音视频多路并发解码方法的描述一致,此处不再赘述。

    本发明实施例的音视频多路并发解码装置,通过获取用于解码音视频的解码参数和系统资源的使用数据,并通过监控系统资源的使用数据,调整解码参数,以及基于调整后的解码参数对音视频进行解码,在充分利用系统硬件资源,提高解码效率的同时,又保证了系统的运行稳定。

    为了实现上述实施例,本发明还提出了一种计算机设备。

    该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如第一方面实施例的音视频多路并发解码方法。

    为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质。

    该非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面实施例的音视频多路并发解码方法。

    需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

    在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

    应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

    需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

    在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。


    技术特征:

    1.一种音视频多路并发解码方法,其特征在于,包括:

    获取用于解码音视频的解码参数和系统资源的使用数据,其中,所述解码参数包括:解码并发数和软解码会话数,所述系统资源包括如下至少之一:cpu占用率、内存占用率、系统解码负荷度和会话占用率;

    通过监控所述系统资源的使用数据,调整所述解码参数;

    基于调整后的解码参数对所述音视频进行解码。

    2.如权利要求1所述的方法,其特征在于,基于每一路会话的解码负荷度计算得到所述系统解码负荷度。

    3.如权利要求1所述的方法,其特征在于,基于当前已缓存数据会话数和所述软解码会话数计算得到所述会话占用率。

    4.如权利要求2所述的方法,其特征在于,基于每一路会话的解码负荷度计算得到所述系统解码负荷度,包括:

    计算所述每一路会话的解码负荷度;

    基于所述每一路会话的解码负荷度计算出所有会话的解码负荷度的平均值,并将所述平均值作为所述系统解码负荷度。

    5.如权利要求4所述的方法,其特征在于,当前会话为视频解码时,计算所述每一路会话的解码负荷度,包括:

    获取当前会话的视频刷新率fps、解码时长、解码输出帧数量和视频解码加权值,其中,所述视频解码加权值与视频分辨率和视频编码复杂度成正比;

    根据所述视频刷新率fps、所述解码时长、所述解码输出帧数量和所述视频解码加权值计算出所述当前会话的解码负荷度。

    6.如权利要求4所述的方法,其特征在于,当前会话为音频解码时,计算所述每一路会话的解码负荷度,包括:

    获取当前会话的音频码率、解码时长、音频解码字节数和音频解码加权值;

    根据所述音频码率、所述解码时长、所述音频解码字节数和所述音频解码加权值计算出所述当前会话的解码负荷度,其中,所述音频解码加权值与音频编码复杂度成正比。

    7.如权利要求1所述的方法,其特征在于,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述cpu占用率是否小于cpu可分配阈值;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述cpu占用率小于所述cpu可分配阈值,则增加所述解码并发数。

    8.如权利要求1所述的方法,其特征在于,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述软解码会话数是否大于最小支持会话数;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    9.如权利要求1所述的方法,其特征在于,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述系统解码负荷度是否小于最小解码负荷度,所述会话占用率是否大于最大会话占用阈值,所述内存占用率是否小于内存可分配阈值;

    如果所述系统解码负荷度小于最小解码负荷度,所述会话占用率大于最大会话占用阈值,且所述内存占用率小于所述内存可分配阈值,则增加所述软解会话数。

    10.如权利要求1所述的方法,其特征在于,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述内存占用率是否大于内存上限阈值,所述软解码会话数是否大于最小支持会话数;

    如果所述内存占用率大于内存上限阈值,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    11.如权利要求1所述的方法,其特征在于,通过监控所述系统资源的使用数据,调整所述解码参数,包括:

    判断所述cpu占用率是否大于cpu上限阈值,所述解码并发数是否大于最小支持解码并发数;

    如果所述cpu占用率大于cpu上限阈值,且所述解码并发数大于最小支持解码并发数,则减少所述解码并发数。

    12.一种音视频多路并发解码装置,其特征在于,包括:

    获取模块,用于获取用于解码音视频的解码参数和系统资源的使用数据,其中,所述解码参数包括:解码并发数和软解码会话数,所述系统资源包括如下至少之一:cpu占用率、内存占用率、系统解码负荷度和会话占用率;

    调整模块,用于通过监控所述系统资源的使用数据,调整所述解码参数;

    解码模块,用于基于调整后的解码参数对所述音视频进行解码。

    13.如权利要求12所述的装置,其特征在于,所述获取模块,用于:

    基于每一路会话的解码负荷度计算得到所述系统解码负荷度。

    14.如权利要求12所述的装置,其特征在于,所述获取模块,用于:

    基于当前已缓存数据会话数和所述软解码会话数计算得到所述会话占用率。

    15.如权利要求13所述的装置,其特征在于,所述获取模块,用于:

    计算所述每一路会话的解码负荷度;

    基于所述每一路会话的解码负荷度计算出所有会话的解码负荷度的平均值,并将所述平均值作为所述系统解码负荷度。

    16.如权利要求15所述的装置,其特征在于,所述获取模块,具体用于:

    当前会话为视频解码时,获取当前会话的视频刷新率fps、解码时长、解码输出帧数量和视频解码加权值,其中,所述视频解码加权值与视频分辨率和视频编码复杂度成正比;

    根据所述视频刷新率fps、所述解码时长、所述解码输出帧数量和所述视频解码加权值计算出所述当前会话的解码负荷度。

    17.如权利要求15所述的装置,其特征在于,所述获取模块,具体用于:

    当前会话为音频解码时,获取当前会话的音频码率、解码时长、音频解码字节数和音频解码加权值;

    根据所述音频码率、所述解码时长、所述音频解码字节数和所述音频解码加权值计算出所述当前会话的解码负荷度,其中,所述音频解码加权值与音频编码复杂度成正比。

    18.如权利要求12所述的装置,其特征在于,所述调整模块,用于:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述cpu占用率是否小于cpu可分配阈值;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述cpu占用率小于所述cpu可分配阈值,则增加所述解码并发数。

    19.如权利要求12所述的装置,其特征在于,所述调整模块,用于:

    判断所述系统解码负荷度是否大于最大解码负荷度,所述软解码会话数是否大于最小支持会话数;

    如果所述系统解码负荷度大于所述最大解码负荷度,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    20.如权利要求12所述的装置,其特征在于,所述调整模块,用于:

    判断所述系统解码负荷度是否小于最小解码负荷度,所述会话占用率是否大于最大会话占用阈值,所述内存占用率是否小于内存可分配阈值;

    如果所述系统解码负荷度小于最小解码负荷度,所述会话占用率大于最大会话占用阈值,且所述内存占用率小于所述内存可分配阈值,则增加所述软解会话数。

    21.如权利要求12所述的装置,其特征在于,所述调整模块,用于:

    判断所述内存占用率是否大于内存上限阈值,所述软解码会话数是否大于最小支持会话数;

    如果所述内存占用率大于内存上限阈值,且所述软解码会话数大于最小支持会话数,则减少所述软解会话数。

    22.如权利要求12所述的装置,其特征在于,所述调整模块,用于:

    判断所述cpu占用率是否大于cpu上限阈值,所述解码并发数是否大于最小支持解码并发数;

    如果所述cpu占用率大于cpu上限阈值,且所述解码并发数大于最小支持解码并发数,则减少所述解码并发数。

    23.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-11任一所述的音视频多路并发解码方法。

    24.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-11任一所述的音视频多路并发解码方法。

    技术总结
    本发明公开了一种音视频多路并发解码方法、装置和计算机设备。其中,音视频多路并发解码方法包括:获取用于解码音视频的解码参数和系统资源的使用数据,其中,解码参数包括:解码并发数和软解码会话数,系统资源包括如下至少之一:CPU占用率、内存占用率、系统解码负荷度和会话占用率;通过监控系统资源的使用数据,调整解码参数;基于调整后的解码参数对音视频进行解码。本发明实施例的音视频多路并发解码方法,通过获取用于解码音视频的解码参数和系统资源的使用数据,并通过监控系统资源的使用数据,调整解码参数,以及基于调整后的解码参数对音视频进行解码,在充分利用系统硬件资源,提高解码效率的同时,又保证了系统的运行稳定。

    技术研发人员:徐珠宝;张玉晓
    受保护的技术使用者:曙光信息产业(北京)有限公司
    技术研发日:2019.09.12
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-6330.html

    最新回复(0)