掌桥专利:专业的专利平台
掌桥专利
首页

帧率控制方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:58:53


帧率控制方法、装置、电子设备及存储介质

技术领域

本公开实施例涉及数据处理技术领域,具体涉及一种帧率控制方法、装置、电子设备及存储介质。

背景技术

在音视频传输领域中,为了提升数据帧的传输效率,避免因网络拥塞而导致音视频传输卡顿等问题,需要针对数据帧的传输帧率进行控制。在相关技术中,可以通过以下方式控制数据帧的传输帧率:在传输之前,预先获取接收端的性能指标,并根据接收端的性能指标配置固定的传输帧率,以使数据帧按照固定的传输帧率进行传输。其中,接收端的性能指标用于表征接收端的硬件配置情况,如内存大小、CPU数据等。

但是,发明人在实现本发明的过程中发现,上述方式至少存在以下缺陷:由于音视频数据的传输帧率是固定的,而网络状态则可能是动态变化的,因此,固定的传输帧率无法适配动态变化的网络状态。

发明内容

鉴于上述问题,提出了本公开以便提供一种克服上述问题或者至少部分地解决上述问题的一种帧率控制方法、装置、电子设备及存储介质。

根据本公开实施例的一个方面,提供了一种帧率控制方法,包括:

在根据当前发送帧率向数据接收端传输数据帧的过程中,接收所述数据接收端发送的动态反馈消息;

获取所述动态反馈消息中包含的第一类能力指标以及第二类能力指标;其中,所述第一类能力指标用于表征数据接收端的设备处理能力,所述第二类能力指标用于表征数据接收端的帧处理能力;

计算与所述第一类能力指标相对应的第一调整帧率,以及与所述第二类能力指标相对应的第二调整帧率,根据所述第一调整帧率与所述第二调整帧率之间的比较结果确定目标帧率;

将所述当前发送帧率调整为所述目标帧率,以使后续的数据帧按照所述目标帧率进行传输。

在一种可选的实现方式中,所述第一类能力指标包括:处理器消耗指标;则所述第一调整帧率具体包括:对应于所述处理器消耗指标的第一处理器调整帧率;

所述计算与所述第一类能力指标相对应的第一调整帧率具体包括:

在确定所述处理器消耗指标的指标值超过预设处理器阈值的情况下,获取与所述预设处理器阈值相对应的阈值调整比例,根据所述阈值调整比例对所述当前发送帧率进行调整,得到所述第一处理器调整帧率;

其中,所述处理器消耗指标包括:CPU消耗指标、和/或GPU消耗指标。

在一种可选的实现方式中,所述第一类能力指标包括:屏幕刷新率指标;其中,所述屏幕刷新率指标用于表征接收端屏幕的实际刷新率;所述第一调整帧率具体包括:对应于所述屏幕刷新率指标的第一刷新率调整帧率;

所述计算与所述第一类能力指标相对应的第一调整帧率具体包括:

在确定所述当前发送帧率大于所述屏幕刷新率指标的指标值的情况下,对所述当前发送帧率进行调整,得到所述第一刷新率调整帧率;其中,所述第一刷新率调整帧率不大于所述屏幕刷新率指标的指标值。

在一种可选的实现方式中,所述第二类能力指标包括:帧处理队列缓存指标以及帧处理时长指标;

则所述与所述第二类能力指标相对应的第二调整帧率通过以下方式得到:

在确定所述帧处理队列缓存指标的指标值超过预设队列阈值的情况下,根据所述帧处理时长指标计算所述第二调整帧率。

在一种可选的实现方式中,所述根据所述帧处理时长指标计算所述第二调整帧率具体包括:

计算与所述帧处理时长指标相对应的最大处理帧率,在所述当前发送帧率大于所述最大处理帧率的情况下,根据所述最大处理帧率确定所述第二调整帧率。

在一种可选的实现方式中,所述帧处理队列缓存指标包括以下中的至少一个:待解码队列缓存指标、以及待渲染队列缓存指标;所述帧处理时长指标包括以下中的至少一个:帧解码时长指标、帧渲染时长指标;

则所述第二调整帧率包括以下中的至少一个:

在确定所述待解码队列缓存指标的指标值超过预设解码队列阈值的情况下,根据与所述帧解码时长指标相对应的最大解码帧率得到的第二解码调整帧率;

在确定所述待渲染队列缓存指标的指标值超过预设渲染队列阈值的情况下,根据与所述帧渲染时长指标相对应的最大渲染帧率得到的第二渲染调整帧率。

在一种可选的实现方式中,所述根据所述第一调整帧率与所述第二调整帧率之间的比较结果确定目标帧率具体包括:

获取所述第一调整帧率以及所述第二调整帧率中的最小值,将所述最小值确定为所述目标帧率。

