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

抖动缓冲队列的调整方法、装置、介质和计算设备

文献发布时间:2023-06-19 18:46:07


抖动缓冲队列的调整方法、装置、介质和计算设备

技术领域

本公开的实施例涉及视频技术领域,更具体地,本公开的实施例涉及一种抖动缓冲队列的调整方法、装置、介质和计算设备。

背景技术

本部分旨在为本公开的实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

可以被播放设备所播放的视频通常由多张视频帧构成,在视频的网络传输场景中,通常需要逐帧传输各张视频帧。在视频帧的传输过程中,网络不稳定、帧大小不一致等多种原因都可能导致传输过程存在抖动,具体体现为相邻帧到达接收方(通常为显示设备)的时间间隔不稳定。抖动的大小将会影响显示设备的视频播放效果,特别是在直播、视频会议等强实时性视频的消费场景下,抖动往往会显著影响视频播放效果。

为了使显示设备能够显示出尽量流畅的视频画面,避免视频卡顿,视频帧的接收方可以采用抖动缓冲队列(Jitter Buffer,或称抖动缓冲区)暂存一定时长内接收到的视频帧,同时按照相对稳定的帧率输出并显示各张视频帧。为了平衡显示性能与存储资源,可以采用可伸缩的抖动缓冲队列(其大小可以体现为缓冲时长),对此,准确估算抖动缓冲队列的大小就成为确保抖动缓冲队列发挥优异性能的关键。在相关技术中,常通过卡尔曼滤波算法计算帧大小传输时长差和网络随机抖动,并将二者之和作为抖动缓冲队列的缓冲时长。

发明内容

但是,卡尔曼滤波算法难以有效适用于现阶段的突发型弱网场景。具体而言,卡尔曼滤波算法的前提假设是网络传输抖动符合随机分布的特征,在随机抖动网络中能够较好地自适应抖动缓冲队列的大小。但是,现阶段的视频传输网络往往都是突发型弱网,卡尔曼滤波算法对偶尔的几个突发样本点往往会直接忽略,导致抖动缓冲队列无法被及时拉伸而易造成卡顿。另外,帧大小造成的传输抖动差估算中也同样用了简单的指数滤波处理,尤其是运动和静止频繁切换的场景中,帧大小会存在剧烈变化,指数滤波帧大小的方法难以真实反映帧大小传输抖动,从而导致抖动缓冲队列的防抖动效果不佳。

为此,非常需要一种改进的抖动缓冲队列的调整方案,以确保在突发型弱网场景下针对抖动缓冲队列的及时拉伸,从而提升该网络场景下的视频显示效果。在本上下文中,本公开的实施例期望提供一种抖动缓冲队列的调整方法、装置、介质和计算设备。

在本公开实施例的第一方面中,提供了一种抖动缓冲队列的调整方法,所述方法包括:

响应于接收到目标视频的当前视频帧,将所述当前视频帧输入抖动缓冲队列,并将所述当前视频帧的接收时刻与所述当前视频帧对应的基准时刻之间的差值确定为所述当前视频帧的当前抖动时长;

在所述当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述当前视频帧对应的最大抖动时长,以使所述当前视频帧在所述抖动缓冲队列中等待所述最大抖动时长后被输出至显示组件,其中,所述最大抖动时长不小于所述当前抖动时长;

若在所述缓冲时长调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则将所述抖动缓冲队列的缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长,所述随机抖动时长小于所述最大抖动时长。

可选的,所述接收到目标视频的当前视频帧,包括:

在接收到包含同一序列号的多个图像数据包的情况下,将所述多个图像数据包重组为该序列号对应的所述当前视频帧。

可选的,所述当前抖动时长满足峰值拉伸条件,包括:所述当前视频帧满足下述至少之一,或者所述当前视频帧和在所述接收时刻之前的淘汰时间段内接收到的至少一个其他视频帧分别满足下述至少之一:

所述当前抖动时长不小于当前时刻的随机抖动时长的倍数阈值;

所述当前抖动时长与当前时刻的随机抖动时长之间的差值不小于第一时长阈值;

所述当前抖动时长不小于第二时长阈值。

可选的,确定所述当前视频帧对应的最大抖动时长,包括:

将所述当前抖动时长确定为所述最大抖动时长;或者,

若在所述接收时刻之前的淘汰时间段内还接收到满足所述峰值拉伸条件的至少一张视频帧,则将所述当前抖动时长和所述至少一张视频帧各自的抖动时长之间的最大值确定为所述最大抖动时长。

可选的,还包括:

按照相应的播放间隔将所述抖动缓冲队列内的各张视频帧顺序输出至所述显示组件,以播放所述目标视频。

可选的,所述抖动缓冲队列内的各张视频帧分别存在相应的序列号,所述方法还包括:

若所述各张视频帧在所述抖动缓冲队列内的排列顺序与所述各张视频帧的序列号大小顺序不同,则对所述各张视频帧进行乱序重组处理,以将所述各张视频帧的排列顺序调整为与所述序列号大小顺序相同。

可选的,确定相邻两张视频帧之间的播放间隔,包括:

将预设的播放步长确定为所述相邻两张视频帧之间的播放间隔;或者,

确定所述目标视频的帧率,并根据所述帧率计算所述相邻两张视频帧之间的播放间隔。

可选的,所述将所述抖动缓冲队列的缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长,包括:

根据所述最大抖动时长和当前时刻的随机抖动时长,确定在收敛时间段内的调整速率;

在所述收敛时间段内,按照所述调整速率将所述缓冲时长由所述最大抖动时长匀速调整为当前时刻的随机抖动时长。

可选的,所述当前时刻的随机抖动时长为预设的固定时长;或者通过卡尔曼滤波算法对接收到的所述目标视频的各张视频帧进行计算得到。

可选的,所述维持时间段的维持时长为预设时长,或者为数据平台下发的期望维持时长。

