基于状态机的视频码率自适应算法
2018-08-27胡凌炜付园鹏
黄 胜,胡凌炜,付园鹏
(重庆邮电大学 光通信与网络重点实验室,重庆 400065)(*通信作者电子邮箱hulw1018@163.com)
0 引言
基于超文本传输协议(Hyper Text Transfer Protocol, HTTP)的动态自适应流媒体传输技术(Dynamic Adaptive Streaming over HTTP, DASH)定义了媒体呈现描述(Media Presentation Description, MPD)文件以及媒体段的文件格式。MPD文件包含了媒体段的一些基本信息,如位置、时序、比特率等,服务器依据标准将同一视频内容编成多种码率版本,并以固定的时间间隔对视频进行切片,客户端实时检测网络带宽、播放缓存变化等信息,并根据MPD文件所记载的信息向服务器请求不同码率的视频片段[1-2]。
然而DASH并没有对码率自适应机制给出标准定义,高性能的码率自适应算法能够提升客户的观看体验,因此基于DASH的码率自适应算法成为视频传输领域的研究热点[3]。现有的码率自适应方法主要从传输带宽和播放缓存两个角度进行考虑。文献[4-6]中所提出的方法是典型的基于带宽的码率自适应算法,其中文献[5]运用调和平均值来估计带宽,减小带宽估计中的离群值带来的影响;文献[6]对三个不同的客户端的码率自适应机制进行对比,其中一个客户端是Adobe公司的开源媒体框架(Open Source Media Framework, OSMF)流媒体播放器,其自适应机制是根据最近请求的两个片段的下载时长来估计可用带宽,而下一个片段的码率则小于该估计带宽的最大等级码率。文献[7-10]所提出的算法是典型的基于播放缓存的码率自适应控制算法,文献[9]提出基于模糊逻辑控制器的DASH(Fuzzy-based DASH, FDASH)码率自适应算法,根据当前播放缓存与目标缓存的差值和播放缓存变化量这两个参数,按照一定的规则控制输出码率。文献[10]对客户端缓冲区进行分级,实现带宽的不同比例缩放,并采用滑动窗口技术对带宽进行平滑处理。同时,通过设置每个缓冲区等级的带宽持续上升或下降时间的限制和采用高低带宽的中间码率等级,使码率等级不会剧烈变化。结合基于带宽和播放缓存算法两者的特点,文献[11-12]从体验质量(Quality of Experience, QoE)的角度提出码率自适应算法,通过对QoE进行数值分析,并利用一定的控制方法对请求的视频码率进行控制,力求达到较好的QoE。然而上述方法无法避免带宽快速波动导致码率频繁切换的问题,或者不能很好解决播放流畅性和视频质量之间的矛盾。
针对上述问题,本文提出一种基于状态机的DASH(State machine-based DASH, SDASH)算法,用状态机对码率切换过程进行分析与控制,充分考虑QoE影响因素,将影响因素的数值变化和视频码率之间的联系作为码率切换的驱动条件,在保证播放缓存和码率偏移率处于一定阈值的条件下将片段码率切换至视频质量和播放流畅性整体性能相对最优的码率等级上,从而达到较好的观看体验。
1 QoE分析
由于网络带宽存在动态随机性,如果没有一个高效的码率自适应切换算法,用户在观看过程中可能会遇到播放停顿,码率切换频繁,码率阶跃、骤降等情况,视频传输过程采用码率自适应算法的最主要目的就是尽量避免上述情况出现,最大化QoE。在基于DASH的流媒体系统中,QoE的主要影响因素为以下三个:视频码率、码率切换的频率及幅度、播放停顿次数及停顿时长[13]。
为不失一般性,本文假设服务器中存储的视频码率等级为{L0,L1,…,LK-1|L0 (1) 播放的流畅性,即码率切换频率和幅度,则可以通过N个片段码率的标准差σk来定量描述,得到如下计算式: (2) 式(3)代表第k+1个片段下载完成时的播放缓存为开始下载第k+1个片段时的播放缓存加上片段时长T,再减去下载第k+1个片段所需的时间,也就是在下载过程中播放器消耗的缓存时长。另外,如果带宽过高,播放缓存存在溢出的可能性,那么就需要一个暂停请求机制来防止缓存溢出,暂停时间为τs。为避免播放出现停顿,需要尽量将qk保持在一定阈值内。 (3) 本文采用状态机的设计思想对码率切换过程进行分析与控制。状态机通过监测QoE影响因素的数值变化,充分利用影响因素与各个码率状态间的联系控制码率切换,使切换过程具有较好的QoE。本文考虑到QoE影响因素中的播放流畅性,将码率切换幅度作为其中一个重要影响因素,特别是当播放缓存不足时需要进行码率下降操作,如果直接将码率切换至初始码率则可能引起码率骤降,因此需要为码率切换设定对应的过渡状态lt以减小码率骤降对QoE的影响;同时考虑到视频传输过程的网络带宽利用率,将最接近平均带宽的码率等级lb设置为其中一个目标状态;当存在带宽波动等原因需要进行码率切换时,为减少码率切换对QoE带来的影响,在一般情况下采用逐级递增或者递减的切换方式,因此将码率等级加1和码率等级减1作为目标状态;其他码率等级状态分别为码率等级保持和避免出现缓存溢出而设定的暂停请求状态。假设lk为vk对应的码率等级,在第k个片段完成下载之后,其对应的可转移状态如图1所示。接下来需要确定状态转移条件1~6,使码率自适应过程为客户提供尽可能好的QoE。 图1 状态转移图 根据文献[15]可知码率对于用户体验的影响遵循对数准则。因为mk和σk都与片段的码率直接相关,所以视频码率和播放流畅性对QoE的影响就可以分别用如下公式表示: Q_m=ln (mk+ε) (4) Q_σ=ln (σk+φ) (5) 两者整体对QoE的影响则可以通过式(6)描述: Qk=a*Q_m-b*Q_σ (6) 其中ε和φ为常系数,防止式(4)和(5)取对数时出现异常值,一般取数值1即可,片段码率均方差越小视频越流畅,{a,b|a+b=1,a>0,b>0}为两个影响因素的系数。 定义qmin、qmax分别为播放缓存qk的上下两个阈值,使qk保持在一定范围内即可避免出现缓存不足导致播放停顿或者缓存溢出等问题,如下所示: qmin (7) θk=|mk-bN|/bN (8) 其中:bN为最新请求的N个片段的平均下载带宽。定义θmax为码率偏移率的最大阈值,使θk保持在一定范围内,当视频码率与链路带宽在一定范围内保持一致时即可对播放缓存起到一个稳定作用,从而尽量避免码率出现周期性切换,限定条件如式(9)所示: 0≤θk≤θmax (9) 综上所述,转移条件1、2、3总的切换准则是:在满足播放缓存和码率偏移率在一定阈值的条件下选择Qk+1_max所对应的码率等级,因此,状态转移条件如下。 状态转移条件1 在满足总的切换准则的前提下,进行上升或者下降操作后的码率等级必须属于事先设定的码率等级集合{L0,L1,…,LK-1|L0 状态转移条件2 0≤θk≤θmax&&qmin 稳定的作物经济状况以及良好的种植条件促进了巴西种植的快速开始。有分析师认为未来巴西大豆面积将增加3%至5%,玉米面积将增加5%以上。 状态转移条件3 0≤θk≤θmax&&qmin 接下来对条件4进行分析,当θk>θmax&&qmin 状态转移条件4 θk>θmax&&qmin 此外,在视频请求的初始阶段,为保证尽可能低的初始播放时延,将初始码率设置为L0,当播放缓存达到阈值qmin时,状态转移条件4的限制能够将初始码率直接从L0提升至lb,不必经历码率逐步提升的阶段,从而尽快为客户提供高码率片段。 状态转移条件5 状态转移条件6 qk≥qmax 在播放缓存满足条件6的情况下,需要进行暂停请求的操作,当qk 本文所提算法的具体步骤如下所示。 2)计算mk、bN、θk。 3)判断是否满足条件qmin 4)判断是否满足条件qk 7)判断是否满足条件θk>θmax&&qmin 8)进行暂停请求操作,暂停时间为τs,并将lk赋予lk+1,算法结束。 为验证算法的有效性,本文采用NS3中DASH模块对算法进行仿真,操作系统为Ubuntu 14.04,主机CPU为2.3 GHz,RAM为4 GB,将本文所提算法SDASH与文献[9]所提的FDASH码率自适应算法在相同环境下进行对比,并分析其结果。在算法的验证实验中,将SDASH的QoE影响系数a和b分别设置为0.5和0.5,播放缓存的上下限qmin和qmax分别设置为8 s和90 s,码率偏移率的阈值θmax设置为0.25,最新请求的片段个数N设置为4。按照文献[9]原文的设定,FDASH的目标播放缓存设置为35 s,吞吐量估计周期设置为60 s,模糊逻辑控制器的输出成员函数的系数N1、N2、Z、P1、P2分别设置为0.5、0.25、1、1.5、2。本实验中服务端存储的视频码率设定为300 Kb/s、700 Kb/s、1 500 Kb/s、2 500 Kb/s、3 500 Kb/s五个等级,视频片段的固定长度为2 s,实验设定的仿真时长为500 s。 图2显示了两种自适应算法在链路带宽缓慢随机波动的情况下各自的片段码率变化曲线。图2显示的FDASH码率自适应机制在仿真的前112 s所传输的视频片段码率都是300 Kb/s,之后逐步攀升至3 500 Kb/s,持续到284 s后码率逐步下降到1 500 Kb/s,经过一段时间后又逐步上升到3 500 Kb/s。FDASH算法在仿真初始阶段持续请求低码率的视频片段,原因在于当播放缓存低于阈值时,FDASH采用保守的决策机制。当播放缓存达到一定阈值之后,又采用穷尽式的方式提升视频码率,虽然这可以短时提升观看体验,但同时也会使播放缓存出现大幅波动,容易产生周期性码率等级变化,且长时间请求低码率视频会严重降低QoE。 从图2中可以看出,本文所提的SDASH算法在仿真开始阶段,当播放缓存达到阈值之后,因为码率偏移率的限制,能够快速使视频码率从300 Kb/s提升至1 500 Kb/s,随着链路带宽的提升和播放缓存的增加逐步提升至2 500 Kb/s,并一直保持到仿真结束,整个过程没有出现码率阶跃或者骤降的情况。表1给出了本次实验两种算法各自的视频平均码率和码率切换次数。表1的结果显示,相比FDASH算法,本文所提SDASH算法决策出的片段平均码率要高0.11 Mb/s,且码率切换次数较少。 图2 带宽缓慢随机变化环境下算法性能对比 Tab. 1 Statistics of simulation results under slow and stochastic bandwidth variation 图3显示了两种自适应算法在链路带宽快速波动的情况下各自的片段码率变化曲线。 图3 带宽快速随机变化环境下算法性能对比 图3仿真结果显示,FDASH算法的仿真结果与图2中该算法的片段码率曲线整体趋势相似。SDASH算法能够在初始阶段就将视频片段码率从300 Kb/s提升至2 500 Kb/s,随着播放缓存和码率偏移率的变化,码率在1 500 Kb/s与2 500 Kb/s间缓慢波动;在278 s处由于播放缓存下降至8 s以下,因此码率下降两个等级至700 Kb/s,随着播放缓存的恢复,码率又回升至2 500 Kb/s,整个过程不存在码率阶跃或者骤降的情况。表2为带宽快速随机变化下的两种算法的平均码率和码率切换次数的对比结果,结果显示,SDASH算法决策的片段平均码率高出FDASH的决策结果0.28 Mb/s,提高约14.14%。码率切换次数方面,在带宽快速且大幅波动的情况下,经过SDASH算法决策的片段码率比FDASH算法的片段码率切换次数要多;但是在视频传输的初始阶段,SDASH算法相比FDASH算法能够更快将请求的片段上升到较高的码率等级。显然,持续提供较长时间的低码率视频将会降低观看体验质量,而本文所提算法SDASH能够一定程度上克服FDASH算法所存在的视频传输初始阶段码率决策较为保守的缺点。 表2 带宽快速随机变化下仿真结果统计 针对DASH应用环境中存在的播放流畅性与视频质量之间的矛盾,本文提出一种基于状态机的码率自适应算法,采用状态机对码率自适应过程进行控制,将影响因素的数值变化与视频码率之间的联系作为状态转移条件,依据一定的准则作出码率切换决策。实验结果表明,本文所提出的码率自适应机制能够较快将片段初始码率切换到较高码率,同时在保证较少码率切换次数的条件下,为客户提供较高的视频码率,且减少码率骤降等情况出现。下一步工作将在实际视频传输系统中应用本文所提算法,对码率切换是否会模糊场景切换这一问题进行研究,并对视频请求过程的QoE进行主观评价,根据反馈进一步优化算法。2 基于状态机的码率自适应算法
2.1 码率切换的状态转移过程
2.2 面向QoE的状态转移条件
2.3 算法流程
3 实验结果与分析
3.1 实验设置
3.2 结果分析
4 结语