视频预加载的方法和装置

文档序号:721965 发布日期:2021-04-16 浏览:10次 >En<

阅读说明:本技术 视频预加载的方法和装置 (Video preloading method and device ) 是由 马茗 蒋鹏程 刘震岳 郭君健 于 2020-12-09 设计创作,主要内容包括:本公开关于一种视频预加载的方法和装置,所述方法包括:当在客户端正在播放和下载当前视频时,基于当前视频的播放码率,确定带宽阈值;预测客户端在未来的预定时间段内的下载带宽,并在预测的下载带宽大于所述带宽阈值的情况下,在未来的所述预定时间段内执行待播放视频的预加载任务。(The present disclosure relates to a method and an apparatus for video preloading, the method comprising: when a current video is played and downloaded at a client, determining a bandwidth threshold value based on the playing code rate of the current video; predicting the downloading bandwidth of the client in a future preset time period, and executing a preloading task of the video to be played in the future preset time period under the condition that the predicted downloading bandwidth is larger than the bandwidth threshold.)

视频预加载的方法和装置

技术领域

本公开涉及音频技术领域,更具体地说,涉及一种视频预加载的方法和装置。

背景技术

在日益流行的短视频应用服务中,给用户流畅的视频观看体验是一个挑战。一方面,由于用户网络的动态性和手机性能的差异性,很多网络差或手机性能差的用户在观看视频时会频繁卡顿,很难顺利的播放高清视频,另一方面,用户在使用短视频应用时,通常处于快速消费内容的状态,有很强的观看体验诉求,需要视频“秒开、流畅”。为了给用户流畅的视频观看体验,短视频客户端通常会配置内容预取装置,即,在用户在使用视频app时,预估将来用户会观看的视频内容集合,提前预取这些视频的一小段数据到客户端,让用户在后续浏览到时直接用这部分本地数据启播,获取流畅的视频观看体验。但目前为了避免预加载任务带来的网络竞争侵占当前视频下载带宽,造成播放卡顿率提升等体验恶化问题,很大程度地牺牲了预加载效率,满足不了视频“秒开、流畅”的用户体验需求。

发明内容

本公开提供一种视频预加载的方法和装置,以至少解决上述相关技术中的问题,也可不解决任何上述问题。

根据本公开实施例的第一方面,提供一种视频预加载的方法,包括:当在客户端正在播放和下载当前视频时,基于当前视频的播放码率,确定带宽阈值;预测客户端在未来的预定时间段内的下载带宽,并在预测的下载带宽大于所述带宽阈值的情况下,在未来的所述预定时间段内执行待播放视频的预加载任务。

可选地,所述方法还可包括:在预测的下载带宽小于或等于所述带宽阈值的情况下,在未来的所述预定时间段内暂停待播放视频的预加载任务。

可选地,所述基于当前视频的播放码率,确定带宽阈值,可包括:将当前视频的播放码率与预定系数相乘,获得所述带宽阈值;其中,所述预定系数为大于1的常数。

可选地,所述预测客户端在未来的所述预定时间段内的下载带宽,可包括:获取历史的每个所述预定时间段内的实际下载带宽;基于历史的每个所述预定时间段内的实际下载带宽,使用指数滤波来预测在未来的所述预定时间段内的下载带宽。

可选地,所述获取历史的每个所述预定时间段内的实际下载带宽,可包括:针对历史的每个所述预定时间段执行以下操作:获取当前的所述预定时间段内的总下载数据量;将所述总下载数据量除以所述预定时间段的时长,获得当前的所述预定时间段内的实际下载带宽。

可选地,所述方法还可包括:当在客户端正在播放和下载当前视频时,实时获取当前视频在客户端中加载的视频缓存时长;其中,所述在预测的下载带宽大于所述带宽阈值的情况下,在所述未来预定时间段内执行待播放视频的预加载任务,可包括:在视频缓存时长小于预定缓存时长阈值的情况下,暂停待播放视频的预加载任务;在视频缓存时长大于或等于预定缓存时长阈值的情况下,执行待播放视频的预加载任务。

可选地,所述预定缓存时长阈值可包括第一缓存时长阈值,其中,所述在视频缓存时长小于预定缓存时长阈值的情况下,暂停待播放视频的预加载任务,在视频缓存时长大于或等于预定缓存时长阈值的情况下,执行待播放视频的预加载任务,可包括:当在客户端刚开始播放并下载当前视频时,在视频缓存时长尚未达到第一缓存时长阈值的情况下,暂停待播放视频的预加载任务,直到视频缓存时长达到第一缓存时长阈值时,恢复执行待播放视频的预加载任务。

