一种数据缓冲方法及装置与流程

文档序号:17357981发布日期:2019-04-09 21:51阅读:157来源:国知局
一种数据缓冲方法及装置与流程

本发明涉及流媒体数据播放领域,特别是涉及一种数据缓冲方法及装置。



背景技术:

对于网页web端播放器而言,常规上web端播放器对流媒体数据进行硬件解码,由于硬件解码速度快,不需要考虑音视频同步问题,相对较简单,因此web端播放器少有软件解码,来播放解码后数据。

对于移动端播放器而言,在移动端播放器中使用硬件解码的降级方案时,会对流媒体数据进行软件解码,来播放解码后数据。

而网络环境不好可能会导致网络卡顿,为了减少卡顿次数,一般播放器会设置一个固定大小的缓冲区;将解码后数据填满该缓冲区后,才播放解码后数据,并且解码后数据在填满缓冲区的过程中也不断下载数据,在之前缓冲区中的数据播放完成后,也有一部分数据已经被下载下来,因而会在一定程度上可以保证播放的流畅度,即在一定程度上减少了卡顿次数。但是,由于相关技术中设置的缓冲区大小固定,如果该缓冲区的大小设置的不合理,会影响流媒体数据播放,从而难以满足播放需求,影响用户体验效果。



技术实现要素:

本发明实施例的目的在于提供一种数据缓冲方法及装置,用以解决相关技术中缓冲区影响流媒体数据播放,从而难以满足播放需求,影响用户体验效果的技术问题。具体技术方案如下:

第一方面,本发明实施提供了数据缓冲方法,包括:

在流媒体播放发生卡顿后恢复播放所述流媒体的情况下,获取播放流媒体的过程中所述流媒体的播放状态;

按照所述流媒体的播放状态,调整缓冲区的大小,其中,所述缓冲区用于缓冲待播放的流媒体数据;

按照调整后的所述缓冲区缓冲所述流媒体数据。

进一步的,所述按照所述流媒体的播放状态,调整所述缓冲区的大小,包括:

在获取到的所述流媒体的播放状态为流媒体播放再次发生卡顿的情况下,增大所述缓冲区;和/或

在获取到的所述流媒体的播放状态为流媒体播放的情况下,按照所述流媒体播放的持续时长,调整所述缓冲区。

进一步的,所述按照所述流媒体的播放状态为在播放流媒体的过程中播放的持续时长,调整所述缓冲区,包括:

在获取到的所述流媒体的播放状态为流媒体播放,并且所述流媒体播放的持续时长大于第一预设阈值的情况下,减小所述缓冲区。

进一步的,通过以下方式在流媒体播放发生卡顿后恢复播放所述流媒体:

获取所述流媒体的视频数据的当前显示时间戳和所述流媒体播放发生卡顿时所述流媒体的音频数据的时间戳;

在所述视频数据的当前显示时间戳大于或等于所述音频数据的时间戳与所述缓冲区对应的时间之和的情况下,确定恢复播放所述流媒体。

进一步的,通过以下方式确定所述流媒体播放发生卡顿:

在流媒体播放的过程中,在待渲染视频帧队列为空且所述待渲染视频帧队列为空的状态持续预定时长的情况下,确定所述流媒体播放发生卡顿。

进一步的,在确定所述流媒体播放发生卡顿之后,所述方法还包括:暂停播放所述流媒体的音频数据。

进一步的,在流媒体播放发生卡顿后恢复播放所述流媒体之前,所述方法还包括:

在所述缓冲区缓冲预定时间的情况下,确定开始播放首屏;其中,所述预定时间为缓冲第一数量的视频帧所对应的时间。

第二方面,本发明实施提供了数据缓冲装置,所述装置包括:

获取模块,用于在流媒体播放发生卡顿后恢复播放所述流媒体的情况下,获取播放流媒体的过程中所述流媒体的播放状态;