可选的,还包括:

将播放所述目标视频的过程中产生的卡顿时长上传至所述数据平台,以由所述数据平台统计多个视频播放设备分别上传的卡顿时长得到至少一个统计维度下的期望维持时长,所述期望维持时长被所述数据平台用于下发至满足相应统计维度的视频播放设备。

在本公开实施例的第二方面中,提供了一种抖动缓冲队列的调整装置,所述装置包括:

视频帧输入模块,用于响应于接收到目标视频的当前视频帧,将所述当前视频帧输入抖动缓冲队列,并将所述当前视频帧的接收时刻与所述当前视频帧对应的基准时刻之间的差值确定为所述当前视频帧的当前抖动时长;

第一调整模块,用于在所述当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述当前视频帧对应的最大抖动时长,以使所述当前视频帧在所述抖动缓冲队列中等待所述最大抖动时长后被输出至显示组件,其中,所述最大抖动时长不小于所述当前抖动时长;

第二调整模块,用于若在所述缓冲时长调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则将所述缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长,所述随机抖动时长小于所述最大抖动时长。

可选的,所述视频帧输入模块具体用于:

在接收到包含同一序列号的多个图像数据包的情况下,将所述多个图像数据包重组为该序列号对应的所述当前视频帧。

可选的,所述当前抖动时长满足峰值拉伸条件,包括:所述当前视频帧满足下述至少之一,或者所述当前视频帧和在所述接收时刻之前的淘汰时间段内接收到的至少一个其他视频帧分别满足下述至少之一:

所述当前抖动时长不小于当前时刻的随机抖动时长的倍数阈值;

所述当前抖动时长与当前时刻的随机抖动时长之间的差值不小于第一时长阈值;

所述当前抖动时长不小于第二时长阈值。

可选的,还包括时长确定模块,用于:

将所述当前抖动时长确定为所述最大抖动时长;或者,

若在所述接收时刻之前的淘汰时间段内还接收到满足所述峰值拉伸条件的至少一张视频帧,则将所述当前抖动时长和所述至少一张视频帧各自的抖动时长之间的最大值确定为所述最大抖动时长。

可选的,还包括视频帧输出模块,用于:

按照相应的播放间隔将所述抖动缓冲队列内的各张视频帧顺序输出至所述显示组件,以播放所述目标视频。

可选的,所述抖动缓冲队列内的各张视频帧分别存在相应的序列号,所述装置还包括乱序重组模块,用于:

若所述各张视频帧在所述抖动缓冲队列内的排列顺序与所述各张视频帧的序列号大小顺序不同,则对所述各张视频帧进行乱序重组处理,以将所述各张视频帧的排列顺序调整为与所述序列号大小顺序相同。

可选的,所述视频帧输出模块具体用于:

将预设的播放步长确定为所述相邻两张视频帧之间的播放间隔;或者,

确定所述目标视频的帧率,并根据所述帧率计算所述相邻两张视频帧之间的播放间隔。

可选的,所述第二调整模块具体用于:

根据所述最大抖动时长和当前时刻的随机抖动时长,确定在收敛时间段内的调整速率;

在所述收敛时间段内,按照所述调整速率将所述缓冲时长由所述最大抖动时长匀速调整为当前时刻的随机抖动时长。

可选的,所述当前时刻的随机抖动时长为预设的固定时长;或者通过卡尔曼滤波算法对接收到的所述目标视频的各张视频帧进行计算得到。

可选的,所述维持时间段的维持时长为预设时长,或者为数据平台下发的期望维持时长。

可选的,还包括样本上传模块,用于:

将播放所述目标视频的过程中产生的卡顿时长上传至所述数据平台,以由所述数据平台统计多个视频播放设备分别上传的卡顿时长得到至少一个统计维度下的期望维持时长,所述期望维持时长被所述数据平台用于下发至满足相应统计维度的视频播放设备。

在本公开实施例的第三方面中,提供了一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一实施例所述的抖动缓冲队列的调整方法。

在本公开实施例的第四方面中,提供了一种计算设备,包括:

处理器;用于存储处理器可执行指令的存储器;

其中,所述处理器通过运行所述可执行指令以实现上述第一方面中任一实施例所述的抖动缓冲队列的调整方法。

根据本公开实施例的抖动缓冲队列的调整方法,视频播放设备可以响应于接收到目标视频的当前视频帧,将该视频帧输入抖动缓冲队列,并将当前视频帧的接收时刻与该视频帧对应的基准时刻之间的差值确定为该视频帧的当前抖动时长;然后,在当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为当前视频帧对应的最大抖动时长,以使所述当前视频帧在抖动缓冲队列中等待最大抖动时长后被输出至显示组件,其中,最大抖动时长不小于所述当前抖动时长;若在抖动缓冲队列的大小调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则将该队列的大小由所述最大抖动时长调整为当前时刻的随机抖动时长,该随机抖动时长小于所述最大抖动时长。

在上述方案中,视频播放设备可以在当前视频帧的当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述最大抖动时长,确保当前视频帧在抖动缓冲队列中等待最大抖动时长后再被输出显示。可以理解的是,所述当前视频帧是目标视频中的任一视频帧,因此视频播放设备可以逐一判断目标视频的各张视频帧是否满足上述峰值拉伸条件,并根据其中满足该条件的视频帧相应的调整抖动缓冲队列的缓存时长。

因此,即便是在突发型弱网的场景下,存在个别(数量稀疏)视频帧的当前抖动时长瞬间增大,视频播放设备仍然能够根据该视频帧及时调整抖动缓冲队列的缓存时长。而且调整后的抖动缓冲队列中的各个视频帧的输出时刻也会被相应的调整,所以能够在确保包括当前视频帧在内的各个视频帧的显示时刻尽量均匀,避免出现明显的卡顿感,实现抖动缓冲队列的预期功能。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:

图1示意性地示出了根据本公开实施例的一种抖动缓冲队列的调整方法的流程图;

图2示意性地示出了根据本公开实施例的一种缓冲时长调整过程的示意图;

图3示意性地示出了根据本公开实施例的一种样本上传过程的示意图;

图4示意性地示出了根据本公开实施例的一种介质的示意图;

图5示意性地示出了根据本公开实施例的一种抖动缓冲队列的调整装置的框图;

图6示意性地示出了根据本公开实施例的一种计算设备的示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施例

下面将参考若干示例性实施例来描述本公开的原理和精神。应当理解,给出这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本公开的实施例可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本公开的实施例,提出了一种抖动缓冲队列的调整方法、装置、介质和计算设备。

在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本公开的若干代表性实施例,详细阐释本公开的原理和精神。

发明人发现,卡尔曼滤波算法难以有效适用于现阶段的突发型弱网场景。具体而言,卡尔曼滤波算法的前提假设是网络传输抖动符合随机分布的特征,在随机抖动网络中能够较好地自适应抖动缓冲队列的大小。但是,现阶段的视频传输网络往往都是突发型弱网,卡尔曼滤波算法对偶尔的几个突发样本点往往会直接忽略,导致抖动缓冲队列无法被及时拉伸而易造成卡顿。另外,帧大小造成的传输抖动差估算中也同样用了简单的指数滤波处理,尤其是运动和静止频繁切换的场景中,帧大小会存在剧烈变化,指数滤波帧大小的方法难以真实反映帧大小传输抖动,从而导致抖动缓冲队列的防抖动效果不佳。

为了解决上述问题,本公开提供一种抖动缓冲队列的调整方法、装置、介质和计算设备,独权内容简介。

采用这样的方式,视频播放设备可以在当前视频帧的当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述最大抖动时长,确保当前视频帧在抖动缓冲队列中等待最大抖动时长后再被输出显示。可以理解的是,所述当前视频帧是目标视频中的任一视频帧,因此视频播放设备可以逐一判断目标视频的各张视频帧是否满足上述峰值拉伸条件,并根据其中满足该条件的视频帧相应的调整抖动缓冲队列的缓存时长。

因此,即便是在突发型弱网的场景下,存在个别(数量稀疏)视频帧的当前抖动时长瞬间增大,视频播放设备仍然能够根据该视频帧及时调整抖动缓冲队列的缓存时长。而且调整后的抖动缓冲队列中的各个视频帧的输出时刻也会被相应的调整,所以能够在确保包括当前视频帧在内的各个视频帧的显示时刻尽量均匀,避免出现明显的卡顿感,实现抖动缓冲队列的预期功能。

在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施例。

需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施例在此方面不受任何限制。相反,本公开的实施例可以应用于适用的任何场景。

根据本公开实施例所述抖动缓冲队列的调整方法,该方法可以应用于视频播放设备,该设备可以接收其他设备通过网络发送的目标视频的各张视频帧,并将接收到的所述各张视频帧放入自身维护的抖动缓冲队列中,使得视频帧在抖动缓冲队列中等待一定时长后再输出并显示,从而消除或减弱视频帧传输过程的抖动对目标视频播放过程可能存在的卡顿感。

其中,本公开实施例所述的视频播放设备即为Jitter Buffer,其本质上是一个队列,该队列在本方案中的作用是强制视频帧等待一定时长后再输出,该时长即为本方案所述抖动缓冲队列的缓冲时长。当然,无论是在任意时间段内,抖动缓冲队列中的各张视频帧都可以按照其进入队列的顺序依次输出该队列,即先进先出,只是各张视频帧输出该队列的播放间隔可能发生变化,即目标视频的帧率可能并非固定值。需要说明的是,本方案所述抖动缓冲队列的缓冲时长可以通过时间表示,其实际上也可以对应于该队列的队列长度(或称容量),即缓冲时长也可以用于表征抖动缓冲队列可以同时存放视频帧的数量,不再赘述。

本公开对于抖动时长的具体形式并不进行限制,示例性的,视频播放设备可以为手机、平板设备、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)、可穿戴设备(如智能眼镜、智能手表等)等,本说明书一个或多个实施例并不对此进行限制。所述终端设备可以装配有显示组件(屏幕等)和网络组件(如网卡等),其中,所述网络组件用于通过有线或无线的方式在视频播放设备与其他设备之间建立网络连接,以便有序接收其他设备发送来的目标视频的视频帧;所述显示组件用于依次显示从抖动缓冲队列中输出的各张视频帧,以向用户呈现目标视频的播放效果。

另外,本方案所述抖动缓冲队列的调整方案可以实现为独立的应用程序,或者也可以实现为SDK(Software Development Kit,软件开发工具包)等功能插件。以SDK为例,视频显示设备中可以运行具备视频播放功能的应用程序,使得所述SDK可以运行于与该应用程序配合运行(如被所述应用程序所调用),以实现本方案预期的视频去抖动功能。另外,所述应用程序可以为客户端程序,该程序可以从相应的服务端程序处获取待播放的目标视频,此时,所述服务端程序(或其所处的服务器等物理设备)即为目标视频的发送方,因此可以视为前述其他设备。

根据本公开实施例所述的抖动缓冲队列的调整方法,视频播放设备可以响应于接收到目标视频的当前视频帧,将该视频帧输入抖动缓冲队列,并将当前视频帧的接收时刻与该视频帧对应的基准时刻之间的差值确定为该视频帧的当前抖动时长;然后,在当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为当前视频帧对应的最大抖动时长,以使所述当前视频帧在抖动缓冲队列中等待最大抖动时长后被输出至显示组件,其中,最大抖动时长不小于所述当前抖动时长;若在抖动缓冲队列的大小调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则将该队列的大小由所述最大抖动时长调整为当前时刻的随机抖动时长,该随机抖动时长小于所述最大抖动时长。

