视频码率调整方法和装置
技术领域
本发明涉及通信技术领域,尤其涉及一种视频码率调整方法和装置。
背景技术
随着宽带接入技术的普及以及人们对互联网多媒体业务需求的不断增长,位于各种网络环境下的用户都期望获得更快速、更流畅、更高清的媒体服务体验。HTTP动态自适应流媒体(Dynamic Adaptive Streaming over HTTP,DASH)协议提供了一种基于超文本传输协议(Hypertext transfer protocol,HTTP)的视频传输技术,其中,在服务器端,原始视频被划分为若干码流分片,并按照不同分辨率和码率的质量层级对各码流分片分别进行编码。当客户端在接收完一个码流分片后,客户端根据当前的网络状况对待发送的码流分片请求中的质量层级进行调整,根据调整后的质量层级向服务器请求下一个码流分片,以便服务器将根据调整后的质量层级编码得到的下一个码流分片发送给客户端。
现有技术中,客户端通过检测带宽变化来调整待请求的下一码流分片的质量层级,例如,当带宽增大时,提高待请求的下一个码流分片的质量层级;当带宽减小时,降低待请求的下一码流分片的质量层级。
然而,现有技术中,码流分片的码率波动会影响到带宽变化的检测值,例如,当码流分片的码率变大时,会导致带宽变化的检测值显示带宽变小;当码流分片的码率减小时,会导致带宽变化的检测值显示带宽变大,从而导致检测到的带宽是频繁波动的带宽,进而导致码流分片的质量层级频繁进行调整。
发明内容
本发明提供一种视频码率调整方法和装置,用于解决现有技术中调整码流分片的质量层级时,码流分片的质量层级频繁进行调整的问题。
本发明的第一个方面是提供一种视频码率调整方法,包括:
客户端获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长;
所述客户端根据所述当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率;
所述客户端获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量;
所述客户端根据在所述当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻所述客户端的可用带宽;
所述客户端根据当前时刻的视频缓冲时长,当前时刻所述视频缓冲时长的变化率,以及当前时刻所述客户端的可用带宽,确定所述客户端待请求码流分片的质量层级,以便向服务器请求与所述质量层级对应的所述待请求码流分片。
本发明的另一个方面提供一种视频码率调整装置,包括:
获取模块,用于获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长;
计算模块,用于根据所述当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率;
所述获取模块,还用于获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量;
所述计算模块,还用于根据在所述当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻所述客户端的可用带宽;
确定模块,用于根据当前时刻的视频缓冲时长,当前时刻所述视频缓冲时长的变化率,以及当前时刻所述客户端的可用带宽,确定所述客户端待请求码流分片的质量层级,以便向服务器请求与所述质量层级对应的所述待请求码流分片。
本发明中,客户端通过获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长,根据所述当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率;获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量;根据在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻客户端的可用带宽;根据当前时刻的视频缓冲时长,当前时刻所述视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片,避免了根据带宽变化的检测值来调整码流分片的质量层级,避免了对码流分片的质量层级频繁进行调整,提高了视频码率的调整效果。
附图说明
图1为本发明提供的视频码率调整方法一个实施例的流程图;
图2为本发明提供的视频码率调整方法中缓冲时长区域的划分示意图;
图3为本发明提供的视频码率调整装置一个实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的视频码率调整方法一个实施例的流程图,如图1所示,包括:
101、客户端获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长。
本发明提供的视频码率调整方法的执行主体为视频码率调整装置,视频码率调整装置具体可以为向服务器请求视频的码流分片,并从服务器下载视频的码流分片的客户端,例如,手机、电脑、PAD、车载终端等移动终端。当前时刻可以为客户端接收完一个码流分片的时刻,或者客户端接收码流分片过程中的任意时刻。记录点的视频缓冲时长具体指的是客户端在记录点时的缓冲视频的播放时长。
记录点具体可以为每个码流分片下载完成的时间点,或者距离上次记录点间隔δ秒的时间点。δ为预设的缓冲时长记录时间间隔,取值为1较佳。对应的,客户端获取到的当前时刻以及当前时刻之前各个记录点的视频缓冲时长可以以记录点序列以及对应的视频缓冲时长序列的形式进行显示。例如,记录时间点序列为{tn},视频缓冲时长序列为{Btn}。视频缓冲时长可以为任意非负实数值,例如10秒、20秒、30秒、10.4秒、23.8秒等。
102、客户端根据当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率。
具体地,客户端可以采用以下公式
计算客户端在当前时刻视频缓冲时长的变化率;
其中,b(ti)是ti记录点视频缓冲时长的变化率,和分别是ti记录点前N个记录点缓冲时长的历史值一次和二次加权移动平均值,N小于ti记录点前记录点的总数。优选的,N的值可以为10。
和的计算公式如以下公式所示:
其中,是ti时刻的视频缓冲时长。
103、客户端获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量。
具体地,步骤103具体可以为:客户端获取在当前时刻之前预设时间段内下载视频时下载的各个码流分片的码率、播放时长、起始下载时间和结束下载时间;客户端根据各个码流分片的码率、播放时长、起始下载时间和结束下载时间确定各个码流分片的平均吞吐量。
其中,各个码流分片的平均吞吐量的计算公式为:
其中,为客户端下载第i个码流分片时的平均吞吐量,pi是第i个码流分片的码率,τ是码流分片的播放时长,分别表示第i个码流分片的开始下载时间和结束下载时间。
104、客户端根据在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻客户端的可用带宽。
当前时刻客户端的可用带宽的计算公式可以为:
其中,n(Δt,t)是在时间[t-Δt,t]内下载的码流分片数,为客户端下载第i个码流分片时的平均吞吐量。
105、客户端根据当前时刻的视频缓冲时长,当前时刻视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片。
质量层级指的是,将原始视频内容划分成若干个码流分片后按照不同的码率和分辨率设置编码成多个码率的版本。其中,采用同样码率和分辨率设置的码流分片为同一个质量层级的码流分片,这里的码率设置的是一个质量层级的平均码率,也就是说一个质量层级中码流分片的实际码率可能不相等,但码流分片的平均码率等于对应质量层级的码率大小。
步骤105具体可以包括:客户端获取预设的至少一个缓冲时长区域,每个缓冲时长区域对应一个缓冲时长范围;客户端根据当前时刻的视频缓冲时长,确定与当前时刻的视频缓冲时长对应的缓冲时长范围;客户端根据当前时刻的视频缓冲时长对应的缓冲时长范围、当前时刻视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片。
例如,缓冲时长区域可以为五个区域:[0,Bmin][Bmin,Blow][Blow,Bhigh][Bhigh,Bmax][Bmax,∞],其中,0<Bmin<Blow<Bhigh<Bmax。可选的,(Bmin,Blow,Bhigh,Bmax)=(10s,20s,40s,50s)。缓冲时长区域的划分示意图可以如图2所示。
当当前时刻为某个码流分片S下载完成的时间点,记当前时刻为tn。在第一种情况下,若B(tn)≥Bmax,则客户端延迟2秒或其他时间段向服务器请求下载下一个码流分片,下一个码流分片的质量层级与码流分片S的质量层级相同,不做调整。在第二种情况下,在B(tn)<Bmax时,若0≤B(tn)<Bmax,且b(tn)小于0,则根据公式计算下一个码流分片码率选择的上限,其中,μ1=min(rI(s)/ps,1),rI(s)是码流分片S的质量层级的平均码率,ps是码流分片S的实际码率,客户端从平均码率高于上述上限的质量层级中选择最高质量层级作为下一个码流分片的质量层级,并向服务器请求下载与最高质量层级对应的下一个码流分片;若Bmin≤B(tn)<Blow,按照公式Tlow(tn)=(1-μ2B(tn))/(Blow-Bmin)计算视频缓冲时长变化率的阈值,其中,0<μ2<1是系统参数,μ2的取值一般为0.3,客户端判断当前时刻的视频缓冲时长变化率是否小于Tlow(tn),若当前时刻的视频缓冲时长变化率是否小于Tlow(tn),则客户端下调下一码流分片的质量层级,即将下一码流分片的质量层级从码流分片S的质量层级下调至更低一级质量层级,并向服务器请求下载与更低一级质量层级对应的下一个码流分片。在第三种情况下,若Bhigh≤B(tn)<Bmax,则客户端根据公式
计算当前时刻的视频缓冲时长变化率的阈值,其中,0<μ3<1是系统参数,μ3取值为0.08。客户端判断视频缓冲时长变化率是否大于Thigh(tn),以及判断下一更高质量层级的平均码率rI(s)+1是否低于当前时刻客户端的可用带宽若b(tn)>Thigh(tn)并且则客户端将质量层级上调一级,即将下一码流分片的质量层级从码流分片S的质量层级上调至更高一级质量层级,并向服务器请求下载与更高一级质量层级对应的下一个码流分片。
当当前时刻为某个码流分片L下载过程中的时间点,该时间点距离上一个记录点的时间为δ秒时,将该时刻记为tn。客户端根据公式计算码流分片L的下载所需剩余时间,其中,dsize为码流分片L已经下载的数据量,τ表示码流分片L的播放时长。客户端判断码流分片L的下载所需剩余时间是否超过播放时长τ,若码流分片L的下载所需剩余时间超过播放时长τ,则对码流分片L的码率进行调整。调整的具体过程包括:在第四种情况下,若0≤B(tn)<Bmin,判断b(tn)是否小于0,若b(tn)小于0,则客户端根据公式计算下一个码流分片码率选择的上限,其中,μ2=min(rI(s)/ps,1),并从平均码率低于该上限的最高质量层级作为码流分片L的质量层级,向服务器请求下载最高质量层级对应的码流分片L。在第五种情况下,若Bmin≤B(tn)<Blow,根据公式Tlow(tn)=(1-μ2B(tn))/(Blow-Bmin)计算当前时刻视频缓冲时长变化率的阈值Tlow,并判断当前时刻视频缓冲时长变化率b(tn)是否小于Tlow,若当前时刻视频缓冲时长变化率b(tn)小于Tlow,则从当前质量层级的下一个更低质量层级作为码流分片L的质量层级,并向服务器请求下载更低质量层级对应的码流分片L。
本实施例中,客户端通过获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长,根据所述当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率;获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量;根据在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻客户端的可用带宽;根据当前时刻的视频缓冲时长,当前时刻所述视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片,避免了根据带宽变化的检测值来调整码流分片的质量层级,避免了对码流分片的质量层级频繁进行调整,提高了视频码率的调整效果。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为本发明提供的视频码率调整装置一个实施例的结构示意图,如图3所示,包括:
获取模块31,用于获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长。
计算模块32,用于根据当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率。
其中,计算模块32具体采用以下公式
计算客户端在当前时刻视频缓冲时长的变化率。
其中,b(ti)是ti记录点视频缓冲时长的变化率,和分别是ti记录点前N个记录点缓冲时长的历史值一次和二次加权移动平均值,N小于ti记录点前记录点的总数。
和的计算公式如以下公式所示:
其中,是ti时刻的视频缓冲时长。
获取模块31,还用于获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量。
获取模块31具体用于,获取在当前时刻之前预设时间段内下载视频时下载的各个码流分片的码率、播放时长、起始下载时间和结束下载时间;根据各个码流分片的码率、播放时长、起始下载时间和结束下载时间确定各个码流分片的平均吞吐量。
计算模块32,还用于根据在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻客户端的可用带宽。
计算模块32具体可以采用以下公式
计算当前时刻客户端的可用带宽;
其中,n(Δt,t)是在时间[t-Δt,t]内下载的码流分片数,分别表示第i个码流分片的开始下载时间和结束下载时间,为客户端下载第i个码流分片时的平均吞吐量。
确定模块33,用于根据当前时刻的视频缓冲时长,当前时刻视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片。
确定模块33具体可以用于,
获取预设的至少一个缓冲时长区域,每个缓冲时长区域对应一个缓冲时长范围;根据当前时刻的视频缓冲时长,确定与当前时刻的视频缓冲时长对应的缓冲时长范围;根据当前时刻的视频缓冲时长对应的缓冲时长范围、当前时刻视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片。
本实施例中,客户端通过获取在当前时刻以及当前时刻之前各个记录点的视频缓冲时长,根据所述当前时刻之前各个记录点的视频缓冲时长确定在当前时刻视频缓冲时长的变化率;获取在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量;根据在当前时刻之前预设时间段内下载视频时各码流分片的平均吞吐量确定当前时刻客户端的可用带宽;根据当前时刻的视频缓冲时长,当前时刻所述视频缓冲时长的变化率,以及当前时刻客户端的可用带宽,确定客户端待请求码流分片的质量层级,以便向服务器请求与质量层级对应的待请求码流分片,避免了根据带宽变化的检测值来调整码流分片的质量层级,避免了对码流分片的质量层级频繁进行调整,提高了视频码率的调整效果。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。