可选地,所述预定缓存时长阈值可包括第二缓存时长阈值,其中,所述在视频缓存时长小于预定缓存时长阈值的情况下,暂停待播放视频的预加载任务,在视频缓存时长大于或等于预定缓存时长阈值的情况下,执行待播放视频的预加载任务,可包括:当在当前视频的缓存时长已达到过第一缓存时长阈值之后在客户端继续播放并下载当前视频时,在视频缓存时长小于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务,在视频缓存时长大于或等于第二缓存时长阈值的情况下,执行待播放视频的预加载任务。

可选地,第一缓存时长阈值可大于第二缓存时长阈值。

可选地,所述在视频缓存时长小于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务,在视频缓存时长大于或等于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务,可包括:在视频缓存时长减小至小于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务,直到视频缓存时长增大至达到第二缓存时长阈值时,恢复执行待播放视频的预加载任务。

可选地,所述方法还可包括:在暂停待播放视频的预加载任务的情况下,在当前视频在客户端下载完成时,恢复执行待播放视频的预加载任务。

可选地,每隔所述预定时间段可执行所述预测客户端在未来的预定时间段内的下载带宽,并在预测的下载带宽大于所述带宽阈值的情况下,在未来的所述预定时间段内执行待播放视频的预加载任务的操作。

根据本公开实施例的第二方面,提供一种视频预加载的装置,包括:带宽控制单元,被配置为:当在客户端正在播放和下载当前视频时,基于当前视频的播放码率,确定带宽阈值;预加载单元,被配置为:预测客户端在未来的预定时间段内的下载带宽,并在预测的下载带宽大于所述带宽阈值的情况下,在未来的所述预定时间段内执行待播放视频的预加载任务。

可选地,预加载单元还可被配置为:在预测的下载带宽小于或等于所述带宽阈值的情况下,在未来的所述预定时间段内暂停待播放视频的预加载任务,直到当前视频下载完成时,恢复执行待播放视频的预加载任务。

可选地,带宽控制单元可被配置为:将当前视频的播放码率与预定系数相乘,获得所述带宽阈值;其中,所述预定系数为大于1的常数。

可选地,预加载单元可被配置为:获取历史的每个所述预定时间段内的实际下载带宽;基于历史的每个所述预定时间段内的实际下载带宽,使用指数滤波来预测在未来的所述预定时间段内的预测下载带宽。

可选地,预加载单元可被配置为:针对历史的每个所述预定时间段执行以下操作:获取当前的所述预定时间段内的总下载数据量;将所述总下载数据量除以所述预定时间段的时长,获得当前的所述预定时间段内的实际下载带宽。

可选地,所述装置还可包括:缓存获取单元,被配置为:当在客户端正在播放和下载当前视频时,实时获取当前视频在客户端中加载的视频缓存时长;其中,预加载单元可被配置为:在视频缓存时长小于预定缓存时长阈值的情况下,暂停待播放视频的预加载任务,在视频缓存时长大于或等于预定缓存时长阈值的情况下,执行待播放视频的预加载任务。

可选地,所述预定缓存时长阈值可包括第一缓存时长阈值,其中,预加载单元可被配置为:当在客户端刚开始播放并下载当前视频时,在视频缓存时长尚未达到第一缓存时长阈值的情况下,暂停待播放视频的预加载任务,直到视频缓存时长达到第一缓存时长阈值时,恢复执行待播放视频的预加载任务。

可选地,所述预定缓存时长阈值可包括第二缓存时长阈值,其中,预加载单元可被配置为:当在当前视频的缓存时长已达到过第一缓存时长阈值之后在客户端继续播放并下载当前视频时,在视频缓存时长小于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务,在视频缓存时长大于或等于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务。

可选地,第一缓存时长阈值可大于第二缓存时长阈值。

可选地,预加载单元可被配置为:在视频缓存时长减小至小于第二缓存时长阈值的情况下,暂停待播放视频的预加载任务,直到视频缓存时长增大至达到第二缓存时长阈值时,恢复执行待播放视频的预加载任务。

可选地,预加载单元还可被配置为:在暂停待播放视频的预加载任务的情况下,在当前视频在客户端下载完成时,恢复执行待播放视频的预加载任务。

可选地,预加载单元可被配置为:每隔所述预定时间段执行所述预测客户端在未来的预定时间段内的下载带宽,并在预测的下载带宽大于所述带宽阈值的情况下,在未来的所述预定时间段内执行待播放视频的预加载任务的操作。

根据本公开实施例的第三方面,提供一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的视频预加载的方法。

根据本公开实施例的第四方面,提供一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的视频预加载的方法。

根据本公开实施例的第五方面,提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的视频预加载的方法。