在一种可选的实现方式中,所述动态反馈消息由所述数据接收端每隔预设时间周期发送一次,所述数据帧包括:云游戏应用中的视频帧;并且,所述数据发送端为云游戏应用中的云服务器,所述数据接收端为云游戏应用中的客户端。

根据本公开实施例的又一个方面,提供了一种帧率控制方法,适用于数据接收端,所述方法包括:

在接收数据发送端根据当前发送帧率传输的数据帧的过程中,根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息;其中,所述第一类能力指标用于表征所述数据接收端的设备处理能力,所述第二类能力指标用于表征所述数据接收端的帧处理能力;

将所述动态反馈消息发送至数据发送端,以供所述数据发送端根据与所述第一类能力指标相对应的第一调整帧率以及与所述第二类能力指标相对应的第二调整帧率确定目标帧率,并根据所述目标帧率调整所述当前发送帧率。

在一种可选的实现方式中,所述根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息具体包括:

每当预设时间周期到达时,获取与本次时间周期相对应的第一类能力指标以及第二类能力指标,生成与本次时间周期相对应的动态反馈消息。

根据本公开实施例的又一个方面,提供了一种帧率控制方法,所述方法包括:

数据接收端在接收数据发送端根据当前发送帧率传输的数据帧的过程中,根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息,将所述动态反馈消息发送至数据发送端;其中,所述第一类能力指标用于表征所述数据接收端的设备处理能力,所述第二类能力指标用于表征所述数据接收端的帧处理能力;

数据发送端接收并获取所述数据接收端发送的动态反馈消息中包含的第一类能力指标以及第二类能力指标;计算与所述第一类能力指标相对应的第一调整帧率,以及与所述第二类能力指标相对应的第二调整帧率,根据所述第一调整帧率与所述第二调整帧率之间的比较结果确定目标帧率;将所述当前发送帧率调整为所述目标帧率,以使后续的数据帧按照所述目标帧率进行传输。

根据本公开实施例的又一个方面,提供了一种帧率控制装置,适用于数据发送端,所述装置包括:

接收模块,适于在根据当前发送帧率向数据接收端传输数据帧的过程中,接收所述数据接收端发送的动态反馈消息;

获取模块,适于获取所述动态反馈消息中包含的第一类能力指标以及第二类能力指标;其中,所述第一类能力指标用于表征数据接收端的设备处理能力,所述第二类能力指标用于表征数据接收端的帧处理能力;

计算模块,适于计算与所述第一类能力指标相对应的第一调整帧率,以及与所述第二类能力指标相对应的第二调整帧率,根据所述第一调整帧率与所述第二调整帧率之间的比较结果确定目标帧率;

调整模块,适于将所述当前发送帧率调整为所述目标帧率,以使后续的数据帧按照所述目标帧率进行传输。

根据本公开实施例的又一个方面,提供了一种帧率控制装置,适用于数据接收端,所述装置包括:

生成模块,适于在接收数据发送端根据当前发送帧率传输的数据帧的过程中,根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息;其中,所述第一类能力指标用于表征所述数据接收端的设备处理能力,所述第二类能力指标用于表征所述数据接收端的帧处理能力;

发送模块,适于将所述动态反馈消息发送至数据发送端,以供所述数据发送端根据与所述第一类能力指标相对应的第一调整帧率以及与所述第二类能力指标相对应的第二调整帧率确定目标帧率,并根据所述目标帧率调整所述当前发送帧率。

根据本公开实施例的又一个方面,提供了一种帧率控制系统,所述系统包括:数据发送端以及数据接收端。

依据本公开的再一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上述的帧率控制方法。

依据本公开的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述的帧率控制方法。

在本公开的实施例中,在根据当前发送帧率向数据接收端传输数据帧的过程中,接收数据接收端发送的动态反馈消息,根据动态反馈消息中包含的第一类能力指标以及第二类能力指标计算第一调整帧率以及第二调整帧率,以便根据第一调整帧率与第二调整帧率之间的比较结果确定目标帧率,进而将当前发送帧率调整为目标帧率。由此可见,在该方式中,能够在数据帧的传输过程中动态获取数据接收端的第一类能力指标以及第二类能力指标,并动态计算与第一类能力指标相对应的第一调整帧率以及与第二类能力指标相对应的第二调整帧率,从而实现帧率的动态调整。一方面,与固定帧率的方式相比,本公开能够动态调整帧率,从而能够动态适配网络状态;另一方面,本公开借助两类能力指标计算两种调整帧率,并根据两种帧率的比较结果确定最终的目标帧率,由此能够准确评估网络状态的变化情况,从而提升帧率调整的准确性。

上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本公开一个实施例提供的一种帧率控制方法的流程图;

图2示出了本公开又一个实施例提供的一种帧率控制方法的流程图;