调整模块,用于按照所述流媒体的播放状态,调整缓冲区的大小,其中,所述缓冲区用于缓冲待播放的流媒体数据;

缓冲模块,用于按照调整后的所述缓冲区缓冲所述流媒体数据。

进一步的,所述调整模块,用于:

在获取到的所述流媒体的播放状态为流媒体播放再次发生卡顿的情况下,增大所述缓冲区;和/或

在获取到的所述流媒体的播放状态为流媒体播放的情况下,按照所述流媒体播放的持续时长,调整所述缓冲区。

进一步的,所述调整模块,用于:

在获取到的所述流媒体的播放状态为流媒体播放,并且所述流媒体播放的持续时长大于第一预设阈值的情况下,减小所述缓冲区。

进一步的,通过以下方式在流媒体播放发生卡顿后恢复播放所述流媒体:

获取所述流媒体的视频数据的当前显示时间戳和所述流媒体播放发生卡顿时所述流媒体的音频数据的时间戳;

在所述视频数据的当前显示时间戳大于或等于所述音频数据的时间戳与所述缓冲区对应的时间之和的情况下,确定恢复播放所述流媒体。

进一步的,通过以下方式确定所述流媒体播放发生卡顿:

在流媒体播放的过程中,在待渲染视频帧队列为空且所述待渲染视频帧队列为空的状态持续预定时长的情况下,确定所述流媒体播放发生卡顿。

进一步的,所述装置还包括:

第一播放模块,用于在确定所述流媒体播放发生卡顿之后,用于暂停播放所述流媒体的音频数据。

进一步的,所述装置还包括:

第二播放模块,用于在流媒体播放发生卡顿后恢复播放所述流媒体之前,在所述缓冲区缓冲预定时间的情况下,确定开始播放首屏;其中,所述预定时间为缓冲第一数量的视频帧所对应的时间。

第三方面,本发明实施提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。

第四方面,本发明实施提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面任一的方法。

第五方面,本申请实施例提供了一种应用程序,当其在计算机上运行时,使得计算机执行上述第一方面任一方法。

第六方面,本发明实施还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一的方法。

本发明实施例提供的一种数据缓冲方法及装置,在流媒体播放发生卡顿后恢复播放流媒体的情况下,获取播放流媒体的过程中流媒体的播放状态;按照流媒体的播放状态,调整缓冲区的大小,其中,缓冲区用于缓冲待播放的流媒体数据;按照调整后的缓冲区缓冲流媒体数据。

由此可见,按照流媒体的播放状态,可以自适应地调整缓冲区的大小,与相关技术中缓冲区大小固定的方案相比,可实现自适应地调整缓冲区的大小,因而能够更好的满足播放状态的需求,进而减少对流媒体数据的播放的影响,从而提高用户体验效果。

当然,实施本发明的任一产品或方法并不一定需要同时满足以上所述的所有优点。

附图说明

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

图1为本发明实施例提供的数据缓冲方法的第一流程示意图;

图2为本发明实施例提供确定在流媒体播放发生卡顿后恢复播放流媒体的流程示意图;

图3为本发明实施例提供的数据缓冲方法的第二流程示意图;

图4为本发明实施例的数据缓冲装置的结构示意图;

图5为本发明实施例提供的电子设备的结构示意图。

具体实施方式

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

针对相关技术的缓冲区影响流媒体数据播放,从而难以满足播放需求,影响用户体验效果的问题,本发明实施例提供一种数据缓冲方法及装置,采用如下步骤缓冲流媒体数据:

在流媒体播放卡顿后恢复播放流媒体的情况下,获取播放流媒体的过程中流媒体的播放状态;按照流媒体的播放状态,调整缓冲区的大小,其中,缓冲区用于缓冲待播放的流媒体数据;按照调整后的缓冲区缓冲流媒体数据。

由此可见,按照流媒体的播放状态,可以自适应地调整缓冲区的大小,与相关技术中缓冲区大小固定的方案相比,可实现自适应地调整缓冲区的大小,因而能够更好的满足播放状态的需求,能够进一步减少卡顿的次数,进而能够减少对流媒体数据的播放的影响,从而提高用户体验效果。

