随着互联网以及移动智能终端的高速发展, 多媒体服务在人们的日常生活中起到越来越大的作用[1]。但是随着多媒体数据流量的增加和用户要求的不断提高, 当前广泛使用的基于用户数据报协议(User Datagram Protocol, UDP)的实时传输协议/实时流传输协议(Real-time Transport Protocol/Real Time Stream Protocol, RTP/RTSP)存在着部署成本高、面向连接、难于穿越防火墙, 以及与内容分发网络(CDN)不兼容等一系列问题[2-4], 这些问题严重制约了流媒体技术的进一步推广, 影响用户的观看体验, 已经越来越不能满足人们的需要[5-6]。
为了解决上述问题, 动态图像专家组(Moving Picture Experts Group, MPEG)联合第三代合作伙伴计划(3rd Generation Partnership Project, 3GPP)共同开发了新一代基于超文本传输协议的动态自适应流(Dynamic Adaptive Streaming Over HTTP, DASH)媒体[7-9]。但是DASH标准只对多媒体文件的切分、存储、传输等内容进行了规范, 对提高用户观看体验的动态自适应码率选择算法却没有作具体规范说明, 所以该算法成为现今的研究热点之一[6, 10-11]。
当前存在多种码率选择算法, 比较经典的是Thang等[12]提出的基于带宽预测的平滑流(Smooth Flow, SF)码率选择算法, 但是该算法存在以下两个问题:首先, 当网络带宽发生短时剧烈变化时, 其及时响应机制会导致预测带宽出现剧烈变化(即产生“毛刺”现象), 严重影响用户观看体验;其次, 该算法并没有考虑缓存区的状态, 这极可能导致缓存区出现“溢出”, 发生播放停滞。
针对上述问题, 本文做了以下工作:首先,为了消除SF算法在带宽预测上存在的毛刺现象, 使用标准差的方式代替原算法对波动参数的计算, 使得带宽预测结果更加平滑; 其次,为了解决SF算法不考虑缓存区状态所导致的频繁播放停滞, 以及传统缓存区存在的分级困难等问题, 引入了一种新的缓存区管理策略; 最后将该策略与预测带宽相结合, 避免了仅依靠单一算法选择码率的不足, 使所选码率切片既能适应实际网络变化, 又能保证流畅播放。实验结果表明, 本文算法不但能够有效消除SF算法中由于“毛刺”现象造成的码率选择不平滑, 而且有效降低了缓存区“溢出”的可能性, 实现视频的流畅播放, 极大提高用户观看体验。
1 相关工作DASH协议综合当前三大主流流媒体协议优点, 规定了多媒体内容的切分、存储、传输等规范[13-14], 但对其重要的一环即动态自适应码率选择算法却没有作出具体的规范[15], 现在的码率选择算法主要包括以下两种:第一种是基于带宽预测的码率选择算法, 例如, 文献[16]提出了根据当前切片的带宽去预测未来可利用带宽; 文献[12]对上述方法进行了改进, 提出不仅依靠当前带宽, 还要结合历史情况的预测方法。第二种是基于缓存区容量的码率选择算法, 例如,文献[17]提出一种基于缓存区等级的选择算法,文献[3]提出了一种基于缓存区等级的改良算法。
1.1 码率选择算法目标基于DASH协议的动态自适应流媒体技术在设置码率选择算法时按照优先级从高到低应当依次满足以下四个要求[18]:尽量确保视频的流畅播放; 尽量减少视频码率的切换次数; 尽量提高所选择视频切片的平均码率; 尽量降低视频在开始播放时的延时。
1.2 基于带宽预测的码率选择算法其主要思想是通过对之前下载的视频切片的带宽进行收集处理, 进而预测下载下一个切片的网络带宽。比较典型的是SF算法[12], 该算法对网络带宽变化的敏感度比较高, 可以比较精确地估计网络带宽。预测公式如下:
$ {B_e}(i) = \left\{ {\begin{array}{*{20}{c}} {(1 - \delta ){B_e}(i - 2) + \delta {B_s}(i - 1), \;\;\;\;i \ge 3}\\ {{B_s}(i - 1)\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i = 1, 2} \end{array}} \right. $ | (1) |
其中:Be(i)表示下载第i个切片的估计带宽; Bs(i)表示第i个切片的实际下载带宽值。Bs(i)的计算公式如下:
$ {B_{\rm{s}}}(i) = \frac{{{\mu _{{\rm{bit}}}}(i)*\theta }}{{{t_{{\rm{end}}}}(i) - {t_{{\rm{star}}}}(i)}} $ | (2) |
其中: μbit(i)为第i个切片的码率; θ为切片持续时长, 本文θ为常量2 s; tend(i)为第i个切片下载完成的时间; tstar(i)为第i切片开始下载的时间。
δ为带宽变化系数, 其取值范围为(0, 1)。当带宽变化较大时, 为了保证对网络变化的敏感性, δ值也较大, 那么估计带宽值就越接近上一个切片的实际带宽值, 估计越准确; 当带宽变化较小时, 为了保证带宽预测值的平滑性, δ的值也较小, 那么估计带宽值就越接近历史情况, 估计值越平滑。δ的计算公式为:
$ \delta = \frac{1}{{1 + {{\exp }^{\left( { - k(p - {p_0})} \right)}}}} $ | (3) |
其中:k和p0为特定值, 为保证p与δ满足图 1所示关系(当p > 0.4时视为网络带宽波动较大, p < 0.1时视为带宽波动较小),这里取k=21, p0=0.2。p值的计算公式为:
$ p = \frac{{|{B_s}(i) - {B_e}(i)|}}{{{B_e}(i)}} $ | (4) |
p-δ符合logistic函数模型:当p > 0.4时, δ的值趋近于1;当p < 0.1时δ值较小(δ < 0.1)。p-δ关系如图 1所示。
在SF算法中, 当带宽属于中长期小幅度波动时, 该算法由于考虑了历史因素的影响, 可以实现对带宽的平滑预测, 减少视频码率的切换次数, 即可以满足1.1节第二条要求; 而且当带宽属于长期大幅度波动时, p和δ参数可以使带宽预测更符合实际情况, 更加准确。但是从实际情况来看,该码率自适应算法是存在缺陷的, 首先, 由1.1节提及的四点要求可知该算法只满足了第二点, 其他三点要求尤其是最重要的第一点在算法中并未体现, 这样会增加出现视频播放停滞的可能性, 出现用户最不愿意看到的视频播放停滞;其次在一些情况下第二点要求也不能很好地满足。具体原因如下:因为无线信道受到的影响因素较多, 信道不稳定、易突变, 极可能由带宽的瞬时剧烈变化导致预测带宽发生突变, 即产生“毛刺”现象。这会直接造成所选择视频切片码率的短时剧烈波动, 导致视频播放出现抖动, 严重影响客户的观看体验。
1.3 传统的基于缓存区容量控制的码率选择算法其主要思想是通过将客户端缓存区划分为多个阈值区间, 依据当前缓存区容量所处区间选择不同码率的视频切片。Muller等[17]提出了一种类似算法, 该算法可以根据缓存区等级设置不同的带宽系数, 系数随着缓存区等级的增加而增加, 下一个切片码率由上一个切片的码率和缓存区系数共同决定, 如式(5) 所示:
$ r({s_i}) = \left\{ {\begin{array}{*{20}{l}} {bw({s_{i - 1}})*0.3, \;\;\;\;\;\;\;\;0 \le b{l_i} < 0.15}\\ {bw({s_{i - 1}})*0.5, \;\;\;\;\;\;\;\;0.15 \le b{l_i} < 0.35\;}\\ {bw({s_{i - 1}}), \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;0.35 \le b{l_i} < 0.5\;\;\;\;}\\ \begin{array}{l} bw({s_{i - 1}})*(1 + b{l_i}*0.5), \;\;\;\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;0.5 \le b{l_i} < 1 \end{array} \end{array}} \right. $ | (5) |
其中:r(si)表示算法选择的码率; bw表示切片码率; si表示切片序号; bli表示当前缓存区切片数量所占缓存区总容量的比例。
Muller等所提算法同许多基于缓冲区的码率选择算法一样, 有许多共同的缺点:首先基于缓存区的码率选择算法完全没有考虑实际网络带宽变化对所选码率造成的影响, 极易造成所选切片码率与实际带宽的较大差异, 造成码率频繁切换; 其次传统的基于缓存区容量控制的码率选择算法其缓存区等级很难设置, 等级设置过于密集会使码率频繁切换, 设置过于稀疏又不能及时调整所选码率, 造成播放停滞。
为有效解决SF算法和传统基于缓存区容量控制的码率选择算法存在的问题,并充分考虑码率选择目标,本文提出了一种混合控制码率选择算法。
2 改进算法 2.1 改进SF算法对于SF算法中带宽瞬时突变所带来的“毛刺”现象, 客户并不希望所选切片码率也随之剧烈变化, 相反, 更希望设计的算法可以有效抵御这种现象, 平滑预测带宽, 减少码率的切换次数, 提高用户观看体验。
“毛刺”现象产生的主要原因是当网络带宽发生瞬时突变时, 由于p仅仅依靠过去一个切片的实际带宽与预测带宽来决定, 那么当p值发生剧烈改变时, δ也会发生较大变化, 由式(1) 可知预测带宽大部分会由下载上一个切片时的实际带宽所决定, 这样就产生了“毛刺”现象。因为p的大小决定了网络波动的大小, 因此, 为了解决这种现象使预测带宽更加平滑, 本文将p的计算方法作了改变。由于标准差可以反映数据波动程度的大小, 所以本文用它来计算p, 即:不再依靠过去一个切片的实际带宽与预测带宽来决定, 而是依靠过去一组带宽数据的标准差来决定, 这样即使出现带宽的瞬时突变, 预测带宽也会保持平滑, 从而解决“毛刺”现象。
p的计算公式如式(6) 所示:
$ p = s(i)/\overline {{B_s}(i)} $ | (6) |
其中:s(i)表示标准差;Bs(i)表示下载第i个切片的网络带宽。s(i)和Bs(i)的计算公式如下:
$ s(i) = \sqrt {\sum\limits_{j = i - n}^i {{{({B_s}(j) - \overline {{B_s}(i)} )}^2}/n} } $ | (7) |
$ \overline {{B_s}(i)} = (\sum\limits_{j = i - n}^i {{B_s}(j)} )/n $ | (8) |
其中:
针对传统的缓存区控制策略存在等级划分困难, 提出了一种新型缓存区控制策略。该策略只在缓存区加入两个“阈值”qmin和qmax:当缓存区切片数小于qmin时, 存在下溢出的可能性;当切片数大于qmax时, 存在上溢出的可能性。为避免由缓存区下溢导致的视频播放停滞, 同时为避免由缓存区上溢, 导致的带宽浪费, 这里要尽可能保证缓存区切片数在这两个阈值之间。说明:原图 2意义不大。删去“其示意图如图 2所示。”
本文算法的参数和含义如表 1。
由于仅使用带宽预测的算法选择码率不能顾及带缓存区的变化, 仅根据缓存区容量进行码率选择又不能兼顾带宽的实际情况。为了使码率选择算法所选码率既能适配实际网络带宽情况, 又可以有效减少由缓存区溢出导致的播放停滞或带宽资源的浪费, 本文提出一种混合控制码率选择算法, 该算法将改进的SF算法与缓存区管理相结合。若第i个切片为待下载的切片, 则其码率可以根据当前缓存区所处的不同状态并结合预测带宽来共同选择。第i个切片下载完成后缓存区的剩余时长公式如(9) 所示:
$ T({t_{{\rm{end}}}}(i)) = T({t_{{\rm{star}}}}(i)) + \theta-({t_{{\rm{end}}}}(i)-{t_{{\rm{star}}}}(i)) $ | (9) |
$ {\rm{又}}\;\;\;{B_e}(i) = \frac{{{\mu _{{\rm{bit}}}}(i)*\theta }}{{{t_{{\rm{end}}}}(i) - {t_{{\rm{star}}}}(i)}}\;\; $ |
$ {\rm{则}}\;\;\;{t_{{\rm{end}}}}(i) - {t_{{\rm{star}}}}(i) = \frac{{{\mu _{{\rm{bit}}}}(i)*\theta }}{{{B_e}(i)}} $ | (10) |
将(10) 代入式(9) 可得:
$ {\rm{T}}({t_{{\rm{end}}}}(i)) = T({t_{{\rm{star}}}}(i)) + \theta - \frac{{{\mu _{{\rm{bit}}}}(i)*\theta }}{{{B_e}(i)}} $ | (11) |
混合控制码率选择算法步骤如下:
1) 当T(tstar(i)) < qmin时,缓存区的切片有用完的可能性, 为确保第i个切片下载完成后缓冲区有足够的视频切片,必须保证T(tend(i))≥qmin,则其码率应该满足式(12):
$ {\mu _{{\rm{bit}}}}(i) \le {B_e}(i) + \frac{{{B_e}(i)}}{\mathit{\theta }}(T({t_{{\rm{star}}}}(i)) - {q_{\max }}) = \psi $ | (12) |
那么第i片所选取的码率μbit(i)应该为max(μbit(1), ψ), 但是由于码率值是一系列离散值, 所以在保证视频播放流畅的前提下最终的码率值为距离max(μbit(1), ψ)最近的小于或等于max(μbit(1), ψ)的值。
2) 当T(tstar(i)) > qmax时,缓存区有了充足的切片, 继续下载有上溢出的可能性, 为了确保第i个切片下载完成后缓存区不发生上溢,必须保证T(tend(i))≤qmax, 则其码率应该满足式(13):
$ {\mu _{{\rm{bit}}}}(i) \ge {B_e}(i) + \frac{{{B_e}(i)}}{\mathit{\theta }}(T({t_{{\rm{star}}}}(i)) - {q_{\max }}) = \xi $ | (13) |
这时, 根据μbit(p)与ξ的关系, 有以下几种情况:
1) 当μbit(p)≥ξ时, 为了保证视频画面尽可能小的抖动, 选取的码率值应该为ξ, 但是由于码率值是一系列离散值, 所以最终的码率值为距离ξ最近的大于或等于ξ的值。
2) 当μbit(p) < ξ时,继续下载必定会出现缓存区上溢, 为了避免这种情况发生, 启动睡眠机制, 即下载会被暂停一段时间(这里暂停时间为一个切片持续时间2 s)。暂停过后重新计算缓冲区剩余的时长, 继续进行码率判决。
3) 当qmin < T(tstar(i)) < qmax时,缓冲区的分片数在一个最优的范围中, 码率的取值范围如式(14) 所示。为减少码率波动对观看体验造成的影响, 这里让本次请求的码率值与上一个切片码率值保持相同, 即μbit(i)=μbit(i-1)。
$ \left\{ {\begin{array}{*{20}{c}} {{B_e}(i) + \frac{{{B_e}(i)}}{\mathit{\theta }}(T({t_{{\rm{star}}}}(i)) - q\max ) < {\mu _{{\rm{bit}}}}(i)}\\ {{B_e}(i) + \frac{{{B_e}(i)}}{\mathit{\theta }}(T({t_{{\rm{star}}}}(i)) - {q_{\min }}) > {\mu _{{\rm{bit}}}}(i)} \end{array}} \right. $ | (14) |
实验的组织结构如图 2所示, 服务器使用了apache tomcat-8.0.23, 运行在Windows 7(64位)系统上, 对网络环境的模拟用Dummynet网络控制器实现;客户端使用联想Y-470 PC, 操作系统为Windows 7(64位), CPU为2.3 GHz, 2 GB RAM。
实验所用数据来源Big Buck Bunny, 所有切片持续播放时间为2 s, 实验选用8种码率(100 Kb/s, 200 Kb/s, 400 Kb/s, 600 Kb/s, 700 Kb/s, 800 Kb/s, 900 Kb/s, 1 000 Kb/s)。缓存区最大时长为30 s, 综合考虑缓存区容量与切片持续时长, 现将缓存区下溢阈值qmin设置为10 s, 上溢阈值qmax为20 s。计算前n个切片标准差时, n的值选择太大会降低算法对带宽的灵敏度, 导致码率选择发生迟滞, n值选择太小又不能起到平滑带宽的作用。实验测得, n取值为5~8效果较好, 这里让n取5。为了保证实验对比结果, 本文其余参数与SF算法保持一致。
实验分两部分进行, 第一部分比较了在带宽发生突变时, SF算法与改进算法在带宽预测中的不同表现, 第二部分通过12次实验比较了在不同网络环境下(每种环境3次)本文所提算法与SF算法在播放300 s视频过程中的平均停滞频率(次/分)。
3.2 算法性能分析图 3显示了SF算法和本文改进算法对带宽的预测结果, 从中可以看到实际带宽在第136 s发生了短时剧烈变化, 预测带宽随后也跟着发生了较大波动(即出现毛刺现象);再由图 4可看到其预测带宽的波动导致了选择视频码率的剧烈变化, 其主要原因是SF算法不涉及缓存区, 选择的码率为低于预测带宽, 且距离预测带宽最近的可用码率值, 所以才会由带宽波动引起选择码率的变化。这在实际情况中会出现画质抖动, 降低用户的观看体验。但是, 由图 3可知本文的改进算法在带宽发生短时突变时, 预测带宽波动较小, 很好地消除了原算法存在的毛刺现象, 实现了带宽的平滑预测;而且在图 4可以看到其码率保存不变, 没有产生波动, 达到了最初目标。从图 4还可以看出,带宽在105~117 s内发生了较长时间较大的波动, SF算法在这段时间里码率切换频率大于本文算法, 主要原因是本文设置的缓存区会抵消部分带宽波动对选择码率的影响, 减少了切换频率。
表 2为没有缓存区管理的SF算法与本文所提混合算法在不同网络环境下对视频播放停滞情况的比较。从表 2可看出:在网络情况良好时, 两种算法都没有发生视频停滞; 在网络情况一般时,选择小码率进行下载使得SF算法与本文算法的停滞频率没有太大差别;在网络情况差时(网络带宽与延时都加以限制),本文算法的视频停滞频率明显低于SF算法(约降低43%),这是由于本文算法所设置的缓存区有效抵御了网络波动,减少了缓存区溢出次数。
本文提出了一种基于DASH的动态自适应混合控制码率选择算法, 该算法先对SF算法[12]进行改进, 消除了原算法由于带宽突变导致预测带宽出现毛刺现象; 其次引入了一种新型缓存区控制策略, 并将带宽预测与缓存区控制相结合, 按照1.1节提到的码率选择算法目标的重要程度, 实现了在优先保证流畅播放的前提下对实际网络变化的跟踪响应, 最优化视频观看体验。但是也应该注意到, 本文算法为了保证流畅、平滑的播放效果, 牺牲了对网络变化的反应速度, 使得本文算法相对于原算法在带宽预测的精确度有所降低, 这也是下一步要研究解决的问题。
[1] | 朱晓晨. 基于HTTP的网络视频传送技术及其应用研究[D]. 南京: 南京邮电大学, 2013: 2-24. (ZHU X C. Research on technology of network video transport over HTTP and its applications[D]. Nanjing: Nanjing University of Posts and Telecommunications, 2013: 2-24.) |
[2] | 夏勃. 动态自适应流媒体技术的研究与实现[D]. 北京: 中国科学院研究生院, 2014: 2-26. (XIA B. Research and implementation of dynamic adaptive streaming over HTTP [D]. Beijing: Graduate University of Chinese Academy of Sciences, 2014: 2-26.) |
[3] | 谢伟男. 基于DASH协议的Android平台流媒体播控系统和质量优化[D]. 北京: 北京邮电大学, 2015: 6-47. (XIE W N. Design and implementation of DASH protocol based mobile multimedia system on Android [D]. Beijing: Beijing University of Posts and Telecommunications, 2015: 6-47.) |
[4] | 田苗. 基于DASH标准的具有视频预览功能的移动多媒体系统[D]. 北京: 北京邮电大学, 2014: 2-31. (MIAO T. DASH protocol based moblie multimedia system with video preview function[D]. Beijing: Beijing University of Posts and Telecommunications, 2014: 2-31.) |
[5] | 刘娟. 无线环境下DASH的性能优化研究与实现[D]. 北京: 北京邮电大学, 2013: 4-19. (LIU J. Research and implementation of DASH performance optimization in wireless[D]. Beijing: Beijing University of Posts and Telecommunications, 2013: 4-19.) |
[6] | 李志峰. 基于MPEG-DASH标准的流媒体服务器搭建和播控优化[D]. 北京: 北京邮电大学, 2014: 12-51. (LI Z F. The set-up of streaming media server based on MPEG-DASH standard and broadcast control optimization[D]. Beijing: Beijing University of Posts and Telecommunications, 2014: 12-51.) |
[7] | ZHOU C, LIN C W, GUO Z. mDASH: a Markov decision-based rate adaptation approach for dynamic HTTP streaming[J]. IEEE Transactions on Multimedia, 2016, 18(4): 738-751. DOI:10.1109/TMM.2016.2522650 |
[8] | HWANG J, LEE J, YOO C. Eliminating bandwidth estimation from adaptive video streaming in wireless networks[J]. Signal Processing: Image Communication, 2016, 47: 242-251. DOI:10.1016/j.image.2016.06.013 |
[9] | PETRANGELI S, BOUTEN N, DEJONGHE E, et al. Design and evaluation of a DASH-compliant second screen video player for live events in mobile scenarios[C]//Proceedings of the 2015 IFIP/IEEE International Symposium on Integrated Network Management. Piscataway, NJ: IEEE, 2015. |
[10] | LIN Q, LIU Y, SHEN Y, et al. Bandwidth estimation of rate adaption algorithm in DASH[C]//Proceedings of the 2014 Globecom Workshops. Piscataway, NJ: IEEE, 2014: 243-247. |
[11] | XING M, XIANG S, CAI L. Rate adaptation strategy for video streaming over multiple wireless access networks[C]//Proceedings of the 2012 IEEE Global Communications Conference. Piscataway, NJ: IEEE, 2012: 5745-5750. |
[12] | THANG T C, HO Q D, KANG J W, et al. Adaptive streaming of audiovisual content using MPEG DASH[J]. IEEE Transactions on Consumer Electronics, 2012, 58(1): 78-85. DOI:10.1109/TCE.2012.6170058 |
[13] | ROMERO L R. A dynamic adaptive HTTP streaming video service for Google Android[EB/OL]. [2017-01-10]. http://www.diva-portal.org/smash/get/diva2:507848/fulltext01. |
[14] | ZHOU C, ZHANG X, HUO L, et al. A control-theoretic approach to rate adaptation for dynamic HTTP streaming[C]//Proceedings of the 2012 IEEE Visual Communications and Image Processing. Piscataway, NJ: IEEE, 2012: 1-6. |
[15] | LI Y, WANG Y, WANG S, et al. An adaptative bitrate algorithm for DASH[C]//Proceedings of the 2016 IEEE International Conference on Multimedia & Expo Workshops. Washington, DC: IEEE Computer Society, 2016: 1-4. |
[16] | LIU C, BOUAZIZI I, GABBOUJ M. Rate adaptation for adaptive HTTP streaming[C]//MMSys 2011: Proceedings of the Second Annual ACM Conference on Multimedia Systems. New York: ACM, 2011: 169-174. |
[17] | MULLER C, LEDERER S, TIMMERER C. An evaluation of dynamic adaptive streaming over HTTP in vehicular environments[C]//MoVid 2012: Proceedings of the 4th Workshop on Mobile Video. New York: ACM, 2012: 37-42. |
[18] | 丁雪瑶. 基于DASH协议的自适应流媒体传输系统研究[D]. 北京: 北京邮电大学, 2013: 7-21. (DING X Y. The study of adaptive streaming system based on the DASH protocol[D]. Beijing: Beijing University of Posts and Telecommunications, 2013: 7-21.) |