图3示出了一个具体示例中的帧率控制方法的流程示意图;

图4示出了本公开又一实施例提供的一种帧率控制装置的示意图;

图5示出了本公开又一实施例提供的一种帧率控制装置的示意图;

图6示出了本公开又一实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了本公开一个实施例提供的一种帧率控制方法的流程图。如图1所示,该方法适用于数据发送端,具体包括:

步骤S110:在根据当前发送帧率向数据接收端传输数据帧的过程中,接收数据接收端发送的动态反馈消息。

其中,动态反馈消息可以由数据接收端周期性发送。在一种可选的实现方式中,数据接收端在接收数据帧的过程中,每隔预设时长发送一次动态反馈消息,例如,每隔1秒发送一次动态反馈消息。在又一种可选的实现方式中,数据接收端在接收数据帧的过程中,每隔预设帧数发送一次动态反馈消息,例如,每接收到预设数量个数据帧之后则发送一次动态反馈消息,预设数量可以为3或5等各种数值。

相应的,在数据帧传输的起始阶段,当前发送帧率可以是固定设置的初始帧率,例如,初始帧率可以根据数据接收端的硬件配置情况进行设置。在数据帧传输的中间过程中,当前发送帧率可以为根据上一周期的动态反馈消息确定的目标帧率。

步骤S120:获取动态反馈消息中包含的第一类能力指标以及第二类能力指标;其中,第一类能力指标用于表征数据接收端的设备处理能力,第二类能力指标用于表征数据接收端的帧处理能力。

其中,第一类能力指标以及第二类能力指标的具体数值随网络状态的变化、设备资源的消耗等因素而动态改变,因此,动态反馈消息中包含的第一类能力指标以及第二类能力指标的具体数值由数据接收端动态确定。相应的,数据发送端根据动态反馈消息中包含的第一类能力指标以及第二类能力指标动态确定数据接收端的当前处理能力。

其中,第一类能力指标用于表征数据接收端的设备处理能力,因此,第一类能力指标是与数据接收端的当前设备性能相关联的指标,例如,第一类能力指标包括:处理器消耗指标(如CPU消耗指标、和/或GPU消耗指标等)、屏幕刷新率指标、内存剩余空间指标等。总之,凡是与设备性能相关的指标均可作为第一类能力指标,本公开不限定第一类能力指标的具体内涵。

第二类能力指标用于表征数据接收端的帧处理能力,因此,第二类能力指标是与数据接收端的帧处理情况相关联的指标,例如,第二类能力指标包括:帧处理队列缓存指标以及帧处理时长指标等。总之,凡是与帧处理相关的指标均可作为第二类能力指标,本公开不限定第二类能力指标的具体内涵。

步骤S130:计算与第一类能力指标相对应的第一调整帧率,以及与第二类能力指标相对应的第二调整帧率,根据第一调整帧率与第二调整帧率之间的比较结果确定目标帧率。

其中,第一调整帧率是根据第一类能力指标确定的调整帧率,例如,在第一类能力指标为处理器消耗指标的情况下,若处理器消耗过多,则需要将第一调整帧率的数值调小,以降低处理器的处理负担。由此可见,第一调整帧率的具体数值根据第一类能力指标计算得到。

同理,第二调整帧率是根据第二类能力指标确定的调整帧率,例如,在第二类能力指标为帧处理队列缓存指标的情况下,若帧处理队列中的缓存堆积过多,则需要将第二调整帧率的数值调小,以降低帧处理队列的缓存负担。由此可见,第二调整帧率的具体数值根据第二类能力指标计算得到。

本公开不限定第一调整帧率以及第二调整帧率的具体计算方式,只要能够使调整后的帧率与设备处理能力匹配即可。相应的,将第一调整帧率与第二调整帧率进行比较,并根据二者之间的比较结果确定目标帧率。其中,目标帧率可通过多种方式确定:例如,在一种可选的实现方式中,将第一调整帧率与第二调整帧率中的最小值确定为目标帧率;又如,在又一种可选的实现方式中,将第一调整帧率与第二调整帧率的平均值确定为目标帧率,本公开不限定目标帧率的具体确定方式。

步骤S140:将当前发送帧率调整为目标帧率,以使后续的数据帧按照目标帧率进行传输。

在将当前发送帧率调整为目标帧率之后,后续的各个数据帧将按照目标帧率进行传输。其中,在后续数据帧的传输过程中,将目标帧率作为新的当前发送帧率,并重复执行上述过程,以实现帧率的持续动态调整。

