编码控制方法及装置与流程

文档序号:19730849发布日期:2020-01-18 03:56阅读:151来源:国知局
编码控制方法及装置与流程

本发明涉及多媒体技术领域,特别涉及一种编码控制方法及装置。



背景技术:

随着科学技术的发展,多媒体数据传输技术也得到了蓬勃的发展,在传输画面数据的过程中,由于原始画面数据的数据量是非常大的,因此,在将画面数据进行传输之前,往往需要对画面数据进行编码处理,以将画面数据进行压缩,在对画面数据进行编码时,为了满足用户不同的需求,往往需要将画面数据编码成多种帧率。

经本发明人研究发现,现有的视频编码设备中,通常是创建多个线程,每个不同的线程负责处理一路画面的帧率控制及编码,以将画面数据编码成多种帧率的数据,然而,应用多线程编码的方式,往往会出现线程资源受限和多线程资源互斥的情况,使得编码效率低。



技术实现要素:

本发明所要解决的技术问题是提供一种编码控制方法,可以通过设定基础帧率以及帧计数,确定各个时间步长对应的编码帧率,避免出现多线程编码造成的多线程资源互斥的情况,提高了编码的效率。

本发明还提供了一种编码控制装置,用以保证上述方法在实际中的实现及应用。

一种编码控制方法,包括:

接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;

依据已更新的帧率集合中的各个帧率信息确定基础帧率;

依据所述基础帧率更新预先设置的帧计数,并确定所述基础帧率对应的时间步长;

依据所述时间步长重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。

上述的方法,可选的,依据所述更新指令,更新预先建立的帧率集合,包括:

获取所述更新指令中包含的指令信息;

若所述指令信息表征为添加帧率,则将指令信息中包含的帧率信息添加至预先建立的帧率集合;

若所述指令信息表征为删除帧率,则在所述帧率集合中删除与所述指令信息对应的帧率信息。

上述的方法,可选的,所述依据已更新的帧率集合中的各个帧率信息确定基础帧率,包括:

确定各个帧率信息的帧率大小;

基于各个所述帧率信息的帧率大小,确定各个所述帧率信息的最小公倍数;

将所述最小公倍数对应的帧率,确定为各个所述帧率信息的基础帧率。

上述的方法,可选的,所述依据所述基础帧率更新预先设置的帧计数,包括:

获取与所述基础帧率对应的历史基础帧率;

确定所述基础帧率与所述历史基础帧率的比值信息;

依据所述比值信息更新预先设置的帧计数。

上述的方法,可选的,所述依据当前的帧计数和所述基础帧率,在帧率集合中确定当前的帧计数对应的目标帧率信息,包括:

依据当前所述基础帧率和所述帧计数,生成帧率匹配参数;

将所述帧率集合中的各个帧率信息分别与所述帧率匹配参数进行匹配;

若所述帧率集合中存在与所述帧率匹配参数相匹配的帧率信息,则将与所述帧率匹配参数相匹配的帧率信息确定为目标帧率信息。

一种编码控制装置,包括:

接收单元,用于接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;

确定单元,用于依据已更新的帧率集合中的各个帧率信息确定基础帧率;

更新单元,用于依据所述基础帧率更新预先设置的帧计数,并确定所述基础帧率对应的时间步长;

调整单元,用于依据所述时间步长重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。

上述的编码控制装置,可选的,所述接收单元,包括:

获取子单元,用于获取所述更新指令中包含的指令信息;

添加子单元,用于当所述指令信息表征为添加帧率时,将指令信息中包含的帧率信息添加至预先建立的帧率集合;

删除单元,用于当所述指令信息表征为删除帧率时,则在所述帧率集合中删除与所述指令信息对应的帧率信息。

上述的编码控制装置,可选的,确定单元,包括:

第一确定子单元,用于确定各个帧率信息的帧率大小;

第二确定子单元,用于依据各个所述帧率信息的帧率大小,确定各个所述帧率信息的最小公倍数;

第三确定子单元,用于将所述最小公倍数对应的帧率,确定为各个所述帧率信息的基础帧率。

上述的编码控制装置,可选的,所述更新单元,包括:

执行子单元,用于获取与所述基础帧率对应的历史基础帧率;

第四确定子单元,用于确定所述基础帧率与所述历史基础帧率的比值信息;

更新子单元,用于依据所述比值信息更新预先设置的帧计数。

上述的编码控制装置,可选的,所述调整单元,包括:

生成子单元,用于依据当前所述基础帧率以及所述帧计数,生成帧率匹配参数;

匹配子单元,用于将所述帧率集合中的各个帧率信息分别与所述帧率匹配参数进行匹配;

第五确定子单元,用于当所述帧率集合中存在与所述帧率匹配参数相匹配的帧率信息时,将与所述帧率匹配参数相匹配的帧率信息确定为目标帧率信息。