本公开的实施例提供的技术方案至少带来以下有益效果:

根据本公开的视频预加载的方法和装置,可在客户端正在下载当前视频时,基于客户端的网速来确定是否执行预加载任务,当用户网速较低时,可以及时暂停预加载,避免预加载任务对当前视频播放下载任务的带宽抢占问题,保障当前播放作品的流畅性的同时,提高预加载效率。

此外,根据本公开的视频预加载的方法和装置,可在客户端正在下载当前视频时,基于客户端的网速和播放器缓存的状态来确定是否执行预加载任务,当用户网速足够、播放器缓存状态足够健康时,允许持续提交预加载任务,在更充分更可靠地保障当前播放作品的流畅性的同时,提高预加载效率和后续作品的启播体验。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。

图1是示出根据本公开的视频预加载的方法和装置的实施场景图。

图2是示出根据本公开示例性的视频预加载的方法的流程图。

图3是示出根据本公开的示例性实施例的视频预加载的决策示意图。

图4是示出根据本公开的示例性实施例的视频预加载的装置的框图。

图5是示出根据本公开的另一示例性实施例的视频预加载的装置的框图。

图6是根据本公开的示例性实施例的电子设备600的框图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。

用户在短视频app使用过程中,会正常的观看短视频或直播,以及浏览推荐的作品封面图等,从而产生各种网络请求,另外,客户端通常会配置有短视频多码率策略,对于同一个视频,会根据客户端网速为用户选择一个清晰度档位。那么在这些场景下,同时进行短视频预加载任务,其产生的网络流量,会一起竞争客户端的带宽。因此,在视频预加载装置中,预取作品的时机至关重要。需要设计一个很好的短视频预加载调度装置,既能不影响当前用户使用体验,避免预加载任务带来的网络竞争侵占当前视频下载带宽,造成播放卡顿率提升等体验恶化问题,或者造成多码率档位决策偏低的问题;又能最大程度的保证视频预加载完成率,在后续用户点到这些作品时达到秒开的效果。

目前的视频预加载策略为:为保障当前短视频完全不受视频预加载任务的网速竞争干扰,客户端等待当前视频完全下载完后,才按照后续待播放的推荐视频作品列表中的视频作品顺序依次进行后续待播放作品的预加载。目前的视频预加载策略无法最高效率的进行视频预加载任务,只要当前有视频下载,就无条件的暂停预加载任务。例如,在短视频下载播放页面,哪怕用户网速再高,可以支持视频下载和短视频预加载两类任务同时进行,也不会启动预加载。又例如,在直播页面的场景,就完全无法启动视频预加载工作。又例如,当前视频如果用户并不看完的话,强制要求当前视频全部下载完,对带宽也会存在浪费问题。

为了解决预加载效率和视频播放体验的平衡问题,在不影响用户当前观看体验的情况下,提高预加载效率,满足用户对点击的视频作品达到秒开的需求,并能够有效地利用带宽,不浪费带宽,本公开提供了一种新颖的视频预加载的方法和装置。具体地说,本公开设计了考虑客户端的网速的预加载任务调度方法,当客户端的网速达到了某阈值时才执行预加载任务,否则暂停预加载任务。此外,本公开设计了除了考虑客户端的网速还考虑当前观看视频在客户端的播放器中的缓存时长的预加载任务调度方法,当客户端的网速达到了某阈值并且当前观看视频在客户端的播放器中的缓存时长达到了某阈值时才执行预加载任务,否则暂停预加载任务,从而充分保障播放体验无损的情况下,最优化了预加载效率。下面,将参照图1至图6来描述根据本公开的示例性实施例的视频预加载的方法和装置。

图1是示出根据本公开的视频预加载的方法和装置的实施场景图。

参照图1,当用户在用户终端(例如,手机103_1、台式电脑103_2、平板电脑103_3等)使用短视频应用客户端通过网络102向服务器101请求观看短视频或直播等内容时,服务器101可通过网络102向用户终端103_1、103_2或103_3发送请求的短视频或直播等内容,用户可通过短视频应用客户端观看短视频或直播等内容。与此同时,短视频应用客户端可根据用户的观看习惯、兴趣点信息等用户信息,生成一个推荐视频作品列表,供用户后续点击或滑动观看。为了保证用户后续点击或滑动观看视频作品时能够达到秒开、流畅的用户体验,用户终端103_1、103_2或103_3中的短视频应用客户端可提前通过网络102向服务器101请求将推荐视频作品列表中的一些视频作品的一小段数据发送到短视频应用客户端,服务器101在接收到该请求后,可向用户终端103_1、103_2或103_3中的短视频应用客户端发送请求的视频数据。在这样的场景下,可应用根据本公开的视频预加载的方法和装置,既保证当前视频播放体验,又提高视频预加载的效率,从而向用户提供秒开、流畅的用户体验。