由此可见,在该方式中,能够在数据帧的传输过程中动态获取数据接收端的第一类能力指标以及第二类能力指标,并动态计算与第一类能力指标相对应的第一调整帧率以及与第二类能力指标相对应的第二调整帧率,从而实现帧率的动态调整。一方面,与固定帧率的方式相比,本公开能够动态调整帧率,从而能够动态适配网络状态;另一方面,本公开借助两类能力指标计算两种调整帧率,并根据两种帧率的比较结果确定最终的目标帧率,由此能够准确评估网络状态的变化情况,从而提升帧率调整的准确性。

本领域技术人员还可以对上述实施例进行各种改动和变形:

在一种可选的实现方式中,考虑到处理器的处理能力关系到数据帧能否及时处理,因此,可以根据数据接收端的处理器的当前消耗情况确定第一类能力指标,并计算第一调整帧率。第一类能力指标包括:用于表征处理器的消耗情况的处理器消耗指标;第一调整帧率具体包括:对应于处理器消耗指标的第一处理器调整帧率。相应的,计算与第一类能力指标相对应的第一调整帧率具体包括:在确定处理器消耗指标的指标值超过预设处理器阈值的情况下,获取与预设处理器阈值相对应的阈值调整比例,根据阈值调整比例对当前发送帧率进行调整,得到第一处理器调整帧率。预设处理器阈值可以灵活设定,既可以是处理器消耗数值阈值,也可以是处理器消耗比例阈值。与预设处理器阈值相对应的阈值调整比例可以通过百分比形式表示,用于表征帧率降低的比例。另外,还可以设置多个处理器阈值,且每个处理器阈值对应于不同的阈值调整比例,以便在处理器消耗越多的情况下使帧率降低幅度越大。其中,处理器消耗指标包括:CPU消耗指标、和/或GPU消耗指标。

在一种可选的实现方式中,考虑到数据帧的显示情况受到屏幕刷新率的制约,因此,为了确保数据帧的渲染帧率与屏幕刷新率一致,需要动态根据屏幕刷新率指标调整帧率。相应的,第一类能力指标包括:屏幕刷新率指标;其中,屏幕刷新率指标用于表征接收端屏幕的实际刷新率,该实际刷新率是接收端当前实际使用的刷新率,与接收端所支持的最大刷新率的概念不同。第一调整帧率具体包括:对应于屏幕刷新率指标的第一刷新率调整帧率。与第一类能力指标相对应的第一调整帧率通过以下方式计算:在确定当前发送帧率大于屏幕刷新率指标的指标值的情况下,对当前发送帧率进行调整,得到第一刷新率调整帧率;其中,第一刷新率调整帧率不大于屏幕刷新率指标的指标值。例如,可以使第一刷新率调整帧率等于屏幕刷新率指标的指标值,原因在于:在帧率大于屏幕刷新率的情况下,受到屏幕刷新率的限制,多余的帧数将无法进行显示,从而造成了性能的浪费。为此,通过动态获取接收端的屏幕刷新率,能够避免因帧率超出刷新率所导致的资源浪费问题。

在又一种可选的实现方式中,第二类能力指标包括:帧处理队列缓存指标和/或帧处理时长指标。其中,上述两种类型的第二类能力指标既可以单独使用,也可以结合使用。在二者结合使用的情况下,可以在帧处理队列缓存指标的指标值超过预设队列阈值且帧处理时长指标也超过预设时长的情况下进行调整。或者,为了减少帧率调整的频次,避免因频繁调整帧率而导致的计算量较大、资源耗费较高的问题,在一种可选的实现方式中,将帧处理队列缓存指标的指标值是否超过预设队列阈值作为主要的帧率调整触发条件,相应的,与第二类能力指标相对应的第二调整帧率通过以下方式得到:在确定帧处理队列缓存指标的指标值超过预设队列阈值的情况下,根据帧处理时长指标计算第二调整帧率。具体实施时,先判断帧处理队列缓存指标的指标值是否超过预设队列阈值,若否,则无需计算第二调整帧率;若是,则根据帧处理时长指标计算第二调整帧率。由此可见,将帧处理队列缓存指标的指标值是否超过预设队列阈值作为帧率调整的触发条件,能够减少帧率调整频次。之所以设置上述触发条件,是因为:通常情况下,若缓存未出现堆积,则说明目前的帧处理能力正常,无需调整;只有在出现了缓存堆积这一现象的情况下,才说明目前的帧处理能力异常,需要调整。

在又一种可选的实现方式中,在根据帧处理时长指标计算第二调整帧率时,通过以下方式实现:计算与帧处理时长指标相对应的最大处理帧率,在当前发送帧率大于最大处理帧率的情况下,根据最大处理帧率确定第二调整帧率。其中,帧处理时长指标用于表征每个数据帧的处理时长,最大处理帧率用于表征在单位时间内最多能够处理的数据帧的数量。由此可见,通过单位时间的时间长度除以每个数据帧的处理时长,即可得到最大处理帧率。相应的,若当前发送帧率大于最大处理帧率,则说明目前接收端的帧处理能力不足,需要降低发送帧率,例如,可以将第二调整帧率确定为最大处理帧率。通过上述方式,能够根据帧处理时长准确计算单位时间内可处理的数据帧数量,从而确保调整后的第二调整帧率与当前的帧处理能力匹配。

