基于模糊控制的流媒体自适应传输算法
2018-08-23侯永宏邢家明王利伟
侯永宏,邢家明,王利伟
(天津大学电气自动化与信息工程学院,天津 300072)
1 引言
基于HTTP(HyperText Transfer Protocol)的动态自适应流媒体传输协议DASH(Dynamic Adaptive Streaming over HTTP)[1]可以适应网络吞吐量的实时波动以及不同显示能力的智能终端,为用户提供最佳的体验质量QOE(Quality Of Experience),是目前流媒体服务的主流技术。与传统的RTP(Real-time Transport Protocol)/UDP(User Datagram Protocol)传输协议相比,DASH采用基于HTTP/TCP(Transmission Control Protocol)的传输机制,其主要优势在于[2]:(1)通用的Web(World Wide Web)服务器均支持HTTP协议,因此基于HTTP协议的服务器更易于推广;(2)基于TCP协议的视频传输可靠性更高,并且更容易穿越防火墙;(3)基于HTTP协议的可扩展性更强,相较于RTP可以更容易地扩展到CDN(Content Delivery Network)网络和P2P(Peer-to-Peer)网络。
在基于DASH的视频自适应传输机制中,客户端根据当前的网络吞吐量以及缓存等因素,自适应地调整申请的视频码率,来保证视频流畅播放,并使得用户的QOE最大化。而不同的自适应算法给用户带来的QOE不同,因此如何设计一种合理的控制算法来提高用户的QOE成为DASH的一个研究热点。
目前基于DASH的自适应算法大致可分为两种:(1)基于网络吞吐量的控制算法[2,3]。例如Thang等人[2]提出了平滑的吞吐量估计StbDASH(Smoothed throughput based DASH)算法,该算法采用加权移动平均值的方法,根据网络带宽和申请的视频码率的失配程度动态调整比例权重大小,并通过不同的比例权重对各个视频切片下载完成时的网络吞吐量进行加权平均并作为下一个切片下载时的网络估计吞吐量,进而调整申请的码率;(2)基于缓存控制的算法[4 - 6]。Müller等人[4]提出一种基于缓存的自适应BufDASH(Buffer based DASH)算法,该算法根据缓存占用率所在的区间不同,采用不同的方式进行吞吐量的估计,并调整申请的视频码率。Tian等人[5]采用了基于比例积分PI(Proportion-Integral)控制的PiDASH(PI control based DASH)算法,将缓存做为误差反馈量,通过PI控制器调整申请的视频码率,进而保证缓存稳定在一个较为安全的状态。Vergados等人[6]提出了一种基于模糊控制FASH(Fuzzy control based DASH)的自适应算法,该算法将缓存以及缓存变化量作为输入,通过模糊规则动态输出视频码率的选择标准,进而调整申请的视频码率。
尽管目前已有很多基于DASH的自适应控制算法,但这些算法仍存在很多问题。基于吞吐量的自适应算法忽略缓存视频量对于最终用户QOE的影响,而很多基于缓存的自适应算法通过将缓存值稳定在一个目标值来保证视频流畅播放,但这大大降低了视频的平均质量,而实际上缓存的视频余量只需要稳定在一个较为安全的区间即可。此外,现有的基于缓存的控制算法中关于缓存门限值如何界定的描述比较模糊,并且这些算法很难平衡视频平均质量和视频播放的流畅性对于用户QOE的影响。
鉴于此,本文提出了一种改进的基于模糊控制的自适应传输控制算法FuzDASH(improved Fuzzy control based DASH),该算法将缓存以及申请视频质量和网络吞吐量的码率失配度作为输入,并且克服了传统的模糊控制算法对于输出的控制变量物理意义界定模糊等问题。本文将下一时刻的缓存预期变化量作为模糊控制器的输出,实现了对下一个时刻缓存余量的预测,进而控制预测的缓存值稳定在一个安全的区间。然后,通过预测值反推出所需要申请的视频码率,最后采用一种码率波动性判决机制来保证视频质量平滑地切换。此外,为了合理设计缓存的安全区间,根据Shuai等人[7]的结论,本文将缓存安全区间的上限设为缓存最大值的70%。最后本文采用Claeys等人[8]提出的QOE评价模型对算法性能进行评价,和传统算法在虚拟和实际网络环境下的对比结果显示,算法FuzDASH可以在保证视频播放流畅的前提下提供更好的用户体验质量。
2 系统介绍
如图1所示,在DASH系统中,服务器在视频传输之前会将同一个视频资源编码成N个不同的码率版本,并将视频资源分割成时间间隔相同的视频切片(Segment),同时生成一份媒体描述MPD(Media Presentation Description)文件,它包含了视频切片的码率、分辨率及其服务器端存储所对应的URL(Uniform Resource Locator)等相应的属性信息。客户端会在视频传输前预先下载MPD文件,并通过解析获得服务器端视频资源的属性信息。在视频传输时,客户端根据网络吞吐量和缓存的视频余量以及MPD文件所提供的视频切片属性信息,采用HTTP-GET指令自适应地向服务器提出视频资源申请,直到K个视频切片下载完成。
Figure 1 Block diagram of DASH system图1 DASH系统框图
基于DASH的视频自适应传输机制的两个关键因素是网络吞吐量和缓存余量。网络吞吐量直接影响用户申请的平均视频质量。在DASH系统中,第k个视频切片下载完成时的网络吞吐量Trk可表示为单位时间内客户端接收到的字节数[9],即:
Trk=vk×τ/tdown
(1)
其中,tdown表示该视频切片完成下载所需要的时间,τ表示视频切片的时间长度,vk表示用户申请的第k个视频切片的码率。
客户端缓存的视频余量直接影响视频播放的流畅性。在DASH系统中,为了方便度量,通常用缓存的视频时间长度作为缓存的度量单位,即第k个视频切片下载完成时的缓存余量bk可度量为:
bk=bk-1+τ-tdown
(2)
Δbk=bk-bk-1
(3)
其中,Δbk表示第k个视频切片下载完成时的缓存变化量k>1。
根据式(1)~式(3),当申请的视频码率大于当前的网络吞吐量时,由于带宽的限制,缓存的视频余量减少,此时应当降低申请的视频码率,否则当缓存的视频余量降低为0 s时缓存下溢,视频播放中断;当申请的视频码率小于当前的网络吞吐量时,缓存视频余量增加,此时应当提高申请的视频码率,否则当缓存的视频余量高于某个门限值时,容易造成缓存上溢和带宽浪费。因此,缓存的安全性是视频流畅播放的前提。传统的基于缓存的算法多将缓存稳定在一个目标值,这样的控制方式直接降低了申请视频的平均质量,使得算法过于保守,极大程度地限制了用户的QOE。因此,一个合理的算法应当是将缓存稳定在一个较为安全的区间,以此来提高传输的视频质量,即:
bleng=bhigh-blow
(4)
其中,bhigh、blow和bleng分别表示缓存安全区间btar的上、下界限和缓存安全区间的长度。
此外,在DASH系统中,关于缓存门限值如何界定的解释比较模糊,极少的算法会考虑到不同的缓存门限值对用户QOE的影响。本文根据Shuai等人[7]的结论,将缓存安全区间的上限bhigh设为缓存最大值的70%。
在视频自适应传输时,用户根据网络吞吐量以及缓存余量自适应地调整申请的码率。由式(1)~式(3)可得,第k个视频切片的码率为:
×Trk
(5)
根据式(5)可知,当申请下一个视频切片即第k+1个视频切片时,可通过对下一视频切片下载期间的网络吞吐量和下载完成后的缓存变化量进行预测来确定下一个视频切片的码率vk+1。因此,本文采用上一个视频切片下载完成时的网络实际吞吐量作为下一个视频切片下载期间的网络估计吞吐量Tek[9],即:
Tek+1=Trk,k>1
(6)
自适应传输算法FuzDASH通过模糊推理输出缓存预期变化量,进而可通过式(5)和式(6)调整下一个视频切片的码率.
3 基于模糊控制的自适应传输算法
为合理地对下一个切片的缓存预期变化量进行预测,基于模糊控制的自适应控制算法FuzDASH将当前的缓存以及码率失配度作为模糊控制器的输入,通过模糊推理输出下一个视频切片下载完成时的缓存预期变化量,这样可以解决传统的基于缓存的控制算法输出的控制变量物理意义界定比较模糊的问题。同时通过设计合理的输入和输出变量的隶属函数,使缓存稳定在一个安全区间,提高申请视频的平均质量,使得用户QOE最大化。
Figure 2 Block diagram of FuzDASH图2 FuzDASH框图
图2所示为本文算法FuzDASH的系统框图,其中模糊控制模块是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制技术,主要分为四步:模糊化、模糊逻辑、模糊判断和解模糊。
3.1 模糊化
模糊化是将输入的精确数值通过隶属函数映射到其论域的各个子集的过程。本文将缓存以及视频切片的码率失配度作为模糊控制算法的输入,下一个视频切片下载完成时的缓存预期变化量作为输出。第k个视频切片码率和网络吞吐量的码率失配度pk定义为:
(7)
其中,pk表示第k个视频切片下载完成时的码率失配度,可以反映缓存的变化趋势。
为了使得视频可以流畅播放,通常的做法是尽量避免申请的视频质量和网络吞吐量的失配,因此本文以0作为参照标准,设计模糊集合{正大(P),匹配(M),负大(N)}来描述码率失配程度pk,其隶属函数如图3a所示。当pk>0时,码率失配度正大,申请的视频质量较为保守,继续以该码率进行传输会造成缓存的上溢;当pk<0时,码率失配度负大,申请的视频质量较为激进,继续以该码率进行传输会造成缓存下溢,当缓存降低为0 s时,视频播放中断;当pk=0时,申请的视频质量和网络吞吐量完全匹配,此时是最优的状态,但由于服务器视频编码等级和网络带宽实时波动的限制,申请的视频质量很难和网络吞吐量完全匹配。
模糊集合{较高(H),安全(S),较低(L)}用于对缓存余量进行模糊化处理,缓存的隶属函数如图3b所示。当缓存高于缓存安全区间上限时,缓存处于较高的状态;当缓存低于缓存区间下限时,缓存处于较低状态;当缓存处于安全区间时,缓存则处于一个安全状态。
在传统的基于缓存的控制算法中,通常通过输出一个控制因子来对下一个视频切片的质量进行调整,但这些控制因子的物理意义界定比较模糊,而本文所提的算法FuzDASH采用实际的物理量作为输出,即将缓存预期的变化量作为输出。模糊子集{大增(BI),小增(SI),不变(NC),小减(SD),大减(BD)}用来描述缓存预期的变化量的状态。通过调整缓存预期变化量的大小反推出申请的视频码率,进而使缓存余量稳定在安全区间,其隶属函数如图4所示,N1、N2、Z、P1、P2为输出隶属函数的各个中心值。
Figure 3 Membership function of the input variable图3 输入变量的隶属函数
Figure 4 Membership function of the output variable 图4 输出变量的隶属函数
3.2 模糊逻辑确立
模糊控制的关键是根据模糊推理获得模糊规则库。模糊推理主要表现为If-Then的专家决策[10]。根据DASH系统的实际控制经验,可根据缓存状态和码率失配度输出下一个视频切片下载完成时的缓存预期变化量,进而调整申请视频的码率,以此来使新的缓存值稳定在一个安全区间,并使码率失配度最小。例如当缓存较高,且码率失配度正大时,若继续以当前码率进行传输可能会造成缓存上溢,浪费带宽,此时输出的缓存预期的变化量应当大减,进而保证缓存收敛回安全区间,其他情况同理。模糊规则设计如表1所示。
3.3 逻辑判断
模仿人类下判断时的模糊概念,运用模糊逻辑和模糊规则进行推论,得到模糊控制信号。FuzDASH 通过选择两个输入变量隶属程度较大的数值作为该规则的程度值,以此来综合两个输入变量对该规则的影响。设第i条规则两输入变量xi、yi的隶属程度分别为Lxi、Lyi,则第i条规则的程度值ri为:
Table 1 Fuzzy control rules
ri=maxLxi,Lyi,i=1,2,…,9
(8)
3.4 解模糊
将输入模糊化后的模糊值转换为明确的控制信号,并作为系统的输出值。此步,本文采用重心法进行解模糊,根据输出的隶属函数的各个中心值,最终得到缓存预期的变化量Δbpre,即:
Δbpre=(N2×BR+N1×SR+Z×NC+P1×
SI+P2×BI)/(BR+SR+NC+SI+BI)
(9)
其中,N1、N2、Z、P1、P2为输出隶属函数的各个中心值,BR、SR、NC、SI、BI根据模糊规则通过式(10)计算,即:
BI=r1
SI=r2+r4
NC=r3+r5+r7
SD=r6+r8
BD=r9
(10)
根据式(6)所得到的下一个视频切片下载期间的网络估计吞吐量Tek+1,同时结合模糊控制器输出的缓存预期变化量Δbpre,即:
Δb(k+1)=Δbpre
(11)
采用式(5),对下一个视频切片对应的码率vk+1进行调整。
此外,为了避免视频质量产生不必要的波动,需对当前申请视频质量进行码率波动性分析。采用当前的视频切片码率继续申请25个视频切片后,缓存视频余量的估计值bprek,即:
bprek=bk+25×Δbk
(12)
设缓存的最优值为bref
bref=blow+bhigh/2
(13)
(1)当下一个视频切片的码率需要提高时,若bprek>bref,说明当前的视频质量较为保守,需要提高申请的视频质量,即采用新的视频码率进行申请,否则保持原视频码率不变。
(2)当下一个视频切片的码率需要降低时,若bprek 本文在Ubuntu14.04上搭建Apache服务器,采用Big Buck Bunny[11]作为测试序列,模拟时长为400 s和600 s的视频传输。采用x265作为视频编码器,借鉴Netflix[12]编码方案将视频编码成5个视频等级:300 Kbps、700 Kbps、1 500 Kbps、2 500 Kbps、3 500 Kbps。选用Mp4box工具对视频进行封装和切割。客户端采用开源的C++平台Libdash[13]。此外,为了模拟网络环境,本文采用DummyNet[14]软件模拟了文献[12]所设计的两种网络环境:带宽长周期(Long-term)波动和带宽短周期(Short-term)波动,并在文献[4]提到的两种实际环境(Real1,Real2)中进行了性能测试,最后采用Matlab做数据处理。此外,根据实际的实验环境,本文将最大缓存设置为35 s,根据文献[7]的结论,将缓存安全区间上限设置为最大缓存的70%,结合文献[12]的经验将缓存安全区间长度设置为15 s,即btar为 [10 s,25 s]。根据多次实验,将输出隶属函数的各个中心值N1、N2、Z、P1、P2分别设置为-2、-1.5、0、0.75、1.5。 为了评估算法的性能,本文采用引言提到的四种算法StbDASH、BufDASH、FASH、PiDASH作为对比算法,并分别在4.1节提到的两种模拟网络环境和两种实际网络环境中进行性能测试。 在基于DASH的自适应传输系统中,不同的传输算法所呈现的QOE指标不同。为了对每个算法进行性能评估,本文采用Claeys等人[8]提出的QOE评价模型,该模型强调影响QOE的三个主要因素为:申请视频的平均质量、视频播放流畅度以及视频质量的波动性。因此,将三个因素按照不同的权重线性结合,最终根据数值直观地评价用户体验质量,即: QOE=4.85×Q-4.95×F-1.57×S+0.5 (14) 其中,Q表示申请视频平均质量,Q值越高,则传输的总码率越高,因此相同的网络环境下带宽利用率越高;F表示视频播放的流畅度,当客户端缓存降低为0 s时,客户端发生视频播放中断。根据实际的用户体验,视频播放中断次数越高和中断时间越长,F值越高;S表示视频质量的波动情况,视频质量波动越频繁且视频质量波动的码率深度越大,S值越大。根据文献[8],Q、F、S量化后的数学模型表示为: (15) 其中,K代表传输的视频切片总数量;vL为最大质量等级的视频码率,v1表示最低质量等级的视频码率;frfref和frtime分别表示视频停顿频率和停顿时间;swnumber和swdepth分别表示视频质量波动次数和码率波动平均深度。 Figure 5 Video bitrate adaptation under short-term bandwidth variations图5 带宽短周期变化环境下各算法码率自适应过程 本文首先采用两种模拟的网络环境:带宽短周期(Short-term)波动和带宽长周期(Long-term)波动来测试各算法性能。如图5所示,网络吞吐量先保持在2 Mbps,并在4 Mbps 和0.5 Mbps波动,每次波动的时间长度为2~4 s的短周期,该环境用于测试算法对于带宽即时波动的灵敏度。如图6所示,网络吞吐量从2 Mbps开始,在区间3 Mbps和1.5 Mbps以长周期50~100 s进行平滑波动,该环境用于测试算法在带宽平滑波动的网络环境下的稳定性。实验结果如图5和图6所示。各个算法在这两种网络环境下的性能指标汇总至表2和表3。 Figure 6 Video bitrate adaptation under long-term bandwidth variations图6 带宽长周期变化环境下各算法码率自适应过程 StbDASH在长周期和短周期的带宽波动环境下,申请的视频质量比较保守,该算法申请的视频质量低于网络估计吞吐量,从表2和表3可以看出,StbDASH算法的Q值远低于其他几种算法的Q值,因此用户申请的平均视频质量较低。此外,从图5a和图6a可以看出,StbDASH算法在两种环境中均出现了缓存上溢,因此会使带宽利用率降低。如图5b、图5d和图6b、图6d所示,在两种虚拟网络环境中BufDASH和PiDASH算法分别将缓存稳定在一个较为安全的缓存值18 s,但牺牲掉了视频质量切换的流畅性,因此导致视频质量波动较为频繁,从表2和表3可以看出,在两种虚拟网络环境下,BufDASH和PiDASH算法传输的视频平均质量保持在一个较高的水平,但由于视频质量切换较为频繁,视频质量波动性指标S较高,因此用户QOE没有最大化。如图5c和图6c所示,FASH算法在两种模拟网络环境中表现出的性能相对保守,由于缓存的视频余量超过了最大门限,因此出现了缓存上溢的现象,使得带宽利用率和视频的平均质量较低,由于本文实验环境的最大缓存为35 s,目标缓存为17~18 s,使得该算法在防止视频质量抖动方面的方案失效,视频质量抖动较为明显,S较高,且传输的视频平均质量较低,Q值明显低于BufDASH和PiDASH算法的Q值,因此QOE较低。如图5e和图6e所示,本文所提出的算法FuzDASH在两种网络环境中表现出较好的性能,视频缓存稳定在安全的区间[10 s,25 s],尽管S值较StbDASH算法略高,但其相较其他算法仍保持较低的水平,并且牺牲掉视频质量较小的波动,可以换取更高的视频总码率,因此,在这两种模拟网络环境下,FuzDASH的Q值均较高,所以总的QOE指标更优,给用户带来的体验质量更好。 Figure 7 Video bitrate adaptation under Real1图7 实际网络环境Real1下各算法码率自适应过程 算法Q/%S/%F/%QOEStbDASH44.51.802.631BufDASH55.713.602.988FASH54.212.602.934PiDASH55.28.103.049FuzDASH56.22.103.195 此外,为了对各个算法的实际性能进行测试,分别在两种实际网络环境 (Real1,Real2) 下进行5种算法的性能测试,最终实验结果如图7和图8 Table 3 Performance of each algorithmunder long-term bandwidth variations 所示。各算法在这两种网络环境下的性能指标汇总至表4和表5。 Figure 8 Video bitrate adaptation under Real2图8 实际网络环境Real2下各算法码率自适应过程 图7和图8、表4和表5的实验结果表明,StbDASH算法在实际网络环境中依旧表现出较为保守的性能,缓存上溢,因此平均视频质量较低。BufDASH和FASH算法相对较为稳定,但最终的QOE指标均低于FuzDASH。PiDASH算法在网络环境Real1中,连续出现了两次视频中断,使得视频播放流畅性指标F达到23.8,这大大降低了用户的QOE。而本文提出的算法FuzDASH 在两种实际网络环境中均表现出较好的性能,尽管在实际的网络环境下仍然会造成一定量的视频码率抖动,但受限于实际的网络带宽环境这种损失是无法避免的,且FuzDASH已将视频抖动所造成的负面影响降低到最小,并在S值较小的前提下,尽量提高视频码率,以此来提高Q值,使总的QOE较高。表4和表5的实验结果表明,与其他的算法对比,FuzDASH有更好的性能。 Table 4 Performance of each algorithm under Real 1 Table 5 Performance of each algorithm under Real 2 为了方便对比,本文将各算法在不同的网络环境中的QOE指标汇总并用柱状图表示成图9。通过比较各算法的QOE可知,StbDASH算法传输的视频平均质量较低,因此在各环境下的QOE指标值较低。BufDASH、FASH、PiDASH三种算法所呈现的QOE指标值较为接近,其中PiDASH在带宽长周期波动的环境中所呈现的QOE指标值为3.406,该性能明显优于StbDASH、BufDASH和FASH,但是由于PiDASH在网络环境Real1中发生了两次视频中断,使得QOE指标在该环境下最低,可见该算法的性能稳定性较差。本文所提出的算法FuzDASH在四种网络环境下的QOE指标最高,因此相较于其他的算法,FuzDASH的性能更优且性能较为稳定。 Figure 9 QOE of each algorithm under different network conditions图9 各算法在不同的网络环境中的QOE指标 本文在已有研究的基础上,提出了一种基于模糊控制的视频自适应传输算法FuzDASH,该算法将缓存以及码率失配度作为系统输入,通过模糊推理将下一个时刻预期的缓存变化量作为输出,进而调整所申请的视频码率,以此来使缓存稳定在一个较为安全的区间。为了使视频流畅播放,FuzDASH对当前申请视频质量进行码率波动性分析来决定是否改变当前申请的视频码率,以避免不必要的视频质量波动。最后在两种虚拟网络环境和两种实际网络环境下进行性能测试,本文所提的算法FuzDASH 相对于其他的几种对比算法,表现出更高的QOE指标,因此可以给用户带来更好的用户体验。4 实验
4.1 实验平台
4.2 算法性能评价标准
4.3 实验结果和分析
5 结束语