下面结合附图描述根据本公开示例性实施例的用于抖动缓冲队列的调整的方法。需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施例在此方面不受任何限制。相反,本公开的实施例可以应用于适用的任何场景。

图1示意性地示出了根据本公开实施例的一种抖动缓冲队列的调整方法的流程图。如图1所示,该方法可以包括以下步骤S102-S106。

步骤S102,响应于接收到目标视频的当前视频帧,将所述当前视频帧输入抖动缓冲队列,并将所述当前视频帧的接收时刻与所述当前视频帧对应的基准时刻之间的差值确定为所述当前视频帧的当前抖动时长。

本公开实施例所述的当前视频帧,可以为目标视频的任一视频帧,换言之,对于接收到的目标视频的各张视频帧,视频播放设备均可以采用本公开实施例所述抖动缓冲队列的调整方案进行处理,特此说明。

由于一张视频帧的数据量通常较大,所以可以对视频帧进行分包传输,即发送方可以将一张视频帧拆分成多个数据包分别传输至接收方。其中,同一视频帧拆分得到的各个数据包具有相同的序列号(各张视频帧的序列号用于表征各张视频帧在目标视频的时间轴中所处的位置),以用于向接收方表明这些数据包属于同一视频帧。当然,任一数据包中还可以包含位置信息,以用于向接收方表明该视频包对应于视频帧中的哪一位置。与之相对的,在一实施例中,作为接收方的视频播放设备可以具备视频组帧功能。例如,视频播放设备可以在接收到包含同一序列号的多个图像数据包的情况下,将所述多个图像数据包重组为该序列号对应的所述当前视频帧。如可以按照各个数据包中记录的前述位置信息对各个数据包按序重组。通过该方式,视频播放设备可以准确接收到目标视频的当前视频帧。另外,所述视频组帧功能也可以集成在抖动缓冲队列中,即由该队列实现前述视频组帧功能,不再赘述。

当然,将目标视频的各张视频帧分别进行分包传输仅是一种可用的传输方式。为了减少视频播放设备接收到视频帧后进行预处理的工作量,发送方也可以将各张视频帧分别作为一个整体单独传输。或者,考虑到视频帧的类型通常与其数据量有关,所以对于不同类型的视频帧,发送方还可以采用不同的方式进行传输。如对于数据量通常较大的关键帧(I帧),可以采用前述分包传输的方式传输至接收方;而对于数据量通常较小的预测帧(P帧)和双向预测帧(B帧),可以将其分别作为整体单独传输,这样可以尽量兼顾视频帧的传输效率和视频播放设备的预处理工作量。

无论采用何种方式接收目标视频的当前视频帧,在接收到该视频帧后,一方面,视频播放设备可以将其输入抖动缓冲队列;另一方面,视频播放设备可以计算该视频帧的当前抖动时长。例如,可以将当前视频帧的接收时刻与当前视频帧对应的基准时刻之间的差值确定为所述当前视频帧的当前抖动时长。

其中,所述当前视频帧的接收时刻即为视频播放设备接收到所述当前视频帧的时刻,具体的,在前述视频组帧场景下,该时刻可以为接收到全部数据包的时刻;也可以为组帧完成的时刻,接收时刻的具体定义可以根据实际情况进行设置。所述当前视频帧对应的基准时刻即为所述当前视频帧的接收时刻的理论值(或称预期值),具体的,可以将当前视频帧的前一视频帧的接收时刻与当前时刻的随机抖动时长之和作为所述当前视频帧对应的基准时刻。

另外,本公开实施例所述的当前时刻的随机抖动时长,可以为预设的固定时长。或者,也可以通过卡尔曼滤波算法对接收到的所述目标视频的各张视频帧进行计算得到所述随机抖动时长。其中,接收到的所述目标视频的各张视频帧,可以理解为视频播放设备在当前时刻之前接收到的所述目标视频的各张历史视频帧,或者,也可以理解为所述当前视频帧和所述各张历史视频帧,通过所述卡尔曼滤波算法计算所述随机抖动时长的具体过程可以参见相关技术中的记载,本公开对此不再赘述。

步骤S104,在所述当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述当前视频帧对应的最大抖动时长,以使所述当前视频帧在所述抖动缓冲队列中等待所述最大抖动时长后被输出至显示组件,其中,所述最大抖动时长不小于所述当前抖动时长。

在确定所述当前视频帧的当前抖动时长后,视频播放设备可以判断该时长是否满足峰值拉伸条件:若满足,则可以将抖动缓冲队列的缓冲时长调整为所述当前视频帧对应的最大抖动时长;否则,若不满足,则无需调整所述缓冲时长,即继续保持缓冲时长的大小不变。需要说明的是,抖动缓冲队列在当前时刻的缓冲时长(即所述调整前的缓冲时长)可能为前述随机抖动时长,或者也可能为前一次调整后的(前一)最大抖动时长——此时,当前时刻尚处于前一次调整对应的维持时间段内。

可以理解的是,所述当前抖动时长相对于随机抖动时长越大,表明当前视频帧的抖动相对于视频帧传输过程的正常抖动而言越大,即当前视频帧相对于其基准时刻的延迟越大。换言之,当前视频帧存在突发抖动。基于此,可以根据所述当前抖动时长的大小确定其是否满足峰值拉伸条件。具体的,可以在所述当前视频帧满足下述至少之一的情况下确定其满足峰值拉伸条件。

例如,可以在所述当前抖动时长不小于当前时刻的随机抖动时长的倍数阈值的情况下,确定所述当前视频帧满足峰值拉伸条件。不妨假设当前时刻的当前抖动时长为T,随机抖动时长为T0,则在通过前述方式确定的T≥k*T0(其中k不小于1)的情况下,可以确定当前视频帧满足峰值拉伸条件。其中,所述倍数阈值可以根据目标视频的帧率(Frame Rate)、分辨率等实际情况进行设置,本公开实施例对此并不进行限制。如所述k可以与目标视频的帧率呈负相关(即目标视频的帧率越高则k设置得越小,帧率越低则k设置得越大),或者与目标视频的分辨率(分辨率越高通常单张视频帧的数据量越大,抖动可能越大)成正相关(即目标视频的分辨率越高则k设置得越大,分辨率越低则k设置得越小)等。示例性的,所述k可以等于3、6、4等。