在又一种可选的实现方式中,帧处理队列缓存指标包括以下中的至少一个:待解码队列缓存指标、以及待渲染队列缓存指标。其中,待解码队列缓存指标用于表征待解码队列中的缓存堆积数量,待解码队列用于存储等待解码的数据帧;待渲染队列缓存指标用于表征待渲染队列中的缓存堆积数量,待渲染队列用于存储解码之后等待渲染的数据帧。相应的,帧处理时长指标包括以下中的至少一个:帧解码时长指标、帧渲染时长指标。并且,第二调整帧率包括以下中的至少一个:在确定待解码队列缓存指标的指标值超过预设解码队列阈值的情况下,根据与帧解码时长指标相对应的最大解码帧率得到的第二解码调整帧率;在确定待渲染队列缓存指标的指标值超过预设渲染队列阈值的情况下,根据与帧渲染时长指标相对应的最大渲染帧率得到的第二渲染调整帧率。其中,预设解码队列阈值以及预设渲染队列阈值均为上文提到的预设队列阈值的一种具体实现形式。由此可见,第二调整帧率既可以为根据帧解码时长得到的第二解码调整帧率,也可以为根据帧渲染时长得到的第二渲染调整帧率。

由此可见,帧处理时长可以通过解码、渲染等不同处理环节的耗时进行表征。在一种优选的实现方式中,同时采用解码时长和渲染时长计算第二解码调整帧率以及第二渲染调整帧率,并根据二者中的最小值进行帧率调整。其中,由于解码环节和渲染环节与数据帧的显示速率密切相关,因此,借助解码时长和渲染时长共同计算得到的帧率数值更加准确。

在又一种可选的实现方式中,在根据第一调整帧率与第二调整帧率之间的比较结果确定目标帧率时,获取第一调整帧率以及第二调整帧率中的最小值,将最小值确定为目标帧率。另外,第一调整帧率以及第二调整帧率分别包括至少两种数值的情况下,可以将多个帧率中的最小值确定为目标帧率。

在又一种可选的实现方式中,动态反馈消息由数据接收端每隔预设时间周期发送一次。其中,预设时间周期可根据实际应用场景灵活设定,例如,在实时性要求较高的场景中,可以将预设时间周期设置得较短,以便及时调整帧率。

另外,数据帧包括:云游戏应用中的视频帧。相应的,数据发送端可以为云游戏应用中的云服务器,数据接收端可以为云游戏应用中的客户端。在云游戏应用的场景中,对于视频帧的传输速度要求较高,一旦视频帧的传输出现卡顿,将导致游戏场景不连贯,从而影响游戏的正常运行,因此,在云游戏应用中,更需要通过动态调整的方式及时调整帧率。

图2示出了本公开又一个实施例提供的一种帧率控制方法的流程图。如图2所示,该方法适用于数据接收端,具体包括:

步骤S210:在接收数据发送端根据当前发送帧率传输的数据帧的过程中,根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息;其中,第一类能力指标用于表征数据接收端的设备处理能力,第二类能力指标用于表征数据接收端的帧处理能力。

在一种可选的实现方式中,每当预设时间周期到达时,获取与本次时间周期相对应的第一类能力指标以及第二类能力指标,生成与本次时间周期相对应的动态反馈消息。由此可见,动态反馈消息是周期性发送的,且每次发送的动态反馈消息中包含的指标数值是根据实时获取的接收端的当前处理情况动态确定的。

步骤S220:将动态反馈消息发送至数据发送端,以供数据发送端根据与第一类能力指标相对应的第一调整帧率以及与第二类能力指标相对应的第二调整帧率确定目标帧率,并根据目标帧率调整当前发送帧率。

另外,本申请又一实施例还提供了一种帧率控制方法,该方法包括以下步骤:

步骤一、数据接收端在接收数据发送端根据当前发送帧率传输的数据帧的过程中,根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息,将动态反馈消息发送至数据发送端;其中,第一类能力指标用于表征数据接收端的设备处理能力,第二类能力指标用于表征数据接收端的帧处理能力。

步骤二、数据发送端接收并获取数据接收端发送的动态反馈消息中包含的第一类能力指标以及第二类能力指标;计算与第一类能力指标相对应的第一调整帧率,以及与第二类能力指标相对应的第二调整帧率,根据第一调整帧率与第二调整帧率之间的比较结果确定目标帧率;将当前发送帧率调整为目标帧率,以使后续的数据帧按照目标帧率进行传输。

为了便于理解,下面以一个具体示例为例,详细介绍上述实施例的具体实现细节:

在云游戏、远程桌面等高帧率、高分辨率的实时视频业务中,通常使用1080P及以上的分辨率、60fps及以上的帧率。然而,由于客户端的设备种类各异,部分设备由于配置较低等原因,可能无法支撑如此高分辨率和帧率的视频。例如,一部分设备受到硬件性能的制约,在接收、解码或播放等至少一个环节可能无法支撑如此高的分辨率及帧率;另一部分设备由于中途出现了其他程序的干扰,或者,由于运行时间过长而导致设备过热降频等原因,导致在部分时段内无法支撑如此高的分辨率及帧率。如果不对这些设备的传输情况进行优化,可能会导致数据帧越堆越多,从而出现时延累计过大、性能消耗严重、卡顿明显等一系列问题。

在相关技术中,通常根据客户端设备的CPU、GPU等硬件的配置信息,静态判定客户端的视频处理能力,从而针对中低端配置的客户端设备适配不同的码流和帧率,从而改善用户体验。但是,静态判定的方式无法改善在中途出现的客户端性能不足的问题。

为了解决上述问题,本示例能够根据客户端设备的各项处理指标,持续动态判定客户端的视频处理能力,从而进行动态适配调整,以改进客户端的传输体验。

在本示例中,数据发送端可以发送与多个数据帧相对应的多个传输数据包;其中,每个数据帧对应于多个传输数据包。相应的,数据接收端可以获取接收到的每个传输数据包中包含的帧标识以及时间标识,并将接收到的每个传输数据包缓存至组帧缓存队列;可选的,还可以根据接收到的传输数据包中的次序编号确定发生丢包的数据包的标识,将丢包数据包标识缓存至丢包缓存队列。总之,本示例不限定数据帧的具体数量以及缓存方式。

图3示出了该示例中的帧率控制方法的流程示意图,如图3所示,该方法包括以下步骤:

步骤S301:在接收数据发送端根据当前发送帧率传输的数据帧的过程中,数据接收端根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息。

其中,该步骤由数据接收端实现,具体可由数据接收端周期性获取对应于当前时刻的第一类能力指标以及第二类能力指标,从而生成对应于当前时刻的动态反馈消息。

步骤S302:数据发送端接收数据接收端发送的动态反馈消息。

步骤S303:数据发送端获取动态反馈消息中包含的第一类能力指标以及第二类能力指标;第一类能力指标包括:处理器消耗指标以及屏幕刷新率指标;第二类能力指标包括:帧处理队列缓存指标以及帧处理时长指标。

步骤S304:计算与第一类能力指标中的处理器消耗指标相对应的第一处理器调整帧率。

其中,在确定处理器消耗指标的指标值超过预设处理器阈值的情况下,获取与预设处理器阈值相对应的阈值调整比例,根据阈值调整比例对当前发送帧率进行调整,得到第一处理器调整帧率。其中,阈值调整比例可以设置为0.5、0.6或0.8等不同的数值。例如,若CPU或GPU的消耗量超过第一处理器阈值(比如95%),则需要降低当前发送帧率cur_fps,比如可以将cur_fps*0.5设置为第一处理器调整帧率fps1;若CPU或GPU的消耗量超过第二处理器阈值(比如85%),则需要降低当前发送帧率cur_fps,比如可以将cur_fps*0.6设置为第一处理器调整帧率fps1;若CPU或GPU的消耗量超过第三处理器阈值(比如75%),则需要降低当前发送帧率cur_fps,比如可以将cur_fps*0.8设置为第一处理器调整帧率fps1。由此可见,CPU或GPU的消耗量越大,则帧率降低幅度越大。

步骤S305:计算与第一类能力指标中的屏幕刷新率指标相对应的第一刷新率调整帧率。

其中,在当前发送帧率cur_fps超过客户端的设备屏幕刷新帧率screen_refresh_fps的情况下,多出的数据帧将无法在屏幕中显示,因而造成了发送数据帧的浪费,因此,可以将第一刷新率调整帧率fps2设置为设备屏幕刷新帧率screen_refresh_fps。

步骤S306:计算与第二类能力指标中的帧解码时长指标相对应的第二解码调整帧率。

数据发送端先根据待解码队列缓存指标判断待解码队列中的缓存数量是否超过预设解码队列阈值,若是,则说明缓存堆积较严重。因此,在待解码队列中的缓存数量超过预设解码队列阈值的情况下,根据帧解码时长指标计算对应的最大解码帧率。例如,帧解码时长可以为每帧解码耗时(decode_ms,可以以毫秒为单位),相应的,1000/decode_ms表示客户端每秒能够解码的帧数,因此,1000/decode_ms即为每帧的最大解码帧率。若当前发送帧率超过1000/decode_ms,则说明客户端的解码处理能力不足,导致发送的部分数据帧无法及时解码,因此,需要降低发送帧率,可以将第二解码调整帧率fps3设置为1000/decode_ms。