下面首先对本发明实施例提供的一种数据缓冲方法的具体应用进行介绍。

本发明实施例所提供的一种数据缓冲方法可以应用于电子设备。该电子设备进一步可以为但不限于:台式计算机、便携式计算机、移动终端,服务器等。任何可以实现本发明实施例数据缓冲方法的电子设备,均属于本发明实施例的保护范围,在此不作限定。进一步的,数据缓冲方法也应用于电子设备上的客户端,该客户端可以是但不限于直播播放器,也可以是但不限于点播播放器,在此不作限定。

下面继续对本发明实施例提供的一种数据缓冲方法进行介绍。

参见图1,图1为本发明实施例提供的一种数据缓冲方法的第一流程示意图。本发明实施例所提供的一种数据缓冲方法,可以包括如下步骤:

步骤110,在流媒体播放发生卡顿后恢复播放流媒体的情况下,获取播放流媒体的过程中流媒体的播放状态。

其中,流媒体播放发生卡顿的确定方式可以有多种,比如,在缓冲区中缓冲的待播放的流媒体数据消耗完,确定流媒体播放发生卡顿;或者缓冲区中缓冲的待播放的流媒体数据达到缓冲区的下限值持续预定时长的情况下,确定流媒体播放发生卡顿。再比如,在待渲染视频队列达到渲染的下线值,且待渲染视频帧队列达到渲染的下线值的状态持续预定时长的情况下,确定流媒体播放发生卡顿。其中,上述下线值可以但不限于是根据用户需求进行设置。示例性的,下线值可以为0,即,在流媒体播放的过程中,在待渲染视频帧队列为空且待渲染视频帧队列为空的状态持续预定时长的情况下,确定流媒体播放发生卡顿。其中预定时长可以是根据用户进行设置的经验值。这个经验值可以是但不限于0.5s。这个经验值是可以根据不同环境改变。

上述播放状态可以包括但不限于:流媒体的播放过程中出现卡顿,和/或流媒体播放。只要能够调整缓冲区的大小,所使用的流媒体的播放状态,均属于本发明实施例的保护范围,在此不再一一举例。

参见图2所示,本步骤110中通过以下步骤确定在流媒体播放发生卡顿后恢复播放流媒体,但不限于此:

步骤101,获取流媒体的视频数据的当前显示时间戳和流媒体播放发生卡顿时流媒体的音频数据的时间戳;

步骤102,判断在视频数据的当前显示时间戳是否大于或等于音频数据的时间戳与缓冲区对应的时间之和,在视频数据的当前显示时间戳小于音频数据的时间戳与缓冲区对应的时间之和的情况下,返回继续执行步骤101;

步骤103,在视频数据的当前显示时间戳大于或等于音频数据的时间戳与缓冲区对应的时间之和的情况下,确定恢复播放流媒体。也就是,vt=at+缓冲区对应的时间,其中,vt可以为视频数据的当前显示时间戳,at可以为音频数据的时间戳。其中,流媒体的音频数据的时间戳可以是从audioelement音频元素标签的currenttime当前时间属性中获取的,该currenttime属性设置或返回音频/视频播放的当前位置(以秒计)。

步骤120,按照流媒体的播放状态,调整缓冲区的大小,其中,缓冲区用于缓冲待播放的流媒体数据。

上述缓冲区可以是指但不限于缓冲待播放的流媒体对应的时间和/或待播放的流媒体数据量。只要能够用于缓冲待播放的流媒体数据的缓冲区,均属于本发明实施例的保护范围。这里的缓冲区与流媒体的卡顿相关。进一步的缓冲区与流媒体的卡顿的关系,可以包括但不限于以下至少之一:缓冲区可以随流媒体的卡顿次数越来越大,随流媒体播放的持续时长越来越小,比如在播放过程中再次发生卡顿,则增大缓冲区,每次卡顿,缓冲区可以增加0.2s;或者在流媒体可以持续流畅播放10s不卡顿,则为了减少卡顿后恢复播放时间,可以减小缓冲区,每次减小0.2s。对于本步骤120调整缓冲区的大小,可以采用如下至少之一的实现方式但不限于此:

在一种实现方式中,在获取到的流媒体的播放状态为流媒体播放再次发生卡顿的情况下,增大缓冲区。

为了解决上述流媒体播放再次发生卡顿的问题,对于上述增大缓冲区的详细实现过程如下说明:

在上述一种可能的实现方式中,进一步的包括如下第一步和第二步,但不限于:第一步,判断获取到的流媒体的播放状态为流媒体播放中是否再次发生卡顿。

第二步,在获取到的流媒体的播放状态为流媒体播放再次发生卡顿的情况下,则暂停播放音频数据,增大缓冲区。此处暂停播放音频数据是为了能够缓冲待播放的流媒体数据,避免出现仅音频数据播放而没有显示视频帧的问题,影响用户体验。流媒体数据播放过程中出现卡顿,则暂停播放音频数据,并说明流媒体数据播放过程中需要对下载的流媒体数据进行缓冲,因此增大缓冲区,减少卡顿。

上述增大缓冲区的实现方式可以是但不限于:将当前缓冲区调大增长值,增大缓冲区。进一步的实现方式可以为但不限于,从增大的缓冲区的集合或列表中获得增长值,将当前缓冲区调大增长值,增大缓冲区。这样可以基于当前缓冲区,适应地增大缓冲区,得到增大后的缓冲区更符合实际需求。

其中,上述当前缓冲区的大小可以是基于缓冲区的初始值;得到的增大后的缓冲区的大小,也可以是缓冲区的初始值;具体的,当前缓冲区可以是根据当前实际情况决定。示例性的,缓冲区的初始值可以是经验值,这个缓冲区的初始值也可以称为缓冲区的下限值。只要能够保证视频播放,并且缓冲区能够设置的最小极限值,均可以作为本发明实施例的缓冲区的初始值,在此不做限定。示例性的,缓冲区的初始值可以但不限于是0.5s。

上述增长值可以但不限于是经验值。进一步的,上述增长值可以但不限于为预设的一个固定数值,也可以但不限于为预设的一个可变数值。示例性的,可变数值的得到方式可以是依次从一组递增数组中获取一个数值,还可以依次从一个递减数组中获取一个数值。示例性的,增长值为0.2,pn=pn-1+0.2,pn-1为当前缓冲区,pn为增大后的缓冲区,n-1和n分别作为pn-1和pn的角标,用于区分当前缓冲区和增大后的缓冲区。

为了避免增大后的缓冲区过大,影响对待播放的流媒体数据进行恢复播放的时间,因此可以将增大后的缓冲区设置一个缓冲区的上限值,这个缓冲区的上限值可以是经验值,只要能够保证视频播放,并且待播放的流媒体数据恢复播放的时间符合要求,以及缓冲区能够设置的最大极限值,均可以作为本发明实施例的缓冲区的上限值,在此不做限定。示例性的,缓冲区的上限值可以但不限于是:2s。

基于上述缓冲区的上限值,可以按照用户需求执行一次上述增大缓冲区的过程,也可以执行多次上述增大缓冲区的过程,进一步的包括但不限于:

第11步,在获取到的流媒体的播放状态为流媒体播放再次发生卡顿的情况下,增大缓冲区,得到增大后的缓冲区;

第12步,判断增大后的缓冲区是否达到缓冲区的上限值;

第13步,若增大后的缓冲区未达到缓冲区的上限值,则返回第11步,直至达到缓冲区的上限值,不再增大当前缓冲区大小。