再例如,可以在所述当前抖动时长与当前时刻的随机抖动时长之间的差值(即T-T0)不小于第一时长阈值的情况下,确定所述当前视频帧满足峰值拉伸条件。示例性的,所述第一时长阈值可以为200ms,300ms,280ms等。又例如,也可以在所述当前抖动时长不小于第二时长阈值的情况下,确定所述当前视频帧满足峰值拉伸条件。其中,上述第一时长阈值和第二时长阈值均可以根据实际情况预先设置,与前述倍数阈值类似的,所述第一时长阈值和第二时长阈值也可以分别根据目标视频的帧率和分辨率等参数进行设置,如分别与目标视频的帧率呈负相关、分别与目标视频的分辨率呈正相关等,不再赘述。

另外需要说明的是,在当前抖动时长满足上述至少之一的情况下,即可确定所述当前视频帧满足峰值拉伸条件。以前述倍数阈值和第一时长阈值为例,假设预先设置倍数阈值对应的k=4,第一时长阈值为280ms,则在当前时刻的随机抖动时长T0=100ms(此时k*T0=400ms)的情况下,若通过前述方式确定出的当前抖动时长T=260ms,则可以确定当前抖动时长不满足峰值拉伸条件(因为此时T<280ms且T<400ms);或者,若通过前述方式确定出的当前抖动时长T=350ms,则可以确定当前抖动时长满足峰值拉伸条件(因为此时T>280ms);再或者,若通过前述方式确定出的当前抖动时长T=460ms,则可以确定当前抖动时长满足峰值拉伸条件(因为此时T>280ms且T>400ms)。

通过前述方式可以确定当前抖动时长是否满足峰值拉伸条件,而在满足的情况下,视频播放设备可以将抖动缓冲队列的缓冲时长调整为所述当前视频帧对应的最大抖动时长。对此,视频播放设备需要先确定所述最大抖动时长。作为一示例性实施例,可以将所述当前抖动时长确定为所述最大抖动时长。由前述判断条件可知,当前抖动时长满足峰值拉伸条件即表明当前抖动时长已经足够大,所以此时可以将该时长直接作为最大抖动时长。

实际上,即便是在突发型弱网的网络环境下,抖动时长也有可能在短时间内接收到抖动时长较大的多个视频帧。对此,作为另一示例性实施例,视频播放设备若在所述接收时刻之前的淘汰时间段内还接收到满足所述峰值拉伸条件的至少一张视频帧,则可以将所述当前抖动时长和所述至少一张视频帧各自的抖动时长之间的最大值确定为所述最大抖动时长。通过该方式,可以在所述当前抖动时长和(包括当前时刻在内的)淘汰时间段内接收到的抖动时长较大的多个视频帧分别对应的抖动时长中确定真正的最大值,并将该最大值作为所述最大抖动时长。通过该方式,可以确保所述当前视频帧和抖动时长较大的所述多个视频帧均能够在抖动缓冲队列中等待相应的时长后再输出,从而在该网络环境下以尽量少的存储空间换取视频播放过程的流畅度。

另外,任一时刻的最大抖动时长均可以为预设时长,或者通过卡尔曼算法计算得到,具体可以参见前述实施例的记载,此处不再赘述。

图2示意性地示出了根据本公开实施例的一种缓冲时长调整过程的示意图。如图2所示,横坐标表示时间(对应于本方案所述的各个时刻),纵坐标表示时长(对应于本方案所述的各个时长)。视频播放设备接收到的各张视频帧的抖动时长通过波形图示出,所述波形图中不同波峰的峰值高度用于表征视频播放设备接收到的各个视频帧的抖动时长。但所述表征仅是示意性的,各个波峰在纵轴上对应的实际时长没有具体的物理含义,也不表示相应抖动时长的具体值,特此说明。

其中,[0,t1]时间段内接收到三张视频帧,各张视频帧的抖动时长均为随机抖动时长,在该时间段内,抖动缓冲队列的缓冲时长始终为相应的随机抖动时长T0(该取值仅是示例性的,缓冲时长在调整前的取值可以为任何值)。视频播放设备在t1时刻(即当前时刻)接收到当前视频帧,并检测出其当前抖动时长满足峰值拉伸条件,则可以从t1时刻开始将抖动缓冲队列的缓冲时长调整为当前视频帧对应的最大抖动时长Tmax。

在调整所述缓冲时长完成后,所述当前视频帧将在抖动缓冲队列中等待所述最大抖动时长之后被输出至显示组件进行渲染显示。需要说明的是,无论对抖动缓冲队列的缓冲时长调整与否,抖动缓冲队列中存入的各个视频帧均会被按照相应的播放间隔依次输出至显示组件。

步骤S106,若在所述缓冲时长调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则将所述抖动缓冲队列的缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长,所述随机抖动时长小于所述最大抖动时长。

在调整缓冲时长完成后,该缓冲时长的大小即为所述最大抖动时长,抖动缓冲队列即处于峰值拉伸状态。可以理解的是,缓冲时长越大,抖动缓冲队列所占用的存储空间(如较为宝贵的内存空间)也越多。考虑到抖动缓冲队列通常设置在视频播放设备的内存中,因此为了尽量节省存储空间,可以在突发抖动结束的情况下将缓冲时长的大小调整得更小,以便回收抖动缓冲队列占用的存储空间,同时缩短视频播放过程中存在的延迟。