步骤S307:计算与第二类能力指标中的帧渲染时长指标相对应的第二渲染调整帧率。

数据发送端先根据待渲染队列缓存指标判断待渲染队列中的缓存数量是否超过预设渲染队列阈值,若是,则说明缓存堆积较严重。因此,在待渲染队列中的缓存数量超过预设渲染队列阈值的情况下,根据帧渲染时长指标计算对应的最大渲染帧率。例如,帧渲染时长可以为每帧渲染耗时(render_ms,可以以毫秒为单位),相应的,1000/render_ms表示客户端每秒能够渲染的帧数,因此,1000/render_ms即为每帧的最大渲染帧率。若当前发送帧率超过1000/render_ms,则说明客户端的渲染处理能力不足,导致发送的部分数据帧无法及时渲染,因此,需要降低发送帧率,可以将第二渲染调整帧率fps4设置为1000/render_ms。

步骤S308:获取第一处理器调整帧率、第一刷新率调整帧率、第二解码调整帧率以及第二渲染调整帧率中的最小值,根据最小值设置目标帧率,并将当前发送帧率调整为目标帧率。

具体的,获取fps1、fps2、fps3、fps4中的最小值,将最小值确定为目标帧率。

综上可知,该示例能够动态检测数据接收端在哪些方面的性能存在不足,从而准确确定接收端当前实际能够处理的帧数,进而调整每秒发送的视频帧数。该方式能够针对配置较低的低端设备的性能进行优化,从而提升低端客户端的接收质量。

在该示例中,接收端先通过定期的汇报,将接收端的动态能力和拥堵程度发送给发送端,从而使发送端可以动态的发现接收端的问题并进行改进,从而避免了卡顿明显和时延堆积的问题。其中,接收端需要定期上报以下数据:CPU使用率、GPU使用率、屏幕刷新帧率、解码一帧的耗时、渲染一帧的耗时、待解码的帧数、待渲染的帧数,以便发送端根据多种维度的数据分别计算客户端能处理的最大帧率,进而选择各个维度的最大帧率中的最小值作为目标帧率。由于综合了多种维度的数据进行计算,因此计算结果更加准确。

在本示例中,接收端持续定期(每帧或者每秒)将CPU消耗、GPU消耗、屏幕刷新率、解码耗时、渲染耗时、等待解码帧数、等待渲染帧数等数据内容发送给发送端,使发送端获知接收端的动态能力和拥堵程度。相应的,发送端在CPU消耗或GPU消耗过高时,将当前发送帧率的预设比例(如80%)设置为fps1;并根据动态屏幕刷新率确定fps2;通过解码耗时(比如92最高分位线)和等待解码帧数确定fps3;通过渲染耗时(92最高分位线)和等待渲染帧数确定fps4,从而将fps1、fps2、fps3、fps4中的最小值作为目标帧率。其中,解码耗时即为上文提到的帧解码时长,渲染耗时即为上文提到的帧渲染时长,具体数值可根据当前时间周期内的多个数据帧的平均处理时长,或者,与92最高分位线相对应的处理时长确定,本示例对具体实现细节不做限定。

图4示出了本公开又一实施例提供的一种帧率控制装置的示意图,该帧率控制装置适用于数据发送端,该装置具体包括:

接收模块41,适于在根据当前发送帧率向数据接收端传输数据帧的过程中,接收所述数据接收端发送的动态反馈消息;

获取模块42,适于获取所述动态反馈消息中包含的第一类能力指标以及第二类能力指标;其中,所述第一类能力指标用于表征数据接收端的设备处理能力,所述第二类能力指标用于表征数据接收端的帧处理能力;

计算模块43,适于计算与所述第一类能力指标相对应的第一调整帧率,以及与所述第二类能力指标相对应的第二调整帧率,根据所述第一调整帧率与所述第二调整帧率之间的比较结果确定目标帧率;

调整模块44,适于将所述当前发送帧率调整为所述目标帧率,以使后续的数据帧按照所述目标帧率进行传输。

其中,所述第一类能力指标包括:处理器消耗指标;则所述第一调整帧率具体包括:对应于所述处理器消耗指标的第一处理器调整帧率;

所述计算与所述第一类能力指标相对应的第一调整帧率具体包括:

在确定所述处理器消耗指标的指标值超过预设处理器阈值的情况下,获取与所述预设处理器阈值相对应的阈值调整比例,根据所述阈值调整比例对所述当前发送帧率进行调整,得到所述第一处理器调整帧率;

其中,所述处理器消耗指标包括:CPU消耗指标、和/或GPU消耗指标。