为了减少流媒体播放出现卡顿,并且减少卡顿后恢复播放流媒体的时间,因此本发明实施例提供了在另一种实现方式中,在获取到的流媒体的播放状态为流媒体播放的情况下,按照流媒体播放的持续时长,调整缓冲区。这样可以按照流媒体播放的持续时长,自适应地调整缓冲区,能够满足播放状态的需求。

对于上述另一种实现方式可以采用如下至少之一的方式,调整缓冲区,但并不限于此:

在一种方式中,在获取到的流媒体的播放状态为流媒体播放,并且,流媒体播放的持续预定时长的情况下,减小缓冲区,其中,持续预定时长可以但不限于是固定时长,或者持续预定时长可以但不限于是可变时长,可变时长可以是递增时长中的一个时长或递减时长中的一个时长。这样流媒体持续预定时长,就可以减小缓冲区。

在另一种方式中,在获取到的流媒体的播放状态为流媒体播放,并且,流媒体播放的持续时长大于第一预设阈值的情况下,减小缓冲区;

在又一种实现方式中,在获取到的流媒体的播放状态为流媒体播放,流媒体播放的持续时长小于第一预设阈值,并且在该流媒体播放的持续时长内流媒体播放再次未发生卡顿的情况下,缓冲区不变;在获取到的流媒体的播放状态为流媒体播放,流媒体播放的持续时长小于第一预设阈值,并且在该流媒体播放的持续时长内流媒体播放再次发生卡顿的情况下,增大缓冲区。

其中,上述第一预设阈值可以是根据用户需求进行设置的经验值,示例性的,第一预设阈值可以但不限于是:10s。这样方便利用第一预设阈值,在保证视频流畅播放一段时间之后,减小缓冲区。在上述实现方式中,通过流媒体播放的持续时长大于第一预设阈值,说明流媒体数据播放流畅,适时地减小缓冲时间,这样既不会增加卡顿,也可以减少卡顿后恢复播放流媒体的时间,还可以减小内存占用率。

上述减小缓冲区的实现方式可以是但不限于:将当前缓冲区调小减少值,减小缓冲区。进一步的实现方式可以为但不限于,从减小的缓冲区的集合或列表中获得减少值,将当前缓冲区调小减少值,减小缓冲区。这样可以基于当前缓冲区,适应地减小缓冲区,得到减小后的缓冲区更符合实际需求。

其中,上述当前缓冲区的大小可以是基于缓冲区的上限值,得到的减小后的缓冲区的大小。具体当前缓冲区可以是根据当前实际情况设定。示例性的,缓冲区的上限值可以是经验值,只要能够保证视频恢复播放时间符合要求,并且缓冲区能够设置的最大极限值,均可以作为本发明实施例的缓冲区的上限值,在此不做限定。示例性的,缓冲区的上限值可以但不限于是2s。

上述减少值可以但不限于是经验值。上述减少值可以为预设的一个固定数值,也可以为预设的一个可变数值,示例性的,可变数值的得到方式可以是依次从一组递增数组中获取一个数值,还可以依次从一个递减数组中获取一个数值。示例性的但不限于:这里的减少值为0.2,pm=pm-1-0.2,pm-1为当前缓冲区,pm为减小后的缓冲区,m-1和m分别作为pm-1和pm的角标,用于区分当前缓冲区和减小后的缓冲区。

为了避免减小后的缓冲区过小,影响对待播放的流媒体数据进行播放,因此可以将减小后的缓冲区需要至少等于上述缓冲区的初始值。

在播放过程中,播放流媒体数据比较流畅时,为了减小缓冲压力,也为了减少卡顿后恢复播放流媒体的时间,因此基于上述缓冲区的初始值,可以按照用户需求执行一次上述减小过程,也可以执行多次上述减小过程,进一步的包括但不限于:

第21步,在获取到的流媒体的播放状态为流媒体播放的情况下,按照流媒体播放的持续时长,减小缓冲区,得到减小后的缓冲区;

第22步,判断减小后的缓冲区是否达到缓冲区的初始值;