其中,若视频播放设备在所述缓冲时长调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则可以确定所述当前视频帧对应的突发抖动已经结束,此时可以将所述抖动缓冲队列的缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长,该随机抖动时长小于所述最大抖动时长,从而使得调整后的缓冲时长(此时大小为所述随机抖动时长)小于调整前的缓冲时长(此时大小为所述最大抖动时长)。

另外,若在所述缓冲时长调整后的维持时间段内接收到满足所述峰值拉伸条件的(至少一个)新视频帧,则可以确定所述当前视频帧对应的突发抖动尚未结束,视频播放设备可以响应于所述新视频帧进一步调整所述缓冲时长,如可以将缓冲时长由所述最大抖动时长调整为新的最大抖动时长——所述新的最大抖动时长可能大于也可能小于所述最大抖动时长(二者相等时无需调整)。其中,针对所述新视频帧的判断和针对缓冲时长的相应跳针过程与前述实施例并无本质区别,可以参见前述实施例的记载,此处不再赘述。

其中,所述维持时间段的起点为所述当前时刻(即将所述缓冲时长调整为所述当前抖动时长的时刻),所述维持时间段的时间长度记为维持时长。如图2所示,维持窗口的长度t2-t1即为所述维持时间段的维持时长。

可以理解的是,维持时长的大小决定了后面发生突发抖动时抖动缓冲队列是否处于峰值拉伸状态,因此维持时长的大小非常关键,若维持时长太小,发生突发抖动时抖动缓冲队列没有处于峰值拉伸状态,容易产生卡顿。若维持窗口太大,大部分时间可能都没有突发抖动,反而带来了较大的延时副作用,得不偿失。对此,所述维持时长可以为预设时长,如4s、10s、5s等。或者,所述维持时长也可以为数据平台下发的期望维持时长。

其中,数据平台可以按照固定周期下发所述期望维持时长,这样视频播放设备可以在每次接收到新的期望维持时长后使用该时长替换本地已经保存的(上一次接收到的)期望维持时长。基于此,视频播放设备可以在所述当前时刻将本地保存的期望维持时长确定为所述维持时间段的维持时长。采用该方式,数据平台可以按照较长的固定周期有计划的下发所述预期维持时长。或者,视频播放设备也可以在所述当前时刻(或该时刻之后的一段时间内)向数据平台发送时长获取请求,并接收数据平台响应于该请求下发的期望维持时长,然后将该时长确定为所述维持时间段的维持时长。采用该方式,视频播放设备在每次需要维持时长时都可以从数据平台直接获取最新版本的维持时长,有助于实现维持时间段的及时更新。

数据平台可以获取多个视频播放设备分别上传的样本数据,并基于所述样本数据统计所述期望维持时长并下发至相应的视频播放设备。其中,所述视频播放设备可以将播放所述目标视频的过程中产生的卡顿时长上传至所述数据平台——所述卡顿时长即被视频播放设备作为自身产生的样本数据。相应的,所述数据平台可以统计多个视频播放设备分别上传的卡顿时长得到至少一个统计维度下的期望维持时长,该期望维持时长即可被数据平台用于下发至满足相应统计维度的视频播放设备。在播放目标视频的过程中,视频播放设备可以在每次产生卡顿之后确定相应的卡顿时长,该时长可以包括卡顿现象的持续时长、卡顿产生时维持时间段的维持时长和/或卡顿所对应视频帧的抖动时长等。所述统计维度可以包括视频的帧率、分辨率(4K、1080p等)、格式(mp4、avi等)等,也可以包括视频播放设备的网络类型(有线、无线等)、应用程序(即APP)、地理位置、运营商等。在方案实现中,上述卡顿时长和统计维度可以根据实际情况进行合理设置,本公开实施例对此并不进行限制。

其中,样本数据的上传可以由前述SDK完成。图3示意性地示出了根据本公开实施例的一种样本上传过程的示意图。如图3所示,SDK1、SDK2……SDKn可以分别运行在不同的视频播放设备中,各个SDK分别采集自身所处视频播放设备在播放视频过程中产生的卡顿时长,并将其作为样本数据分别上传至数据平台。其中,所述SDK可以具有RTC(Real TimeCl ock,实时时钟)功能,视频播放设备可以基于该功能实现与数据平台的前述数据交互过程。另外,所述SDK还可以同时上传样本数据所对应的维度信息,以用于向数据平台表明所述样本数据适用于属于哪些统计维度。相应的,数据平台在获取到多个SDK分别上传的样本数据后,可以按照前述统计维度进行统计,以得到至少一个统计维度下的期望维持时长。例如,可以按天统计出各维度发生卡顿的间隔,并对所有卡顿间隔按照时长进行排序,取TOP95值(或者也可以为中位数、平均值等)作为典型卡顿间隔值。

进而,在接收到任一统计维度下的任一视频播放设备发起的时长获取请求,或者固定周期到来时,数据中心可以将任一统计维度下的典型卡顿间隔值下发至所述任一视频播放设备,以由该设备将其作为自身的预期维持时长。需要说明的是,任一统计维度下的期望维持时长可以被下发至该维度下的各个视频播放设备使用,而且应当尽量避免将其下发至其他统计维度下的视频播放设备,以确保各个视频播放设备所使用期望维持时长的合理性,从而保证后期抖动缓冲队列的去抖效果和视频播放设备的视频播放性能。

通过上述方式,视频播放设备可以源源不断地上报数据,数据平台进行数据加工整理得到合适的典型卡顿间隔值下发给视频播放设备,如此形成了收集、决策、反馈、执行的闭环链路。一旦视频传输网络发生变化,通过这一闭环系统接口动态感知网络变化并下发合适的典型卡顿间隔值,从而达到自适应调节抖动缓冲队列的缓冲时长的效果,能够以最高的性价比满足流畅和延时需求。