图2是示出根据本公开示例性的视频预加载的方法的流程图。

参照图2,在步骤201,当在客户端正在播放和下载当前视频时,可基于当前视频的播放码率,确定带宽阈值。这里,在客户端从发送端(例如,服务器端)接收视频(例如,短视频内容或直播内容等)时,可获取到视频的播放码率。例如,在服务器端可通过转码生成各种码率的视频内容,客户端可根据当前网络选择一个清晰度档位,并从服务器端接收相应码率的视频内容。

为了保障用户流畅的播放视频或者观看直播,可针对待播放视频的预加载任务设置一个带宽阈值client_bw_rigid_demand,即,当客户端的网速(或下载带宽)client_bw达到该带宽阈值client_bw_rigid_demand时,才可执行待播放视频的预加载任务。为了保证当前视频播放不卡顿,带宽阈值client_bw_rigid_demand至少要等于视频(例如,短视频内容或直播内容等)的播放码率video_bitrate。或者,带宽阈值client_bw_rigid_demand要大于视频(例如,短视频内容或直播内容等)的播放码率video_bitrate。

根据本公开的示例性实施例,可将当前视频的播放码率video_bitrate与预定系数discount_coefficient相乘,获得带宽阈值client_bw_rigid_demand,即,client_bw_rigid_demand=video_bitrate×discount_coefficient。这里,预定系数discount_coefficient可以是大于1的常数。例如,当前正在播放的短视频播放码率为3mbps,那么为保障播放不卡顿,那么至少要为其预留3mbps×discount_coefficient的带宽,也就是说,带宽阈值client_bw_rigid_demand可被设置为3mbps×discount_coefficient。这里,预定系数discount_coefficient可以是,但不限于,2。

根据本公开的另一示例性实施例,也可将带宽阈值client_bw_rigid_demand确定为大于当前视频的播放码率video_bitrate与预定系数discount_coefficient相乘的结果,即,client_bw_rigid_demand>video_bitrate×discount_coefficient,从而可充分保证当前视频播放不卡顿。

由于客户端的网速(或下载带宽)是实时波动的,因此无法确切地确定客户端的未来的下载带宽是否达到该带宽阈值。因此,在步骤202,可预测客户端在未来的预定时间段内的下载带宽。

根据本公开的示例性实施例,可每隔预定时间段Ts(例如,但不限于,60秒)就统计并记录一次客户端的下载带宽client_bw。具体地说,每隔预定时间段Ts,可获取在该预定时间段Ts内的总下载数据量amount_of_data,将获取到的总下载数据量除以预定时间段Ts的时长(即,总下载耗时T),获得该预定时间段Ts内的实际下载带宽client_bw。即,client_bw=amount_of_data/T。通过该方法可统计并记录客户端在每个预定时间段Ts的实际下载带宽。当需要预测客户端在未来的预定时间段Ts内的下载带宽时,可获取在当前预定时间段Ts之前的n(n为大于或等于1的整数)个历史的预定时间段Ts(也可包括当前预定时间段Ts在内)的每个预定时间段Ts内的实际下载带宽client_bw,并根据历史的每个预定时间段内的实际下载带宽client_bw,使用指数滤波方法来预测在未来的预定时间段Ts内的下载带宽client_bw_predict。当前,本公开的预测客户端未来的下载带宽的方法不限于此,还可使用任何可行的预测方法来预测客户端未来的一段时间的下载带宽。

在步骤203,在预测的下载带宽大于带宽阈值的情况下,在未来的预定时间段内执行待播放视频的预加载任务。具体地说,当预测的下载带宽client_bw_predict大于带宽阈值client_bw_rigid_demand,即,client_bw_predict>client_bw_rigid_demand时,那么意味着客户端在未来的预定时间段内有额外的带宽进行后续待播放视频作品的预下载,因此,在此情况下,可执行待播放视频的预加载任务。例如,可允许提交待播放视频的预加载任务,并随后可执行待播放视频的预加载任务。

此外,在预测的下载带宽小于或等于带宽阈值的情况下,在未来的预定时间段内暂停待播放视频的预加载任务。具体地说,当预测的下载带宽client_bw_predict小于或等于带宽阈值client_bw_rigid_demand,即,client_bw_predict≤client_bw_rigid_demand时,那么意味着客户端在未来的预定时间段内没有额外的带宽进行更多作品的预下载,因此,在此情况下,可暂停待播放视频的预加载任务。例如,在当前播放的视频作品正在请求下载时,可暂停待播放视频的预加载任务的提交,在当前播放的视频作品下载完毕后,再恢复预加载任务的提交并执行预加载任务。