在一种可选的实现方式中,所述第一类能力指标包括:屏幕刷新率指标;其中,所述屏幕刷新率指标用于表征接收端屏幕的实际刷新率;所述第一调整帧率具体包括:对应于所述屏幕刷新率指标的第一刷新率调整帧率;

所述计算与所述第一类能力指标相对应的第一调整帧率具体包括:

在确定所述当前发送帧率大于所述屏幕刷新率指标的指标值的情况下,对所述当前发送帧率进行调整,得到所述第一刷新率调整帧率;其中,所述第一刷新率调整帧率不大于所述屏幕刷新率指标的指标值。

在一种可选的实现方式中,所述第二类能力指标包括:帧处理队列缓存指标以及帧处理时长指标;

则所述与所述第二类能力指标相对应的第二调整帧率通过以下方式得到:

在确定所述帧处理队列缓存指标的指标值超过预设队列阈值的情况下,根据所述帧处理时长指标计算所述第二调整帧率。

在一种可选的实现方式中,所述根据所述帧处理时长指标计算所述第二调整帧率具体包括:

计算与所述帧处理时长指标相对应的最大处理帧率,在所述当前发送帧率大于所述最大处理帧率的情况下,根据所述最大处理帧率确定所述第二调整帧率。

在一种可选的实现方式中,所述帧处理队列缓存指标包括以下中的至少一个:待解码队列缓存指标、以及待渲染队列缓存指标;所述帧处理时长指标包括以下中的至少一个:帧解码时长指标、帧渲染时长指标;

则所述第二调整帧率包括以下中的至少一个:

在确定所述待解码队列缓存指标的指标值超过预设解码队列阈值的情况下,根据与所述帧解码时长指标相对应的最大解码帧率得到的第二解码调整帧率;

在确定所述待渲染队列缓存指标的指标值超过预设渲染队列阈值的情况下,根据与所述帧渲染时长指标相对应的最大渲染帧率得到的第二渲染调整帧率。

在一种可选的实现方式中,所述根据所述第一调整帧率与所述第二调整帧率之间的比较结果确定目标帧率具体包括:

获取所述第一调整帧率以及所述第二调整帧率中的最小值,将所述最小值确定为所述目标帧率。

在一种可选的实现方式中,所述动态反馈消息由所述数据接收端每隔预设时间周期发送一次,所述数据帧包括:云游戏应用中的视频帧;并且,所述数据发送端为云游戏应用中的云服务器,所述数据接收端为云游戏应用中的客户端。

图5示出了本公开又一实施例提供的一种帧率控制装置的示意图,该帧率控制装置适用于数据接收端,所述装置包括:

生成模块51,适于在接收数据发送端根据当前发送帧率传输的数据帧的过程中,根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息;其中,所述第一类能力指标用于表征所述数据接收端的设备处理能力,所述第二类能力指标用于表征所述数据接收端的帧处理能力;

发送模块52,适于将所述动态反馈消息发送至数据发送端,以供所述数据发送端根据与所述第一类能力指标相对应的第一调整帧率以及与所述第二类能力指标相对应的第二调整帧率确定目标帧率,并根据所述目标帧率调整所述当前发送帧率。

在一种可选的实现方式中,所述根据动态获取的第一类能力指标以及第二类能力指标生成动态反馈消息具体包括:

每当预设时间周期到达时,获取与本次时间周期相对应的第一类能力指标以及第二类能力指标,生成与本次时间周期相对应的动态反馈消息。。

另外,本申请又一实施例还提供了一种帧率控制系统,该系统包括:上述的数据发送端以及数据接收端。

图6示出了根据本公开又一实施例的一种电子设备的结构示意图,本公开具体实施例并不对电子设备的具体实现做限定。

如图6所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)506、存储器(memory)504、以及通信总线508。

其中:

处理器502、通信接口506、以及存储器504通过通信总线508完成相互间的通信。

通信接口506,用于与其它设备比如客户端或其它服务器等的网元通信。

处理器502,用于执行程序510,具体可以执行上述视频图像的检测方法实施例中的相关步骤。

具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。

处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本公开实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU。也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器504,用于存放程序510。存储器504可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

程序510具体可以用于使得处理器502执行上述视频图像的检测方法实施例中对应的各个操作。

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的内容,并且上面对特定语言所做的描述是为了披露本公开的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本公开实施例的装置中的一些或者全部部件的一些或者全部功能。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

相关技术
  • 帧率控制方法、装置、终端及存储介质
  • 电子设备的显示控制方法、装置、电子设备和存储介质
  • 电子设备控制方法及装置、电子设备及存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种智能控制方法、智能控制装置、电子设备和存储介质
  • 一种视频帧率控制方法、装置、电子设备及存储介质
  • 属性动画的帧率控制方法、装置、电子设备和存储介质
技术分类

06120116509616