本公开涉及图像处理技术领域,尤其涉及一种视频码率控制方法、装置、电子设备及存储介质。
背景技术:
目前,视频内容提供商对于互动直播越来越感兴趣,允许观众与主播以及观众与观众进行对话和互动,其中互动直播最重要的要求是低时延,其中时延是指事件发生的时刻与播放给用户的时刻之间的时间差。为了保证好的交互性,直播过程中,视频播放器需要维持较少的缓存量。
为了能在动态变化的网络状况下提供好的用户体验质量(qualityofexperience,qoe),现有的很多视频播放器采用基于http的动态自适应视频流(dynamicadaptivestreamingoverhttp,dash)技术来传输视频。在dash中,视频被切成很多块,并且每一块用不同的码率编码,其中码率越高则代表视频质量越好。而视频播放器则应用码率自适应算法(adaptivebitrate,abr)以块为单位切换视频码率来适应当前的网络状况,其宗旨是提供了一个好的qoe。对于直播来说,这包含三个部分:低时延、高视频码率和少播放卡顿。然而,视频播放器选择出一个合适的视频码率是非常困难的,面临以下两个挑战:(1)低时延与少卡顿之间的冲突,低延迟需要较小的缓存量,而少卡顿则需要较大的缓存量以吸收吞吐量波动的影响。(2)在不引起卡顿和增加时延的情况下,提供高质量的视频是困难的,这是因为视频码率越高所需要的下载时间越长,而下载时间长可能会耗尽缓存量,从而导致卡顿并增加时延。
现有的码率自适应算法是针对点播视频流设计,可以分为基于反馈的算法和基于前馈的算法:
参见图1,基于前馈的abr算法通过预测并提前适应未来的网络状况,能够对网络变化做出快速反应,从而能够控制缓存从当前状态快速地到达期望值。即基于前馈的算法通过匹配码率和吞吐量这两个信号来选择码率,因此需要良好的吞吐量预测。当吞吐量被高估时,码率策略会比较激进,其下载过程可能会耗尽缓存量,即基于前馈的abr算法对预测误差很敏感。
参见图2,基于反馈的abr算法调整码率以减少当前的缓存水平与目标值之间的偏移,通过不断地采取纠正措施,可以对吞吐量波动和预测误差具有很强的抵抗力。但是,基于反馈的abr算法不是根据预测的吞吐量来选择匹配的码率,而是当吞吐量变化影响到缓存量之后才开始采取纠正措施,即只有当发生缓存量控制误差之后,控制器才开始采取补救措施。若网络存在突发且剧烈的吞吐量抖动,播放器的实际缓存量可能与目标值之间有显著的偏移,算法难以快速将缓存量控制到目标值
换言之,上述两种方法在应用于视频直播场景时,若缓存的吞吐量剧烈变化,基于前馈的abr算法和基于反馈的abr算法都无法将缓存量精确地控制在目标值,引起严重的缓存量抖动。
技术实现要素:
本公开提供一种视频码率控制方法、装置、电子设备及存储介质,以至少解决相关技术在视频直播场景中无法将缓存的缓存量精确的控制在目标值,容易引起缓存量抖动的问题。
本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种视频码率控制方法,包括:
在第k-1视频块存储到缓存后且第k视频块存储到缓存前,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围,以及获取所述缓存的当前状态,所述当前状态包括所述缓存中视频的缓存量偏移量x(k)和所述缓存中视频的缓存量变化量y(k);所述第k视频块为与所述第k-1视频块相邻的后一个视频块;k为大于或等于2的整数;
根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量;所述演化模型为s(k)=x(k)+λy(k),λ<1;
根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存内缓存量从所述当前状态对应的演化轨迹到所述当前状态对应的期望轨迹所需要的第二码率变化量;
根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率。
可选地,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围包括:
获取所述第k视频块的视频时长l、在下载所述第k-1视频块中所述缓存的吞吐量预测值
将所述第k视频块的视频时长l、所述吞吐量预测值
根据所述测量值噪声的方差z(k)获得在下载所述第k视频块中所述缓存的吞吐量预测值
可选地,所述根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量包括:
根据所述当前状态、所述吞吐量预测值和所述演化模型获取所述第k视频块对应的演化模型s(k);
将所述缓存量偏移量x(k)、所述缓存量变化量y(k)、所述吞吐量预测值和所述演化模型s(k)输入到前馈控制器,由所述前馈控制器计算出所述第k视频块对应的视频码率变化量,将所述视频码率变化量作为所述缓存从当前状态到达期望轨迹所需要的第一码率变化量。
可选地,所述根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存内缓存量从所述当前状态对应的演化轨迹到所述当前状态对应的期望轨迹所需要的第二码率变化量包括:
根据所述第k视频块的视频时长l、所述当前状态、所述吞吐量预测值及其误差范围获取第一参数值α1和第二参数值α2;所述第一参数值α1和所述第二参数值α2作为预先设置的反馈控制器的指定参数的取值;
根据所述缓存量偏移量x(k)和所述缓存量变化量y(k)确定当前的演化模型s(k)的输出值;
获取所述缓存量偏移量x(k)和所述输出值的乘积;
根据所述乘积的正负确定所述反馈控制器的指定系数的取值;若所述乘积为正,则确定所述指定系数取值为所述第一参数值α1,若所述乘积为负,则确定所述指定系数取值为所述参数值α2;
根据所述指定系数的取值计算所述缓存从所述当前状态到所述期望轨迹的第二码率变化量。
可选地,根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率包括:
获取所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量三者之和,将所述和作为所述第k视频块对应的视频码率。
可选地,所述当前状态为(x(k),y(k)):
其中,b(k)、b(k-1)分别表示第k和k-1视频块开始下载时所述缓存内已缓存视频的缓存量;br表示所述缓存的目标缓存量;x(k)表示所述缓存的当前缓存量与目标缓存量之间偏移量,y(k)表示在第k视频块下载过程中所述缓存的缓存量的变化量。
可选地,所述吞吐量预测值
p(k)=[1-g(k)δr(k)][p(k-1)+ω];
其中,
根据本公开实施例的第二方面,提供一种视频码率控制装置,包括:
状态获取单元,被配置为执行在第k-1视频块存储到缓存后且第k视频块存储到缓存前,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围,以及获取所述缓存的当前状态,所述当前状态包括所述缓存中视频的缓存量偏移量x(k)和所述缓存中视频的缓存量变化量y(k);所述第k视频块为与所述第k-1视频块相邻的后一个视频块;k为大于或等于2的整数;
第一变化量获取单元,被配置为执行根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量;所述演化模型为s(k)=x(k)+λy(k),λ<1;
第二变化量获取单元,被配置为执行根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存内缓存量从所述当前状态对应的演化轨迹到所述当前状态对应的期望轨迹所需要的第二码率变化量;
视频码率确定单元,被配置为执行根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率。
可选地,所述状态获取单元包括:
数据获取模块,被配置为执行获取所述第k视频块的视频时长l、在下载所述第k-1视频块中所述缓存的吞吐量预测值
预测值计算模块,被配置为执行将所述第k视频块的视频时长l、所述吞吐量预测值
误差获取模块,被配置为执行根据所述测量值噪声的方差z(k)获得在下载所述第k视频块中所述缓存的吞吐量预测值
可选地,所述第一变化量获取单元包括:
演化模型获取模块,被配置为执行根据所述当前状态、所述吞吐量预测值和所述演化模型获取所述第k视频块对应的演化模型s(k);
第一变化量计算模块,被配置为执行将所述缓存量偏移量x(k)、所述缓存量变化量y(k)、所述吞吐量预测值和所述演化模型s(k)输入到前馈控制器,由所述前馈控制器计算出所述第k视频块对应的视频码率变化量,将所述视频码率变化量作为所述缓存从当前状态到达期望轨迹所需要的第一码率变化量。
可选地,所述第二变化量获取单元包括:
参数值获取模块,被配置为执行根据所述第k视频块的视频时长l、所述当前状态、所述吞吐量预测值及其误差范围获取第一参数值α1和第二参数值α2;所述第一参数值α1和所述第二参数值α2作为预先设置的反馈控制器的指定参数的取值;
输出值确定模块,被配置为执行根据所述缓存量偏移量x(k)和所述缓存量变化量y(k)确定当前的演化模型s(k)的输出值;
乘积获取模块,被配置为执行获取所述缓存量偏移量x(k)和所述输出值的乘积;
系数取值确定模块,被配置为执行根据所述乘积的正负确定所述反馈控制器的指定系数的取值;在所述乘积为正的情况下,确定所述指定系数取值为所述第一参数值α1,在所述乘积为负的情况下,确定所述指定系数取值为所述参数值α2;
第二变化量计算模块,被配置为执行根据所述指定系数的取值计算所述缓存从所述当前状态到所述期望轨迹的第二码率变化量。
可选地,所述视频码率确定单元包括:
视频码率确定模块,被配置为执行获取所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量三者之和,将所述和作为所述第k视频块对应的视频码率。
可选地,所述当前状态为(x(k),y(k)):
其中,b(k),b(k-1)分别表示第k和k-1视频块开始下载时所述缓存内已缓存视频的缓存量;br表示所述缓存的目标缓存量;x(k)表示所述缓存的当前缓存量与目标缓存量之间偏移量,y(k)表示在第k视频块下载过程中所述缓存的缓存量的变化量。
可选地,所述吞吐量预测值
p(k)=[1-g(k)δr(k)][p(k-1)+ω];
其中,
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述存储器中的可执行指令,以实现如第一方面所述的视频码率控制方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的视频码率控制方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本实施例中通过在第k-1视频块存储到缓存后且第k视频块存储到缓存前,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围,以及获取所述缓存的当前状态,所述当前状态包括所述缓存中视频的缓存量偏移量x(k)和所述缓存中视频的缓存量变化量y(k);所述第k视频块为与所述第k-1视频块相邻的后一个视频块;k为大于或等于2的整数;然后,根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量;所述演化模型为s(k)=x(k)+λy(k),λ<1;之后,根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存内缓存量从所述当前状态对应的演化轨迹到所述当前状态对应的期望轨迹所需要的第二码率变化量;最后,根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率。这样,本实施例中通过第一码率变化量可以调整缓存从当前状态对应的演化轨迹到达期望轨迹,即可以减少或者消除缓存的吞吐量变化所引起的缓存量的偏移量;并且,通过第二码率变化量可以减少缓存从当量状态对应的演化轨迹到期望轨迹的距离,即减少或消除预测吞吐量带来的预测误差,最终能够将缓存量精确地控制在目标缓存量,有利于实现低时延、少卡顿和高码率的视频直播。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种基于前馈的abr算法的原理图;
图2是根据一示例性实施例示出的一种基于前馈的abr算法的原理图;
图3是根据一示例性实施例示出的一种视频码率控制方法的原理图;
图4是根据一示例性实施例示出的一种缓存的缓存量的变化量的原理图;
图5是根据一示例性实施例示出的一种期望轨迹的示意图;
图6是根据一示例性实施例示出的另一种视频码率控制方法的原理图;
图7是根据一示例性实施例示出的一种视频码率控制方法的流程图;
图8是根据一示例性实施例示出的另一种视频码率控制方法的流程图;
图9是根据一示例性实施例示出的又一种视频码率控制方法的流程图;
图10是根据一示例性实施例示出的又一种视频码率控制方法的流程图;
图11(a)和图11(b)是根据一示例性实施例示出的各abr算法的平均码率和卡顿时间的曲线图;
图12(a)和图12(b)是根据一示例性实施例示出的各abr算法演化的统计特性的曲线图;
图13是根据一示例性实施例示出的各abr算法在一会话中缓存量演化的曲线图;
图14~图17是根据一示例性实施例示出的一种视频码率控制装置的框图;
图18是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
目前,视频内容提供商对于互动直播越来越感兴趣,允许观众与主播以及观众与观众进行对话和互动,其中互动直播最重要的要求是低时延,其中时延是指事件发生的时刻与播放给用户的时刻之间的时间差。为了保证好的交互性,直播过程中,视频播放器需要维持较少的缓存量。
为了能在动态变化的网络状况下提供好的用户体验质量,现有的很多视频播放器采用基于http的dash技术来传输视频。在dash中,视频被切成很多块,并且每一块用不同的码率编码,其中码率越高则代表视频质量越好。而视频播放器则应用abr以块为单位切换视频码率来适应当前的网络状况,其宗旨是提供了一个好的qoe。对于直播来说,这包含三个部分:低时延、高视频码率和少播放卡顿。然而,视频播放器选择出一个合适的视频码率是非常困难的,面临以下两个挑战:
(1)低时延与少卡顿之间的冲突,低延迟需要较小的缓存量,而少卡顿则需要较大的缓存量以吸收吞吐量波动的影响。
(2)在不引起卡顿和增加时延的情况下,提供高质量的视频是困难的,这是因为视频码率越高所需要的下载时间越长,而下载时间长可能会耗尽缓存量,从而导致卡顿并增加时延。
现有的码率自适应算法是针对点播视频流设计,可以分为基于反馈的算法和基于前馈的算法:
参见图1,基于前馈的abr算法通过预测并提前适应未来的网络状况,能够对网络变化做出快速反应,从而能够控制缓存从当前状态快速地到达期望值。即基于前馈的算法通过匹配码率和吞吐量这两个信号来选择码率,因此需要良好的吞吐量预测。当吞吐量被高估时,码率策略会比较激进,其下载过程可能会耗尽缓存量,即基于前馈的abr算法对预测误差很敏感。
参见图2,基于反馈的abr算法调整码率以减少当前的缓存水平与目标值之间的偏移,通过不断地采取纠正措施,可以对吞吐量波动和预测误差具有很强的抵抗力。但是,基于反馈的abr算法不是根据预测的吞吐量来选择匹配的码率,而是当吞吐量变化影响到缓存量之后才开始采取纠正措施,即只有当发生缓存量控制误差之后,控制器才开始采取补救措施。若网络存在突发且剧烈的吞吐量抖动,播放器的实际缓存量可能与目标值之间有显著的偏移,算法难以快速将缓存量控制到目标值
换言之,上述两种方法在应用于视频直播场景时,若缓存的吞吐量剧烈变化,基于前馈的abr算法和基于反馈的abr算法都无法将缓存量精确地控制在目标值,引起严重的缓存量抖动。
本公开实施例提供了一种视频码率控制方法、装置、电子设备及存储介质,其发明构思在于,将缓存量控制在一个较低但是不为零的目标缓存量来优化低时延直播视频流的qoe。参见图3,本实施例中可以利用基于前馈控制器(即基于前馈的abr算法)预测吞吐量的变化量并选取与该吞吐量的变化量相匹配的视频码率,然而利用反馈控制器(即基于反馈的abr算法)观测当前的控制误差并朝着减少误差的方向来矫正视频码率。这样,本实施例不但可以减少或者消除缓存的吞吐量变化所引起的缓存量的偏移量,还可以减少或消除预测吞吐量带来的预测误差,最终能够将缓存量精确地控制在目标缓存量,有利于实现低时延、少卡顿和高码率的视频直播。
本公开实施例中,假设视频被切分为k个视频块,每个视频块均包含l秒的视频时间,当然,在一些场景下还可以随机切分视频时长,此情况下数值l为一个变量。服务器以m个离散的视频码率来编码视频,可选码率集为
参见图4,对于视频码率为r(k)的第k视频块而言,其所需要的下载时长为d(k)/c(k),其中d(k)表示第k视频块的大小,c(k)表示下载过程中第k视频块的平均下载速率。这样,在第k视频块下载过程中,缓存量的变化量可以建模为:
本实施例中,使用x(k)表示当前缓存量和目标缓存量之间的偏移量,采用y(k)来描述第k视频块下载过程中缓存量的变化量,则缓存所对应的系统状态可以表示为:
其中,b(k),b(k-1)分别表示第k和k-1视频块开始下载时缓存内已经缓存视频的缓存量;br表示缓存的目标缓存量。需要说明的是,本实施例中在描述方案的范围中以第k视频块为例,因此对应于第k视频块人系统状态也称之为当前状态。
参见图5,在采用x(k)表示坐标系横轴,采用y(k)表示坐标系纵轴形成的坐标系中,上述系统状态(式(2))的理想状态是原点(0,0),表示缓存量到达并稳定在目标缓存量br。换言之,本实施例中控制目标是驱动系统状态((x(k),y(k))到达原点,即通过控制系统状态的演化轨迹来实现控制目标。
为了方便说明,本实施例中采用r(k)l替换上式(1)中的d(k),其中d(k)的取值为视频块的实际大小。假设c(k)=c(k-1)并且
其中,ξ(k)是不确定项,表示c(k)与c(k-1)之间的变化以及预测误差引起的缓存量变化量。基于式(3)可以得到系统状态的演化模型为:
由式(4)可知,本实施例中以吞吐量预测值
基于上述分析内容,本实施例中将码率选择问题等同于系统状态((x(k),y(k))驱动到原点,即控制缓存量到达并保持在目标缓存量。由于缓存量状态受到吞吐量的变化,视频播放器在不稳定的网络状态下难以同时控制x(k)和y(k)两个状态。为此,本实施例中提出控制((x(k),y(k))的演化轨迹而不是其瞬时状态,一旦缓存的演化轨迹到达期望轨迹,系统状态((x(k),y(k))的演化将由所设定的演化模型所控制,然后系统状态((x(k),y(k))将沿着期望轨迹逐渐运动到理想点而不需要额外的调节。
本实施例中,定义演化模型s(k)=x(k)+λy(k),λ<1,并设计期望轨迹s(k)=0,通过理论分析可证明得该轨迹上的点收敛向原点,证明过程如下:
根据期望轨迹的定义可得,期望轨迹上的点具有y(k)=-λx(k)的性质。基于式(3)描述的系统演化模型,x(k)的演化可以被表达为
由于
基于演化模型的定义,本实施例中可以通过控制系统状态的演化轨迹与期望轨迹相同来实现控制目标,即在当前状态((x(k),y(k))下调节视频码率r(k)使得s(k)=0,从而实现系统状态沿期望轨迹运动到达原点。
基于上述发明内容,本公开实施例提供了一种基于前馈的abr算法和基于反馈的arb算法共同控制的视频码率控制方法,其视频码率策略包括两部分:前馈信号和反馈信号。图6是本公开实施例提供的码率控制方法的原理图,参见图6,本实施例提供的视频码率控制方法中,先利用基于前馈的abr算法根据吞吐量预测值和系统模型来生成实现期望轨迹所需要的视频码率。也就是说,基于前馈的abr算法的目标是获得前馈信号(后续称之为第一码率变化量),在没有预设误差的情况下使s(k)=0,即第一码率变量可以求解s(k)=0来获得。由于理想状态下只能在无预测误差的情况下实现,因此需要进一步使用基于反馈的abr算法来矫正,通过观测实际输出并朝减小控制误差的方向调整视频码率策略,即基于反馈的abr算法的目标是获得反馈信号(后续称之为第二码率变化量)。
在图6所示基础上,图7是根据一示例性实施例示出的一种视频码率控制方法的流程图,可以适用于电子设备或者应用app,其中应用app可以为视频播放器,参见图7,一种视频码率控制方法,包括步骤701~步骤704,其中:
在步骤701中,在第k-1视频块存储到缓存后且第k视频块存储到缓存前,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围,以及获取所述缓存的当前状态,所述当前状态包括所述缓存中视频的缓存量偏移量x(k)和所述缓存中视频的缓存量变化量y(k);所述第k视频块为与所述第k-1视频块相邻的后一个视频块。
本实施例中,参见图8,视频播放器可以获取第k视频块的视频时长l、在下载第k-1视频块中缓存的吞吐量预测值
以卡尔曼滤波器为例,卡尔曼滤波器的模型为:
式(5)中,
θ(k)的估计方法为:
式(6)中,ω表示θ(k)的方差,可以根据先验知识预先设定;z(k)表示预测误差ξ(k)的方差。
这样,视频播放器可以获取到缓存对应于第k视频块的吞吐量预测值
之后,视频播放器可以根据测量值噪声的方差z(k)获得吞吐量预测值
z(k)=μz(k-1)+(1-μ)[δy(k)-δr(k-1)θ(k-1)]2;(7)
式(7)中,μ表示权重因子。
这样,视频播放器可以获得到吞吐量预测误差的范围[-z(k),z(k)],即ξmin=-z(k),ξmax=z(k)。
在步骤702中,根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量。
本实施例中,参见图9,视频播放器可以根据当前状态、吞吐量预测值
然后,视频播放器可以将缓存量偏移量x(k)、缓存量变化量y(k)、吞吐量预测值和演化模型s(k)输入到前馈控制器,由前馈控制器计算出第k视频块对应的视频码率变化量,将视频码率变化量作为所述缓存从当前状态到达期望轨迹所需要的第一码率变化量(对应步骤902)。继续参见图6,令s(k)=0,前馈控制器可以计算出第一码率变化量δrff:
在步骤703中,根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存从所述当前状态到所述期望轨迹减少距离对应的第二码率变化量。
本实施例中,参见图10,视频播放器可以根据第k视频块的视频时长l、当前状态((x(k),y(k))、吞吐量预测值
其中,预先设置的反馈控制器可以采用比例控制器实现,技术人员可以根据具体场景选择合适的反馈控制器,在此不作限定。
以比例控制器为例,其指定参数为比例系数,比例系数的取值为第一参数值α1和第二参数值α2,计算出第二码率变化量δrfd:
式(10)中第一参数值α1和第二参数值α2的范围为:
在步骤704中,根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率。
本实施例中,视频播放器可以根据视频码率r(k-1)、第一码率变化量δrff和第二码率变化量δrfd确定第二视频块对应的视频码率,即:
r(k)=r(k-1)+δrff+δrfd。(12)
可见,实施例中通过第一码率变化量可以调整缓存从当前状态对应的演化轨迹到达期望轨迹,即可以减少或者消除缓存的吞吐量变化所引起的缓存量的偏移量;并且,通过第二码率变化量可以减少缓存从当量状态对应的演化轨迹到期望轨迹的距离,即减少或消除预测吞吐量带来的预测误差,最终能够将缓存量精确地控制在目标缓存量,有利于实现低时延、少卡顿和高码率的视频直播。
为验证本公开实施例提供的一种视频码率控制方法的优越性,下面通过实验来验证:
本示例中采用dash仿真系统来验证,其中dash系统由一个nginx服务器和一个基于dash.js的视频播放器组成,链路容量由linuxtc工具根据实际带宽数据来设定。所设计的策略通过修改dash.js里的函数abrcontroller和buffercontroller来实现。为了在实际网络条件下评估算法,本示例中基于快手网络数据集和hsdpa网络数据集生成测试带宽轨迹。测试算法如下:
本实施例提供的一种视频码率控制方法(hca):br=2秒,λ=0.75,α根据式(10)调节,吞吐量预测器的参数为ω=105以及μ=0.7。
bola是一个利用李雅普诺夫优化来设计的基于缓存的abr算法,即bola的码率选择策略是一个从当前缓存量到可选码率的映射。
bba是根据与当前缓存量相关的一个函数来选择码率,参数配置为:reservoir=2秒,cushion=3秒,bba目标是将缓存量控制在2秒到3秒之间。
rb是选择不超过当前带宽的最大可选码率。
mpc是基于当前缓存量和预测的吞吐量,通过最大化未来5个视频块的qoe函数来选择码率。
rmpc是使用与mpc相同的码率选择方法,robustmpc将吞吐量预测值除以历史5个视频块观测到的最大预测误差来实现保守预测的方式。
评测指标:分别从qoe影响因素和综合qoe来对性能进行评价,qoe的影响因素包括:视频码率、卡顿时间。综合qoe通过qoe=rate-6*rebuftime来计算。
本示例中,使用5秒的缓存容量来测试算法在直播场景中实现的qoe。图11(a)和11(b)以累积分布函数(cumulativedistributionfunction,cdf)的形式展现了算法在每个带宽数据集上所实现的平均码率和卡顿时间。参见图11(a)和11(b),hca在减少卡顿方面较其他现有算法有巨大的优势,在hsdpa网络中零卡顿会话率为96%,在快手网络中零卡顿会话率为100%;hca其所传输的视频质量也与其他算法的平均水平相当,包括:
bola在减少卡顿时间方面实现了良好的性能,但其码率选择过于保守,对吞吐量波动的不敏感性归因于其对缓存量的反馈控制机制。但是由于缺乏前馈控制,bola不能迅速选择出与带宽匹配的码率,使得网络带宽没有得到充分利用。
rmpc选择的码率略高于hca,但其卡顿时间却比hca严重得多。
基于前馈的两种方法rmpc和mpc都遭受了大量的卡顿时间。虽然rmpc通过保守吞吐量估计能够使得卡顿时间有所减少,但是其本质上并没有增强对缓存量的控制能力,因此缓存量仍然抖动很大,很容易排空。rb和bba都会引起较长的卡顿时间
另一示例中,参见图12(a)和图12(b),以30秒的大缓冲容量来运行各abr算法,并比较各算法在大缓存容量情况下缓存量的稳定性。
又一示例中,参见图13,以一个随机选择的会话为例展现了各算法缓存量演化过程,hca能够将缓存量准确地控制在一个低但不为零的水平上,即hca能够将缓存量控制在4秒左右,并且标准差最小(平均为1秒)。
rmpc和mpc的缓存量也很小,但它们缓存量的波动剧烈,播放时会引起卡顿。
bola和bba维持大缓存量以吸收吞吐量波动的影响,平均缓存量大于10秒,标准差大于4秒;当缓存容量被限制为小范围时,容易导致长时间的卡顿或保守的码率选择。rb的缓存量最高,如果缓存容量被限制为小范围时,容易导致长时间的卡顿或保守的码率。
图14是根据一示例性实施例示出的一种视频码率控制装置的框图,参见图14,一种视频码率控制装置1400,包括:
状态获取单元1401,被配置为执行在第k-1视频块存储到缓存后且第k视频块存储到缓存前,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围,以及获取所述缓存的当前状态,所述当前状态包括所述缓存中视频的缓存量偏移量x(k)和所述缓存中视频的缓存量变化量y(k);所述第k视频块为与所述第k-1视频块相邻的后一个视频块;k为大于或等于2的整数;
第一变化量获取单元1402,被配置为执行根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量;所述演化模型为s(k)=x(k)+λy(k),λ<1;
第二变化量获取单元1403,被配置为执行根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存内缓存量从所述当前状态对应的演化轨迹到所述当前状态对应的期望轨迹所需要的第二码率变化量;
视频码率确定单元1404,被配置为执行根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率。
图15是根据一示例性实施例示出的另一种视频码率控制装置的框图,参见图15,在图14所示装置的基础上,所述状态获取单元1401包括:
数据获取模块1501,被配置为执行获取所述第k视频块的视频时长l、在下载所述第k-1视频块中所述缓存的吞吐量预测值
预测值计算模块1502,被配置为执行将所述第k视频块的视频时长l、所述吞吐量预测值
误差获取模块1503,被配置为执行根据所述测量值噪声的方差z(k)获得在下载所述第k视频块中所述缓存的吞吐量预测值
图16是根据一示例性实施例示出的另一种视频码率控制装置的框图,参见图16,在图14所示装置的基础上,所述第一变化量获取单元1402包括:
演化模型获取模块1601,被配置为执行根据所述当前状态、所述吞吐量预测值和所述演化模型获取所述第k视频块对应的演化模型s(k);
第一变化量计算模块1602,被配置为执行将所述缓存量偏移量x(k)、所述缓存量变化量y(k)、所述吞吐量预测值和所述演化模型s(k)输入到前馈控制器,由所述前馈控制器计算出所述第k视频块对应的视频码率变化量,将所述视频码率变化量作为所述缓存从当前状态到达期望轨迹所需要的第一码率变化量。
图17是根据一示例性实施例示出的另一种视频码率控制装置的框图,参见图17,在图14所示装置的基础上,所述第二变化量获取单元1403包括:
参数值获取模块1701,被配置为执行根据所述第k视频块的视频时长l、所述当前状态、所述吞吐量预测值及其误差范围获取第一参数值α1和第二参数值α2;所述第一参数值α1和所述第二参数值α2作为预先设置的反馈控制器的指定参数的取值;
输出值确定模块1702,被配置为执行根据所述缓存量偏移量x(k)和所述缓存量变化量y(k)确定当前的演化模型s(k)的输出值;
乘积获取模块1703,被配置为执行获取所述缓存量偏移量x(k)和所述输出值的乘积;
系数取值确定模块1704,被配置为执行根据所述乘积的正负确定所述反馈控制器的指定系数的取值;在所述乘积为正的情况下,确定所述指定系数取值为所述第一参数值α1,在所述乘积为负的情况下,确定所述指定系数取值为所述参数值α2;
第二变化量计算模块1705,被配置为执行根据所述指定系数的取值计算所述缓存从所述当前状态到所述期望轨迹的第二码率变化量。
在一实施例中,所述视频码率确定单元1404包括:
视频码率确定模块,被配置为执行获取所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量三者之和,将所述和作为所述第k视频块对应的视频码率。
在一实施例中,所述当前状态为(x(k),y(k)):
其中,b(k),b(k-1)分别表示第k和k-1视频块开始下载时所述缓存内已缓存视频的缓存量;br表示所述缓存的目标缓存量;x(k)表示所述缓存的当前缓存量与目标缓存量之间偏移量,y(k)表示在第k视频块下载过程中所述缓存的缓存量的变化量。
在一实施例中,所述吞吐量预测值
p(k)=[1-g(k)δr(k)][p(k-1)+ω];
其中,
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
至此,本实施例中通过在第k-1视频块存储到缓存后且第k视频块存储到缓存前,获取所述缓存对应于所述第k视频块的吞吐量预测值及其误差范围,以及获取所述缓存的当前状态,所述当前状态包括所述缓存中视频的缓存量偏移量x(k)和所述缓存中视频的缓存量变化量y(k);所述第k视频块为与所述第k-1视频块相邻的后一个视频块;k为大于或等于2的整数;然后,根据所述缓存的当前状态、所述吞吐量预测值和预先设置的演化模型计算所述缓存内缓存量从当前状态对应的演化轨迹到达所述当前状态对应的期望轨迹所需要的第一码率变化量;所述演化模型为s(k)=x(k)+λy(k),λ<1;之后,根据所述当前状态、所述吞吐量预测值及其误差范围计算表示所述缓存内缓存量从所述当前状态对应的演化轨迹到所述当前状态对应的期望轨迹所需要的第二码率变化量;最后,根据所述第k-1视频块的视频码率、所述第一码率变化量和所述第二码率变化量确定所述第k视频块的视频码率。这样,本实施例中通过第一码率变化量可以调整缓存从当前状态对应的演化轨迹到达期望轨迹,即可以减少或者消除缓存的吞吐量变化所引起的缓存量的偏移量;并且,通过第二码率变化量可以减少缓存从当量状态对应的演化轨迹到期望轨迹的距离,即减少或消除预测吞吐量带来的预测误差,最终能够将缓存量精确地控制在目标缓存量,有利于实现低时延、少卡顿和高码率的视频直播。
图18是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备1800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图18,电子设备1800可以包括以下一个或多个组件:处理组件1802,存储器1804,电源组件1806,多媒体组件1808,音频组件1810,输入/输出(i/o)的接口1812,传感器组件1814,以及通信组件1816。
处理组件1802通常控制电子设备1800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1802可以包括一个或多个处理器1820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1802可以包括一个或多个模块,便于处理组件1802和其他组件之间的交互。例如,处理组件1802可以包括多媒体模块,以方便多媒体组件1808和处理组件1802之间的交互。
存储器1804被配置为存储各种类型的数据以支持在电子设备1800的操作。这些数据的示例包括用于在电子设备1800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
电源组件1806为电子设备1800的各种组件提供电力。电源组件1806可以包括电源管理系统,一个或多个电源,及其他与为电子设备1800生成、管理和分配电力相关联的组件。
多媒体组件1808包括在电子设备1800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1808包括一个前置摄像头和/或后置摄像头。当电子设备1800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1810被配置为输出和/或输入音频信号。例如,音频组件1810包括一个麦克风(mic),当电子设备1800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1804或经由通信组件1816发送。在一些实施例中,音频组件1810还包括一个扬声器,用于输出音频信号。
i/o接口1812为处理组件1802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1814包括一个或多个传感器,用于为电子设备1800提供各个方面的状态评估。例如,传感器组件1814可以检测到电子设备1800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备1800的显示器和小键盘,传感器组件1814还可以检测电子设备1800或电子设备1800一个组件的位置改变,用户与电子设备1800接触的存在或不存在,电子设备1800方位或加速/减速和电子设备1800的温度变化。传感器组件1814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1816被配置为便于电子设备1800和其他设备之间有线或无线方式的通信。电子设备1800可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件1816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
在本公开一实施例中,电子设备1800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在本公开一实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1804,上述指令可由电子设备1800的处理器1820执行以完成上述视频码率控制方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
在本公开一实施例中,还提供了一种应用程序,当该应用程序由电子设备的处理器执行时,使得所述电子设备能够执行上述视频码率控制方法,以获取相同的技术效果。
在本公开一实施例中,还提供了一种计算机程序产品,当该计算机程序产品由电子设备的处理器执行时,使得所述电子设备能够执行上述视频码率控制方法,以获取相同的技术效果。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/电子设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。