此外,可每隔预定时间段Ts都执行上述步骤202和203,从而每隔预定时间段Ts都可对在下一个预定时间段Ts是否执行预加载任务进行决策。

此外,客户端网速的跟踪预测可能无法非常准确,例如,用户在行走移动过程中突然从一个网速较好的wifi热点切换到了一个网络比较拥塞的wifi热点,客户端网速(下载带宽)会突然变差,此时用之前历史网速(下载带宽)预测的未来的客户端下载带宽client_bw_predict会显著偏高,影响预加载任务是否执行的决策。因此,除了预测客户端未来的下载带宽之外,还可监控当前视频在客户端播放器加载的缓存状态,基于客户端未来的下载带宽和当前视频在客户端播放器加载的缓存状态来确定是否执行预加载任务。

根据本公开的示例性实施例,当在客户端正在播放和下载当前视频时,可实时获取当前视频在客户端中加载的视频缓存时长。这里,客户端播放器中的当前视频的缓存是一帧一帧消耗的,即,播放器是从缓存中一帧一帧地取出解码渲染给用户观看的。因此,当前视频在客户端中加载的缓存会实时变化,因而可实时地获取当前视频在客户端中加载的视频缓存时长。当在客户端正在播放和下载当前视频时,在预测的下载带宽大于带宽阈值的情况下,当视频缓存时长小于预定缓存时长阈值时,暂停待播放视频的预加载任务,当在视频缓存时长大于或等于预定缓存时长阈值的情况下,执行待播放视频的预加载任务。

例如,预定缓存时长阈值Ns可包括第一缓存时长阈值Ns1(例如,但不限于,5秒)。当在客户端刚开始播放并下载当前视频的情况下,在视频缓存时长buffer尚未达到第一缓存时长阈值Ns1(buffer<Ns1)的情况下,暂停待播放视频的预加载任务,直到视频缓存时长buffer达到第一缓存时长阈值Ns1(buffer≥Ns1)时,恢复执行待播放视频的预加载任务。此外,即使视频缓存时长buffer尚未达到第一缓存时长阈值Ns1,但如果当前视频已下载完成,也可恢复执行待播放视频的预加载任务。例如,在按照推荐视频作品列表观看短视频,可通过上下滑动来切换到某个视频,当用户滑动到当前视频时,在客户端刚开始播放并下载当前视频,可实时获取播放器的缓存器中缓存当前视频的视频缓存时长,并如上所述,基于视频缓存时长与第一缓存时长阈值的比较来确定是否执行预加载任务。此外,当前视频在被播放前,可能已被预加载一部分数据,因此,当在客户端刚开始播放并下载当前视频时,视频缓存时长可包括预加载的时长。

又例如,预定缓存时长阈值Ns可包括第二缓存时长阈值Ns2。当在当前视频的缓存时长已达到过第一缓存时长阈值Ns1的情况下在客户端继续播放并下载当前视频的情况下,在视频缓存长度buffer小于第二缓存时长阈值Ns2(buffer<Ns2)的情况下,暂停待播放视频的预加载任务,在视频缓存长度buffer大于或等于第二缓存时长阈值Ns2(buffer≥Ns2)的情况下,执行待播放视频的预加载任务。

此外,第二缓存时长阈值Ns2可被设置为小于第一缓存时长阈值Ns1。例如,在第一缓存时长阈值Ns1被设置为5秒的情况下,第二缓存时长阈值Ns2可被设置为4秒。又例如,第二缓存时长阈值Ns2可被设置为第一缓存时长阈值Ns1与缓存系数buffer_discount相乘后的结果,即,Ns2=Ns1×buffer_discount,其中,0<buffer_discount<1。例如,缓存系数buffer_discount可以为,但不限于,0.8。在当前视频的缓存时长buffer已达到了第一缓存时长阈值Ns1之后,又减小至小于第二缓存时长阈值Ns2时,说明当前视频的下载速度小于缓存播放消耗的速度,因此可暂停待播放视频的预加载任务,直到缓存时长buffer增大至达到第二缓存时长阈值Ns2时,恢复执行待播放视频的预加载任务。此外,即使视频缓存时长buffer尚未达到第一缓存时长阈值Ns2,但如果当前视频已下载完成,也可恢复执行待播放视频的预加载任务。例如,当用户滑动到当前视频之后,当前视频已在客户端的播放器中加载到了第一缓存时长阈值,在当前视频后续的播放和下载中,可基于视频缓存时长与第二缓存时长阈值的比较来确定是否执行预加载任务。