第23步,若减小后的缓冲区未达到缓冲区的初始值,则返回第21步,直至达到缓冲区的初始值,不再减小当前缓冲区大小。

步骤130,按照调整后的缓冲区缓冲流媒体数据。

其中,上述待播放的流媒体数据的获取方式可以是:第一步,对下载的流媒体数据进行解封装;第二步,对解封装的流媒体数据进行软件解码,得到的软件解码后的流媒体数据。

其中,软件解码中播放流媒体数据,通常需要将流媒体数据的音频数据和视频数据进行同步,比如,电子设备会采用将视频数据同步到音频数据的方式。该方式可以采用如下第1步至第4步实现:

第1步,音频数据独立解码持续播放,视频数据中的视频帧渲染之前检测最新视频帧的显示时间戳(presentationtimestamp,简称pts)是否大于音频数据的当前时间戳;其中,这个pts时间戳用来说明在什么时候显示这一帧的数据。最新视频帧可以是待渲染队列中最新的视频帧,待渲染队列就是需要进行渲染的视频帧形成的队列,可以将这些队列在缓冲区进行缓冲。这样方便从缓冲区的待渲染队列中找到最新视频帧。

第2步,若检测到最新视频帧的pts大于音频数据的当前时间戳,说明渲染的视频帧足够播放,也就是说,音频数据播放速度慢于视频帧渲染的速度,则不用渲染视频帧,等待音频数据的pts大于或等于视频帧的pts;

第3步,若检测到最新视频帧的pts小于或等于音频数据的当前时间戳,说明渲染的视频帧不够播放,也就是说,音频数据播放速度快于视频帧渲染速度,则直接渲染当前视频帧,追赶音频数据;

第4步,若视频帧的pts小于音频数据的pts,并且视频帧的pts与音频数据的pts的差值大于预设阈值,则丢弃视频帧。其中,预设阈值可以是根据工业需要进行设置的。这样丢弃视频帧,也是为了快速追赶音频数据,避免音频卡顿被用户感知。

在上述步骤130之前,所述方法还包括:下载流媒体数据。这个流媒体数据会不受缓冲的影响,持续进行下载,目的是为了持续地得到最新视频帧的显示时间戳。后续为了方便描述,可以将最新视频帧的显示时间戳,记为vt。

本发明实施例中,按照流媒体的播放状态,可以自适应地调整缓冲区的大小,与相关技术中缓冲区大小固定的方案相比,可实现自适应地调整缓冲区的大小,因而能够更好的满足播放状态的需求,可以减少卡顿的次数,进而能够减少对流媒体数据的播放的影响,从而提高用户体验效果。

为了能够实现本发明实施例的流媒体数据中的首屏播放,结合上述图1、及图2,参见图3所示,本发明实施例还提供一种数据缓冲方法,在上述步骤110之前,所述方法还包括:

步骤100,在缓冲区缓冲预定时间的情况下,确定开始播放首屏;其中,预定时间为缓冲第一数量的视频帧所对应的时间。

其中,第一数量是经验值,这个经验值可以是但不限于基于恢复播放流媒体的时间和缓冲区的大小设置的。示例性的但不限于,第一数量为3帧视频帧,在每秒播放26帧视频帧时,上述预定时间可以为但不限于3帧视频帧的播放时长,比如,约等于115ms。再比如,在每秒播放30帧视频帧时,上述预定时间可以为但不限于3帧视频帧的播放时长,比如,100ms。其中3帧视频帧可以是指流媒体数据中的前3帧视频帧,前3帧视频帧可以包含首屏的视频帧,这样保证了首屏的播放时间,并且降低刚播放就卡顿的概率。

本步骤100中缓冲区缓冲预定时间的步骤进一步的包括:在缓冲区缓冲预定时间内缓冲视频帧,并下载音频数据。这样缓冲的视频帧在填满缓冲区的过程中,也不断下载音频数据,因而会在一定程度上可以保证后续播放的流畅度,即在一定程度上减少了卡顿次数,并且后期能够保证视频帧和音频数据能够同步播放。