可以理解的是,所述缓冲时长是抖动缓冲队列的一个参数,因此调整缓冲时长的过程实际上就是调整该参数的过程。在一实施例中,视频播放设备在将所述缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长的过程中,可以瞬间完成所述调整,即一次性地将所述缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长。但是,由于在本次调整前抖动缓冲队列中可能存储有尚未输出的视频帧(这部分视频帧可能包含所述当前视频帧),因此瞬间调整所述缓冲时长可能导致这部分视频帧在短时间内(如瞬间)输出至显示组件,从而可能造成视频呈现出的加速(或称快进)播放的效果,甚至导致显示组件渲染和显示出错。

对此,视频播放设备可以通过匀速调整所述缓冲时长避免上述问题。如视频播放设备可以根据所述最大抖动时长和当前时刻的随机抖动时长,确定在收敛时间段内的调整速率;然后在所述收敛时间段内,按照该调整速率将缓冲时长由所述最大抖动时长匀速调整为当前时刻的随机抖动时长。考虑到抖动缓冲队列中的各个视频帧是以一个视频帧为单位逐一输出抖动缓冲队列的,所以在匀速调整的过程中,可以以相邻两个视频帧输出队列的播放间隔为步长进行调整。

如图2所示,在收敛窗口内完成上述调整,该收敛窗口的长度t3-t2即为调整所需的时间。其中,t3与t3时刻的随机抖动时长相同,均为T0,因此在调整完成后,缓冲时长在t3时刻被调整(即恢复)为T0。

示例性的,假设本地调整需要将缓冲时长由600ms(即当前抖动时长)调整为480ms(即当前时刻的随机抖动时长),且本次调整之前抖动缓冲队列中存在三张视频帧(按照输出的先后顺序依次为视频帧1、2和3),相邻视频帧的输出播放间隔分别为40ms(帧率为25fps)。对此,视频播放设备可以按照下述过程调整:在视频帧1输出后,将缓冲时长由600ms调整为560ms;在视频帧2输出后,将缓冲时长由560ms调整为520ms;在视频帧3输出后,将缓冲时长由520ms调整为480ms。可见,上述调整过程分三步(分别对应于三张视频帧)匀速完成。需要特别说明的是,假设所述视频帧1与视频帧2的播放间隔是50ms、视频帧2与视频帧3的播放间隔是45ms;则视频播放设备可以按照下述过程调整:在视频帧1输出后,将缓冲时长由600ms调整为550ms;在视频帧2输出后,将缓冲时长由550ms调整为505ms;在视频帧3输出后,将缓冲时长由505ms调整为480ms。在该调整过程中,虽然每一步调整的步长并不相同,但也应当视为匀速调整,该实施例同样不超出本实施例的保护范围。

在一实施例中,在调整缓冲时长之前或之后的任意时刻,视频播放设备可以按照相应的播放间隔将所述抖动缓冲队列内的各张视频帧顺序输出至所述显示组件,以播放所述目标视频。可以理解的是,视频播放设备接收到的视频帧输入抖动缓冲队列与从该队列中输出视频帧互不影响,即视频帧输入和输出抖动缓冲队列的过程是相互独立、异步进行的。基于此,即便在当前视频帧存在较大延迟的情况下也能够顺利播放目标视频。

其中,对于视频播放设备接收到的各张视频帧,其接收顺序与发送方发送各张视频帧的顺序(该顺序通过各张视频帧的序列号体现)可能并不一致,即视频帧可能存在乱序。而在视频播放设备将接收到的各张视频帧依次输入抖动缓冲队列后,显然各张视频帧仍然存在乱序。此时,若直接按照各张视频帧的输入顺序依次输出,可能导致画面混乱甚至无法播放等异常。

对此,基于所述抖动缓冲队列内的各张视频帧分别存在的相应的序列号,视频播放设备可以判断所述各张视频帧在所述抖动缓冲队列内的排列顺序与所述各张视频帧的序列号大小顺序是否相同:若两顺序不同,则可以对所述各张视频帧进行乱序重组处理,以将所述各张视频帧的排列顺序调整为与所述序列号大小顺序相同,进而可以按照该大小顺序依次输出各张视频帧,以便显示组件顺序显示。当然,若两顺序相同,则表明所述多张视频帧不存在乱序,此时无需进行乱序重组,只需要顺序输出各张视频帧即可。

在输出各张视频帧的过程中,视频播放设备可以通过多种方式确定相邻两张视频帧之间的播放间隔。例如,视频播放设备可以将预设的播放步长确定为相邻两张视频帧之间的播放间隔。此时,所述目标视频的多张视频帧中的相邻两张视频帧之间的播放间隔都相同,所以目标视频被按照固定帧率播放。再例如,考虑到目标视频的拍摄帧率可能并非固定值(即该视频在拍摄阶段采用变化的帧率),视频播放设备也可以先确定所述目标视频的帧率,再根据该帧率计算所述相邻两张视频帧之间的播放间隔。通过该方式,可以确保目标视频实际播放过程中的播放帧率与其拍摄过程中的拍摄帧率保持一致,从而能够尽量呈现出目标视频的最佳播放效果。

至此,对本公开所述的抖动缓冲队列的调整方法介绍完毕。通过前述实施例,视频播放设备可以在当前视频帧的当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述最大抖动时长,确保当前视频帧在抖动缓冲队列中等待最大抖动时长后再被输出显示。可以理解的是,所述当前视频帧是目标视频中的任一视频帧,因此视频播放设备可以逐一判断目标视频的各张视频帧是否满足上述峰值拉伸条件,并根据其中满足该条件的视频帧相应的调整抖动缓冲队列的缓存时长。

根据本公开实施例的抖动缓冲队列的调整方法,即便是在突发型弱网的场景下,存在个别(数量稀疏)视频帧的当前抖动时长瞬间增大,视频播放设备仍然能够根据该视频帧及时调整抖动缓冲队列的缓存时长。而且调整后的抖动缓冲队列中的各个视频帧的输出时刻也会被相应的调整,所以能够在确保包括当前视频帧在内的各个视频帧的显示时刻尽量均匀,避免出现明显的卡顿感,实现抖动缓冲队列的预期功能。