图3是示出根据本公开的示例性实施例的视频预加载的决策示意图。

当用户使用客户端观看短视频或直播等内容时,可每隔预定时间段Ts预测一次客户端在未来的预定时间段内的下载带宽,并实时地获取这些内容在客户端加载的视频缓存时长,并基于预测的下载带宽与计算的带宽阈值的比较以及视频缓存时长与预定缓存时长阈值的比较,来确定是否执行视频预加载、是否暂停视频预加载或是否恢复执行视频预加载。

参照图3,仅示例性地描述在一个预定时间段内的可能存在的视频预加载决策。例如,当在客户端开始播放并下载当前视频时,可预测到客户端在未来的预定时间段内的下载带宽client_bw_predict(301)和实时获取到当前视频在客户端中加载的视频缓存时长buffer(302)。将预测的下载带宽client_bw_predict与带宽阈值client_bw_rigid_demand比较(303)并将视频缓存时长buffer与第一缓存时长阈值Ns1比较(304),在预测的下载带宽client_bw_predict大于带宽阈值client_bw_rigid_demand且视频缓存时长buffer不小于第一缓存时长阈值Ns1的情况下,执行视频预加载任务(305),否则暂停视频预加载任务(306,307)。这里,由于当前视频刚开始播放并下载,在客户端加载的视频缓存时长buffer还达不到第一缓存时长阈值Ns1,因此,需要暂停视频预加载任务(307)。在暂停视频预加载任务(307)的情况下,如果经过一段时间视频缓存时长buffer充满第一缓存时长阈值Ns1,则可恢复执行视频预加载任务(305)。随后,在视频缓存时长buffer充满第一缓存时长阈值Ns1之后,在当前视频的后续播放和下载中,可将视频缓存时长buffer与第二缓存时长阈值Ns2比较(308),当视频缓存时长buffer不小于第二缓存时长阈值Ns2时,可持续执行视频预加载任务(309)。但是当视频缓存时长buffer减小到小于第二缓存时长阈值Ns2时,需要暂停视频预加载任务(310)。当随后视频缓存时长buffer又增大到第二缓存时长阈值Ns2时,可恢复执行视频预加载任务(309)。此外,在暂停视频预加载任务(306,307,310)的情况下,一旦当前视频下载完成(311_是),则恢复执行视频预加载任务(312)。

图4是示出根据本公开的示例性实施例的视频预加载的装置的框图。

参照图4,根据本公开的示例性实施例的视频预加载的装置400可包括带宽控制单元401和预加载单元402。

当在客户端正在播放和下载当前视频时,带宽控制单元401可基于当前视频的播放码率,确定带宽阈值。这里,在客户端从发送端(例如,服务器端)接收视频(例如,短视频内容或直播内容等)时,带宽控制单元401可获取到视频的播放码率。例如,在服务器端可通过转码生成各种码率的视频内容,客户端可根据当前网络选择一个清晰度档位,并从服务器端接收相应码率的视频内容。

为了保障用户流畅的播放视频或者观看直播,带宽控制单元401可针对待播放视频的预加载任务设置一个带宽阈值client_bw_rigid_demand,即,当客户端的网速(或下载带宽)client_bw达到该带宽阈值client_bw_rigid_demand时,才可执行待播放视频的预加载任务。为了保证当前视频播放不卡顿,带宽阈值client_bw_rigid_demand至少要等于视频(例如,短视频内容或直播内容等)的播放码率video_bitrate。或者,带宽阈值client_bw_rigid_demand要大于视频(例如,短视频内容或直播内容等)的播放码率video_bitrate。

根据本公开的示例性实施例,带宽控制单元401可将当前视频的播放码率video_bitrate与预定系数discount_coefficient相乘,获得带宽阈值client_bw_rigid_demand,即,client_bw_rigid_demand=video_bitrate×discount_coefficient。这里,预定系数discount_coefficient可以是大于1的常数。例如,当前正在播放的短视频播放码率为3mbps,那么为保障播放不卡顿,那么至少要为其预留3mbps×discount_coefficient的带宽,也就是说,带宽阈值client_bw_rigid_demand可被设置为3mbps×discount_coefficient。这里,预定系数discount_coefficient可以是,但不限于,2。

根据本公开的另一示例性实施例,带宽控制单元401也可将带宽阈值client_bw_rigid_demand确定为大于当前视频的播放码率video_bitrate与预定系数discount_coefficient相乘的结果,即,client_bw_rigid_demand>video_bitrate×discount_coefficient,从而可充分保证当前视频播放不卡顿。