与现有技术相比,本发明包括以下优点:

本发明提供的编码控制方法,包括:接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;依据已更新的帧率集合中的各个帧率信息确定基础帧率;依据所述基础帧率更新预先设置的帧计数,并确定所述基础帧率对应的时间步长;依据所述时间步长重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。应用本发明提供的编码控制方法,可以通过设定基础帧率以及帧计数,确定各个时刻对应的编码帧率,避免出现多线程编码造成的多线程资源互斥的情况,提高了编码的效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种编码控制方法的方法流程图;

图2为本发明提供的一种编码控制方法的又一方法流程图;

图3为本发明提供的一种编码控制方法的又一方法流程图;

图4为本发明提供的一种编码控制方法的又一方法流程图;

图5为本发明提供的一种编码控制方法的一示例图;

图6为本发明提供的一种编码控制装置的结构示意图;

图7为本发明提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本发明实施例提供了一种编码控制方法,该方法可以应用在多种系统平台,其执行主体可以为编码设备的处理器,该编码设备可以为计算机终端或各种移动,所述方法的方法流程图如图1所示,具体包括:

s101:接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合。

本发明实施例提供的方法中,该调用对象对应的设备与该编码设备可以为同一设备或不同设备,该更新指令可以为添加帧率指令或删除帧率指令,该帧率集合中可以包含一种或多种帧率信息。

可选的,该调用对象可以通过调用预先设置的调用接口以发送更新指令。

s102:依据已更新的帧率集合中的各个帧率信息确定基础帧率。

本发明实施例提供的方法中,通过对各个帧率信息进行计算,得到一个表征各个帧率信息共同特征的特征帧率信息,并将该特征帧率信息确定为基础帧率。

s103:依据所述基础帧率更新预先设置的帧计数,并确定所述基础帧率对应的时间步长。

其中,可以通过调用预先设置的步长计算公式,对所述基础帧率进行计算,得到所述基础帧率对应的时间步长。

s104:依据所述时间步长重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。

本发明实施例提供的方法中,该待编码数据可以为视频流数据或图像数据等。

本发明实施例提供的方法中,设置有编码器集合,该编码器集合中存在多种帧率分别对应的编码器。

需要说明的是,目标帧率信息的数量可以为一个或多个。

本发明实施例提供的编码控制方法,包括:接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;依据已更新的帧率集合中的各个帧率信息确定基础帧率;依据所述基础帧率更新预先设置的帧计数,并重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。可以通过设定基础帧率以及帧计数,确定每一时间步长对应的编码帧率,避免出现多线程编码造成的多线程资源互斥的情况,提高了编码的效率。

本发明实施例提供的方法中,基于上述的实施过程,具体的,依据所述更新指令,更新预先建立的帧率集合的过程,如图2所述,包括:

s201:获取所述更新指令中包含的指令信息。

本发明实施例提供的方法中,可以对该更新指令进行解析,以获取该更新指令中包含的指令信息,该指令信息可以包括操作状态以及操作对象,该操作状态可以添加操作或删除操作,该操作对象可以为帧率信息。

s202:若所述指令信息表征为添加帧率信息,则将指令信息中包含的帧率信息添加至预先建立的帧率集合。

本发明实施例提供的方法中,若基于该指令信息中的操作状态,确定该更新指令为添加帧率指令时,获取该指令信息中包含的帧率信息,并将所述帧率信息添加至所述帧率集合。

s203:若所述指令信息表征为删除帧率信息,则在所述帧率集合中删除与所述指令信息对应的帧率信息。

本发明实施例提供的方法中,若基于该指令信息中的操作状态,确定该更新指令为删除帧率指令时,在所述帧率集合中删除该指令信息对应的帧率信息。

本发明实施例提供的方法中,基于上述的实施过程,具体的,所述依据已更新的帧率集合中的各个帧率信息确定基础帧率,如图3所示,包括:

s301:确定各个帧率信息的帧率大小。

本发明实施例提供的方法中,每个帧率信息的大小可以不同,帧率信息可以20fps、30fps和60fps等等。

s302:基于各个所述帧率信息的帧率大小,确定各个所述帧率信息的最小公倍数。

本发明实施例提供的方法中,若确定帧率信息集合中的第一帧率信息为20fps,第二帧率信息为30fps;则第一帧率信息和第二帧率信息对应的最小公倍数为60fps。

s303:将所述最小公倍数对应的帧率,确定为各个所述帧率信息的基础帧率。

本发明实施例提供的方法中,确定最小公倍数后,将该公倍数对应的帧率,确定为各个帧率信息的基础帧率。

本发明实施例提供的方法中,基于上述的实施过程,具体的,依据基础帧率,确定当前的时间步长的一种方式,可以为:调用预先设置的步长计算公式,对所述基础帧率进行计算,得到所述基础帧率对应的时间步长;具体的,所述步长计算公式可以为:

其中,t为时间步长,n为基础帧率。

本发明实施例提供的方法中,实时监测时间信息,每隔一个时间步长,调整所述帧计数一次,使得所述帧计数的增加预设数目的数值;具体的,每一时间步长调整所述帧计数,使所述帧计数的数值加1,该帧计数的初始值可由技术人员自行设定,可选的,帧计数的初始值可以为0。

本发明实施例提供的方法中,基于上述的实施过程,具体的,所述依据所述基础帧率更新预先设置的帧计数,包括:

获取与所述基础帧率对应的历史基础帧率;

确定所述基础帧率与所述历史基础帧率的比值信息;

依据所述比值信息更新预先设置的帧计数。

本发明实施例提供的方法中,该历史基础帧率为接收到更新指令前的基础帧率,依据基础帧率与历史基础帧率的比值信息更新预先设置的帧计数;具体更新过程如下:

其中,n'为历史基础帧率,c'为预先设置的帧计数,c为更新后的帧计数。

本发明实施例提供的方法中,基于上述的实施过程,具体的,所述依据当前的帧计数和所述基础帧率,在帧率集合中确定当前的帧计数对应的目标帧率信息,如图4所示,具体包括:

s401:依据当前所述基础帧率以及所述帧计数,生成帧率匹配参数。

本发明实施例提供的方法中,应用匹配参数生成公式对所述基础帧率以及所述帧计数进行计算,得到帧率匹配参数;具体的,匹配生成参数公式为:

其中,k为帧率匹配参数,m为帧计数,n为基础帧率。

s402:将所述帧率集合中的各个帧率信息分别与所述帧率匹配参数进行匹配。

其中,将所述帧率集合中的各个帧率信息分别与所述帧率匹配参数进行匹配,如图5所示,若任一帧率信息对应的帧率参数与所述帧率匹配参数一致时,则确定该帧率信息与所述帧率匹配参数相匹配;其中,帧率匹配参数可以设置为1/r,r为帧率信息。

s403:若所述帧率集合中存在与所述帧率匹配参数相匹配的帧率信息,则将与所述帧率匹配参数相匹配的帧率信息确定为目标帧率信息。

本发明实施例提供的方法中,将与当前帧率匹配参数相匹配的帧率信息,确定为目标帧率信息,确定该目标帧率信息对应的帧率对象,将该帧率对象反馈至所述调用对象,是所述调用对象依据所述帧率对象,调用与该目标帧率信息对应的编码器,对当前待编码数据进行编码。

需要说明的是,可以按预设的计数周期将已获取的目标帧率信息发送至调用对象。

本发明实施例提供的方法中,所述目标帧率对象是从帧率对象列表中获取的,该帧率对象列表中包含多个帧率对象,所述帧率对象列表中的各个帧率对象与帧率集合中的各个帧率信息一一对应,即,通过该对应关系,可以在帧率对象列表中获取该目标帧率信息对应的帧率对象,该帧率对象为目标帧率对象。

本发明实施例在实际应用过程中,可以向调用对象提供三个数据接口,分别为添加帧率对象接口、删除帧率对象接口和等待帧率对象接口;

其中,当调用对象调用添加帧率对象接口时,向编码设备发送更新指令,以向该编码设备传入一个帧率信息,并获取该帧率信息对应的帧率对象,编码设备可以应用函数addfpsobj(fps)表示添加的帧率信息。

当调用对象调用添加帧率对象接口时,向编码设备发送更新指令,以使该编码设备删除该更新指令对应的帧率对象,该编码设备可以用函数“deletefpsobj(fpsobj)”表示删除帧率信息。

当调用对象调用添加帧率对象接口时,获取编码设备发送的帧率对象列表,帧率对象列表中包含的帧率对象,表示轮到这一帧率对象对应的帧率编码,发送以后用函数“wait()”表示。

需要说明的是,帧率对象可以为帧率对应的id,比如说向编码设备发送“addfpsobj(30fps)”,编码设备将返回“fpsobj1”,即,返回30fps对应的帧率对象;再次向编码设备添加20fps,编码设备将返回“fpsobj2”,即,20fps对应的帧率对象。帧率对象的作用在于删除和等待帧率对象。若需删除30帧率,deletfpsobj(fpsobj1)即可,后续编码设备将不处理该帧率。

当有多个帧率添加到装置时,该装置会对这些帧率求出最小公倍数,使用该最小公倍数作为基础帧率。比如当有一个帧率为30fps,一个帧率为20fps,那么最小公倍数为60fps,即为基础帧率,同时装置拥有一个帧计数,计算单位也为基础帧率。