在介绍了本公开示例性实施例的方法之后,接下来,参考图4对本公开示例性实施例的介质进行说明。

本示例性实施例中,可以通过程序产品实现上述方法,如可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,该存储器可以在设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读介质40可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

该程序产品可以采用一个或多个可读介质的任意组合。可读介质40可以是可读信号介质或者可读介质。可读介质40例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质40上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RE等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

在介绍了本公开示例性实施例的介质之后,接下来,参考图5对本公开示例性实施例的装置进行说明。关于下述装置,其中各个功能模块执行操作的具体方式以及执行操作后所实现的具体功能,均已在抖动缓冲队列的调整方法的前述各实施例中进行了详细描述,此处不再详细阐述说明。

图5示意性地示出了根据本公开实施例的一种抖动缓冲队列的调整装置的框图。该抖动缓冲队列的调整装置可以包括:

视频帧输入模块501,用于响应于接收到目标视频的当前视频帧,将所述当前视频帧输入抖动缓冲队列,并将所述当前视频帧的接收时刻与所述当前视频帧对应的基准时刻之间的差值确定为所述当前视频帧的当前抖动时长;

第一调整模块502,用于在所述当前抖动时长满足峰值拉伸条件的情况下,将抖动缓冲队列的缓冲时长调整为所述当前视频帧对应的最大抖动时长,以使所述当前视频帧在所述抖动缓冲队列中等待所述最大抖动时长后被输出至显示组件,其中,所述最大抖动时长不小于所述当前抖动时长;

第二调整模块503,用于若在所述缓冲时长调整后的维持时间段内未接收到满足所述峰值拉伸条件的视频帧,则将所述抖动缓冲队列的缓冲时长由所述最大抖动时长调整为当前时刻的随机抖动时长,所述随机抖动时长小于所述最大抖动时长。

可选的,所述视频帧输入模块501具体用于:

在接收到包含同一序列号的多个图像数据包的情况下,将所述多个图像数据包重组为该序列号对应的所述当前视频帧。

可选的,所述当前抖动时长满足峰值拉伸条件,包括:所述当前视频帧满足下述至少之一,或者所述当前视频帧和在所述接收时刻之前的淘汰时间段内接收到的至少一个其他视频帧分别满足下述至少之一:

所述当前抖动时长不小于当前时刻的随机抖动时长的倍数阈值;

所述当前抖动时长与当前时刻的随机抖动时长之间的差值不小于第一时长阈值;

所述当前抖动时长不小于第二时长阈值。

可选的,还包括时长确定模块504,用于:

将所述当前抖动时长确定为所述最大抖动时长;或者,

若在所述接收时刻之前的淘汰时间段内还接收到满足所述峰值拉伸条件的至少一张视频帧,则将所述当前抖动时长和所述至少一张视频帧各自的抖动时长之间的最大值确定为所述最大抖动时长。

可选的,还包括视频帧输出模块505,用于:

按照相应的播放间隔将所述抖动缓冲队列内的各张视频帧顺序输出至所述显示组件,以播放所述目标视频。

可选的,所述抖动缓冲队列内的各张视频帧分别存在相应的序列号,所述装置还包括乱序重组模块506,用于:

若所述各张视频帧在所述抖动缓冲队列内的排列顺序与所述各张视频帧的序列号大小顺序不同,则对所述各张视频帧进行乱序重组处理,以将所述各张视频帧的排列顺序调整为与所述序列号大小顺序相同。

可选的,所述视频帧输出模块505具体用于:

将预设的播放步长确定为所述相邻两张视频帧之间的播放间隔;或者,

确定所述目标视频的帧率,并根据所述帧率计算所述相邻两张视频帧之间的播放间隔。

可选的,所述第二调整模块503具体用于:

根据所述最大抖动时长和当前时刻的随机抖动时长,确定在收敛时间段内的调整速率;

在所述收敛时间段内,按照所述调整速率将所述缓冲时长由所述最大抖动时长匀速调整为当前时刻的随机抖动时长。

可选的,所述当前时刻的随机抖动时长为预设的固定时长;或者通过卡尔曼滤波算法对接收到的所述目标视频的各个视频帧进行计算得到。

可选的,所述维持时间段的维持时长为预设时长,或者为数据平台下发的期望维持时长。

可选的,还包括样本上传模块507,用于:

将播放所述目标视频的过程中产生的卡顿时长上传至所述数据平台,以由所述数据平台统计多个视频播放设备分别上传的卡顿时长得到至少一个统计维度下的期望维持时长,所述期望维持时长被所述数据平台用于下发至满足相应统计维度的视频播放设备。

在介绍了本公开示例性实施例的方法、介质和装置之后,接下来,参考图6对本公开示例性实施例的计算设备进行说明。

图6显示的计算设备60仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图6所示,计算设备60以通用计算设备的形式表现。计算设备60的组件可以包括但不限于:上述至少一个处理单元601、上述至少一个存储单元602,连接不同系统组件(包括处理单元601和存储单元602)的总线603。

总线603包括数据总线、控制总线和地址总线。

存储单元602可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)6021和/或高速缓存存储器6022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(ROM)6023。

存储单元602还可以包括具有一组(至少一个)程序模块6024的程序/实用工具6025,这样的程序模块6024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算设备60也可以与一个或多个外部设备604(例如键盘、指向设备等)通信。

这种通信可以通过输入/输出(I/O)接口605进行。并且,计算设备60还可以通过网络适配器606与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图6所示,网络适配器606通过总线603与计算设备60的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备60使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了抖动缓冲队列的调整装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施例描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施例,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

技术分类

06120115687115