由于客户端的网速(或下载带宽)是实时波动的,因此无法确切地确定客户端的未来的下载带宽是否达到该带宽阈值。因此,预加载单元402可预测客户端在未来的预定时间段内的下载带宽。

根据本公开的示例性实施例,预加载单元402可每隔预定时间段Ts(例如,但不限于,60秒)就统计并记录一次客户端的下载带宽client_bw。具体地说,每隔预定时间段Ts,预加载单元402可获取在该预定时间段Ts内的总下载数据量amount_of_data,将获取到的总下载数据量除以预定时间段Ts的时长(即,总下载耗时T),获得该预定时间段Ts内的实际下载带宽client_bw。即,client_bw=amount_of_data/T。通过该方法,预加载单元402可统计并记录客户端在每个预定时间段Ts的实际下载带宽。当需要预测客户端在未来的预定时间段Ts内的下载带宽时,预加载单元402可获取在当前预定时间段Ts之前的n(n为大于或等于1的整数)个历史的预定时间段Ts(也可包括当前预定时间段Ts在内)的每个预定时间段Ts内的实际下载带宽client_bw,并根据历史的每个预定时间段内的实际下载带宽client_bw,使用指数滤波方法来预测在未来的预定时间段Ts内的下载带宽client_bw_predict。当前,本公开的预测客户端未来的下载带宽的方法不限于此,还可使用任何可行的预测方法来预测客户端未来的一段时间的下载带宽。

在预测的下载带宽大于带宽阈值的情况下,预加载单元402可在未来的预定时间段内执行待播放视频的预加载任务。具体地说,当预测的下载带宽client_bw_predict大于带宽阈值client_bw_rigid_demand,即,client_bw_predict>client_bw_rigid_demand时,那么意味着客户端在未来的预定时间段内有额外的带宽进行后续待播放视频作品的预下载,因此,在此情况下,预加载单元402可执行待播放视频的预加载任务。例如,预加载单元402可允许提交待播放视频的预加载任务,并随后可执行待播放视频的预加载任务。

此外,在预测的下载带宽小于或等于带宽阈值的情况下,预加载单元402可在未来的预定时间段内暂停待播放视频的预加载任务。具体地说,当预测的下载带宽client_bw_predict小于或等于带宽阈值client_bw_rigid_demand,即,client_bw_predict≤client_bw_rigid_demand时,那么意味着客户端在未来的预定时间段内没有额外的带宽进行更多作品的预下载,因此,在此情况下,预加载单元402可暂停待播放视频的预加载任务。例如,在当前播放的视频作品正在请求下载时,预加载单元402可暂停待播放视频的预加载任务的提交,在当前播放的视频作品下载完毕后,预加载单元402再恢复预加载任务的提交并执行预加载任务。

此外,预加载单元402可每隔预定时间段Ts都执行预测和比较,从而每隔预定时间段Ts都可对在下一个预定时间段Ts是否执行预加载任务进行决策。

此外,客户端网速的跟踪预测可能无法非常准确,例如,用户在行走移动过程中突然从一个网速较好的wifi热点切换到了一个网络比较拥塞的wifi热点,客户端网速(下载带宽)会突然变差,此时用之前历史网速(下载带宽)预测的未来的客户端下载带宽client_bw_predict会显著偏高,影响预加载任务是否执行的决策。因此,除了预测客户端未来的下载带宽之外,还可监控当前视频在客户端播放器加载的缓存状态,基于客户端未来的下载带宽和当前视频在客户端播放器加载的缓存状态来确定是否执行预加载任务。例如,图5是示出根据本公开的另一示例性实施例的视频预加载的装置的框图。

参照图5,根据本公开的另一示例性实施例的视频预加载的装置500可包括带宽控制单元501、缓存获取单元502和预加载单元503。带宽控制单元501的功能与图4中的带宽控制单元401相同,并且预加载单元503至少包括与图4中的预加载单元402的功能相同的功能,因此在此不再赘述这此相同的功能。

当在客户端正在播放和下载当前视频时,缓存获取单元502可实时获取当前视频在客户端中加载的视频缓存时长。这里,客户端播放器中的当前视频的缓存是一帧一帧消耗的,即,播放器是从缓存中一帧一帧地取出解码渲染给用户观看的。因此,当前视频在客户端中加载的缓存会实时变化,因而缓存获取单元502可实时地获取当前视频在客户端中加载的视频缓存时长。当在客户端正在播放和下载当前视频时,在预测的下载带宽大于带宽阈值的情况下,当视频缓存时长小于预定缓存时长阈值时,预加载单元503暂停待播放视频的预加载任务,当在视频缓存时长大于或等于预定缓存时长阈值的情况下,预加载单元503执行待播放视频的预加载任务。