装置执行wait时,以1000/基础帧率为单位进行等待。到达下一帧的时间时,帧计数+1,同时使用帧基数和基础帧率进行判断,是否属于外部添加的帧率。

判断是否属于外部添加的帧率的方法为:帧计数和基础帧率转换为外部添加帧率后余数是否为0。比如当基础帧率为60,帧计数为1,添加的帧率为30,1/60对1/30来说,余1,当前时刻不属于30fps;其他条件不变,等待1/60秒以后,当帧计数为2时,2/60对1/30来说,余0,当前时刻属于30fps。

当前时间有匹配的帧率时,将该帧率加入对应的帧率对象加入帧率对象列表,返回给外界调用者。具体的,获取上次调用到这次调用的时间间隔;判断时间戳是否超过了以最小公倍数为帧率的一帧的时间间隔,如果超过了,计算超过的帧基数间隔,以更新当前帧计数,时间间隔更新为减去已应用的各个时间步长之后剩余的值,到达下一帧,并在到达下一帧的过程中,检测所有的fps键值对,当前时刻满足某一个帧率时,添加到帧率对象列表,所有键值对检测完毕,返回帧率对象列表给调用者。

上述各个具体的实现方式,及各个实现方式的衍生过程,均在本发明保护范围内。

与图1所述的方法相对应,本发明实施例还提供了一种编码控制装置,用于对图1中方法的具体实现,本发明实施例提供的编码控制装置可以应用计算机终端或各种移动设备中,其结构示意图如图6所示,具体包括:

接收单元501,用于接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;

确定单元502,用于依据已更新的帧率集合中的各个帧率信息确定基础帧率;

更新单元503,用于依据所述基础帧率更新预先设置的帧计数,并确定所述基础帧率对应的时间步长;

调整单元504,用于依据所述时间步长重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。

本发明实施例提供的编码控制装置,接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;依据已更新的帧率集合中的各个帧率信息确定基础帧率;依据所述基础帧率重复调整预先设置的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。可以通过设定基础帧率以及帧计数,确定每一时间步长对应的编码帧率,避免出现多线程编码造成的多线程资源互斥的情况,提高了编码的效率。

本发明实施例提供的装置中,基于上述的方案,可选的,所述接收单元501,包括:

获取子单元,用于获取所述更新指令中包含的指令信息;

添加子单元,用于当所述指令信息表征为添加帧率时,将指令信息中包含的帧率信息添加至预先建立的帧率集合;

删除单元,用于当所述指令信息表征为删除帧率时,则在所述帧率集合中删除与所述指令信息对应的帧率信息。

本发明实施例提供的装置中,基于上述的方案,可选的,确定单元502,包括:

第一确定子单元,用于确定各个帧率信息的帧率大小;

第二确定子单元,用于依据各个所述帧率信息的帧率大小,确定各个所述帧率信息的最小公倍数;

第三确定子单元,用于将所述最小公倍数对应的帧率,确定为各个所述帧率信息的基础帧率。

本发明实施例提供的装置中,基于上述的方案,可选的,所述更新单元503,包括:

执行子单元,用于获取与所述基础帧率对应的历史基础帧率;

第四确定子单元,用于确定所述基础帧率与所述历史基础帧率的比值信息;

更新子单元,用于依据所述比值信息更新预先设置的帧计数。

本发明实施例提供的装置中,基于上述的方案,可选的,所述调整单元504,包括:

生成子单元,用于依据当前所述基础帧率以及所述帧计数,生成帧率匹配参数;

匹配子单元,用于将所述帧率集合中的各个帧率信息分别与所述帧率匹配参数进行匹配;

第五确定子单元,用于当所述帧率集合中存在与所述帧率匹配参数相匹配的帧率信息时,将与所述帧率匹配参数相匹配的帧率信息确定为目标帧率信息。

本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述编码控制方法。

本发明实施例还提供了一种电子设备,其结构示意图如图7所示,具体包括存储器601,以及一个或者一个以上的指令602,其中一个或者一个以上指令602存储于存储器601中,且经配置以由一个或者一个以上处理器603执行所述一个或者一个以上指令602进行以下操作:

接收到调用对象发送的更新指令时,依据所述更新指令,更新预先建立的帧率集合;

依据已更新的帧率集合中的各个帧率信息确定基础帧率;

依据所述基础帧率更新预先设置的帧计数,并确定所述基础帧率对应的时间步长;

依据所述时间步长重复调整已更新的帧计数,直至接收到新的更新指令;其中,在每次调整所述帧计数时,依据当前调整得到的帧计数和所述基础帧率,在所述帧率集合中确定当前的帧计数对应的目标帧率信息;将所述目标帧率信息发送至所述调用对象,使所述调用对象调用与所述目标帧率信息对应的编码器对当前待编码数据进行编码。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上对本发明所提供的一种编码控制方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1