下面继续对本发明实施例提供的数据缓冲装置进行介绍。

如图4所示,本发明实施例还提供一种数据缓冲装置,所述装置包括:

获取模块21,用于在流媒体播放发生卡顿后恢复播放所述流媒体的情况下,获取播放流媒体的过程中所述流媒体的播放状态;

调整模块22,用于按照所述流媒体的播放状态,调整缓冲区的大小,其中,所述缓冲区用于缓冲待播放的流媒体数据;

缓冲模块23,用于按照调整后的所述缓冲区缓冲所述流媒体数据。

本发明实施例中,按照流媒体的播放状态,可以自适应地调整缓冲区的大小,与相关技术中缓冲区大小固定的方案相比,可实现自适应地调整缓冲区的大小,因而能够更好的满足播放状态的需求,进而减少对流媒体数据的播放的影响,从而提高用户体验效果。

在一种可能的实现方式中,所述调整模块,用于:

在获取到的所述流媒体的播放状态为流媒体播放再次发生卡顿的情况下,增大所述缓冲区;和/或

在获取到的所述流媒体的播放状态为流媒体播放的情况下,按照所述流媒体播放的持续时长,调整所述缓冲区。

在一种可能的实现方式中,所述调整模块,用于:

在获取到的所述流媒体的播放状态为流媒体播放,并且所述流媒体播放的持续时长大于第一预设阈值的情况下,减小所述缓冲区。

在一种可能的实现方式中,通过以下方式在流媒体播放发生卡顿后恢复播放所述流媒体:

获取所述流媒体的视频数据的当前显示时间戳和所述流媒体播放发生卡顿时所述流媒体的音频数据的时间戳;

在所述视频数据的当前显示时间戳大于或等于所述音频数据的时间戳与所述缓冲区对应的时间之和的情况下,确定恢复播放所述流媒体。

在一种可能的实现方式中,通过以下方式确定所述流媒体播放发生卡顿:

在流媒体播放的过程中,在待渲染视频帧队列为空且所述待渲染视频帧队列为空的状态持续预定时长的情况下,确定所述流媒体播放发生卡顿。

在一种可能的实现方式中,所述装置还包括:

第一播放模块,用于在确定所述流媒体播放发生卡顿之后,用于暂停播放所述流媒体的音频数据。

在一种可能的实现方式中,所述装置还包括:

第二播放模块,用于在流媒体播放发生卡顿后恢复播放所述流媒体之前,在所述缓冲区缓冲预定时间的情况下,确定开始播放首屏;其中,所述预定时间为缓冲第一数量的视频帧所对应的时间。

下面继续对本发明实施例提供的电子设备进行介绍。

本发明实施例还提供了一种电子设备,如图5所示,包括处理器31、通信接口32、存储器33和通信总线34,其中,处理器31,通信接口32,存储器33通过通信总线34完成相互间的通信,

存储器33,用于存放计算机程序;

处理器31,用于执行存储器33上所存放的程序时,实现上述数据缓冲方法的步骤,在本发明的一个实施例中,可以实现如下步骤:

在流媒体播放发生卡顿后恢复播放所述流媒体的情况下,获取播放流媒体的过程中所述流媒体的播放状态;

按照所述流媒体的播放状态,调整缓冲区的大小,其中,所述缓冲区用于缓冲待播放的流媒体数据;

按照调整后的所述缓冲区缓冲所述流媒体数据。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于为,图中仅用一条粗线为,但并不为仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory,简称nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例提供的方法可以应用于电子设备。具体的,该电子设备可以为:台式计算机、便携式计算机、智能移动终端、服务器等。在此不作限定,任何可以实现本发明的电子设备,均属于本发明的保护范围。

本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据缓冲方法的步骤。

本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的数据缓冲方法的步骤。

本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述的数据缓冲方法的步骤。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/电子设备/存储介质/包含指令的计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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