例如,预定缓存时长阈值Ns可包括第一缓存时长阈值Ns1(例如,但不限于,5秒)。当在客户端刚开始播放并下载当前视频的情况下,在视频缓存时长buffer尚未达到第一缓存时长阈值Ns1(buffer<Ns1)的情况下,预加载单元503暂停待播放视频的预加载任务,直到视频缓存时长buffer达到第一缓存时长阈值Ns1(buffer≥Ns1)时,预加载单元503恢复执行待播放视频的预加载任务。此外,即使视频缓存时长buffer尚未达到第一缓存时长阈值Ns1,但如果当前视频已下载完成,预加载单元503也可恢复执行待播放视频的预加载任务。例如,在按照推荐视频作品列表观看短视频,可通过上下滑动来切换到某个视频,当用户滑动到当前视频时,在客户端刚开始播放并下载当前视频,缓存获取单元502可实时获取视频缓存时长,并如上所述,预加载单元503基于视频缓存时长与第一缓存时长阈值的比较来确定是否执行预加载任务。此外,当前视频在被播放前,可能已被预加载一部分数据,因此,当在客户端刚开始播放并下载当前视频时,视频缓存时长可包括预加载的时长。

又例如,预定缓存时长阈值Ns可包括第二缓存时长阈值Ns2。当在当前视频的缓存时长已达到过第一缓存时长阈值Ns1的情况下在客户端继续播放并下载当前视频的情况下,在视频缓存时长buffer小于第二缓存时长阈值Ns2(buffer<Ns2)的情况下,预加载单元503暂停待播放视频的预加载任务,在视频缓存时长buffer大于或等于第二缓存时长阈值Ns2(buffer≥Ns2)的情况下,预加载单元503执行待播放视频的预加载任务。

此外,第二缓存时长阈值Ns2可被设置为小于第一缓存时长阈值Ns1。例如,在第一缓存时长阈值Ns1被设置为5秒的情况下,第二缓存时长阈值Ns2可被设置为4秒。又例如,第二缓存时长阈值Ns2可被设置为第一缓存时长阈值Ns1与缓存系数buffer_discount相乘后的结果,即,Ns2=Ns1×buffer_discount,其中,0<buffer_discount<1。例如,缓存系数buffer_discount可以为,但不限于,0.8。在当前视频的缓存时长buffer已达到了第一缓存时长阈值Ns1之后,又减小至小于第二缓存时长阈值Ns2时,说明当前视频的下载速度小于缓存播放消耗的速度,因此预加载单元503可暂停待播放视频的预加载任务,直到缓存时长buffer增大至达到第二缓存时长阈值Ns2时,预加载单元503恢复执行待播放视频的预加载任务。此外,即使视频缓存时长buffer尚未达到第一缓存时长阈值Ns2,但如果当前视频已下载完成,预加载单元503也可恢复执行待播放视频的预加载任务。例如,当用户滑动到当前视频之后,当前视频已在客户端的播放器中加载到了第一缓存时长阈值,在当前视频后续的播放和下载中,预加载单元503可基于视频缓存时长与第二缓存时长阈值的比较来确定是否执行预加载任务。

图6是根据本公开的示例性实施例的电子设备600的框图。

参照图6,电子设备600包括至少一个存储器601和至少一个处理器602,所述至少一个存储器601中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器602执行时,执行根据本公开的示例性实施例的视频预加载的方法。

作为示例,电子设备600可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备600并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备600还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。

在电子设备600中,处理器602可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。

处理器602可运行存储在存储器601中的指令或代码,其中,存储器601还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。

存储器601可与处理器602集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器601可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器601和处理器602可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器602能够读取存储在存储器中的文件。

此外,电子设备600还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备600的所有组件可经由总线和/或网络而彼此连接。

根据本公开的示例性实施例,还可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的视频预加载的方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。

根据本公开的示例性实施例,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例性实施例的视频预加载的方法。

根据本公开的视频预加载的方法和装置,可在客户端正在下载当前视频时,基于客户端的网速来确定是否执行预加载任务,当用户网速较低时,可以及时暂停预加载,避免预加载任务对当前视频播放下载任务的带宽抢占问题,保障当前播放作品的流畅性的同时,提高预加载效率。

此外,根据本公开的视频预加载的方法和装置,可在客户端正在下载当前视频时,基于客户端的网速和播放器缓存的状态来确定是否执行预加载任务,当用户网速足够、播放器缓存状态足够健康时,允许持续提交预加载任务,在更充分更可靠地保障当前播放作品的流畅性的同时,提高预加载效率和后续作品的启播体验。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:页面生成方法、装置及计算机设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类