钱洋,龚秋石
〔东南大学网络空间安全学院,江苏南京 211189;网络空间国际治理研究基地(东南大学),江苏南京211189〕
视频点播服务(Video on Demand,VoD)是现在网络流量中的主流,据预测,在2022年网络中视频流量将占据总流量80%以上[1]。然而,面对当前如此复杂多变的网络环境,传统的视频传输技术难以适应网络带宽的抖动,不能充分利用信道的容量,很难保证视频流的服务质量,这使得用户体验质量大大降低。如何在动态网络环境中实现视频流的自适应传输是当前的研究热点。动态地调整服务端发送的视频码率目前有两种实现技术。(1)自适应码率(Adaptive Bitrate,ABR)技术。在服务器端采用非可伸缩性编码视频,并存储多个码率版本,在用户带宽变化的时候传输不同码率的视频流。(2)可伸缩性视频编码(Scalable Video Coding,SVC)技术[2]。可伸缩性编码视频仅需要在服务器端存储一个最高码率的版本,无需占用额外的存储空间,同时可伸缩性视频编码技术可以通过调整输出的层次来传输不同码率的视频流。目前,诸如YouTube等VoD服务商,主要采用自适应码率ABR方案。ABR技术一方面,同一个视频需要在服务器端保存多个不同码率的版本,占用较多的存储空间。另一方面,ABR技术在服务器端存储的码率有限,未必可以完全利用带宽。与ABR技术相比,SVC技术不存在这几个方面的缺陷,通过切换输出层数,SVC视频流能够有效地适应网络动态变化的视频播放。但是,目前还没有一种完美的层次自适应选择策略来最大限度发挥SVC的优势。
针对动态网络环境并且考虑到ABR技术的上述缺陷,本文设计了一个采用SVC的视频传输系统,并从用户体验质量(Quality of Experience,QoE)的角度出发,利用马尔可夫决策过程(Markov Decision Process,MDP)理论,设计了一个SVC视频层次自适应选择算法,使得系统可以动态地调节SVC视频的传输层次,以提高用户的体验质量。
关于SVC技术的研究工作有很多,文献[3~9]研究了在不同场景中采用SVC技术,并指出相对于H.264/AVC等非可伸缩性编码,SVC技术可以明显提升带宽利用率。文献[10]提到一种带宽预测方法,主要依靠每次请求视频分片所花费的时间来计算当前带宽。这种算法对带宽变化比较敏感,一旦带宽在较短时间内发生变化,就会引起视频层次的大幅度切换。文献[11]提出一种应用于SDN网络的SVC视频自适应传输算法,利用控制器获取所有交换机的流量信息,并且采用自回归模型预测未来一段时间内带宽变化以此来选择传输的视频层数。以上这些基于测量带宽的算法都是通过带宽的历史测量值来对未来的带宽进行预测,其预测的信息都不是实时的,甚至还需要引入额外流量。其实,选择不同层次的目的就是为了控制播放缓存,防止产生溢出,直接根据缓存信息做出调节是一种更优的选择。文献[12]提出了一个基于客户端缓存的SVC视频层次切换策略,每次决策前该策略通过估计当前缓存的下溢概率来确定本次请求的层次。文献[13]同样从客户端缓存的角度设计层次自适应策略,在最大限度地提高接收质量的同时最小化或防止缓冲区不足。但是,这两种算法的向上切换策略都过于保守,导致视频的平均质量不高。
绝大多数自适应机制是确定性的根据感知到的服务器、客户端或者网络情况而进行调整,这种机制具有局限性并不适合复杂多变的真实网络环境。目前已经有研究将强化学习方法应用到SVC视频层次自适应选择领域。文献[14]对在SDN网络中SVC视频流的层次和传输路由进行联合决策,构造一个马尔可夫决策过程模型,然后利用神经元动态规划(Neuro-Dynamic Programming,NDP)方法构造近似值函数获得近似最优解。但是,算法在设计回报函数时没有充分考虑QoE因素。文献[15]针对DASH系统,考虑了一些影响视频质量的关键因素,提出了一种基于MDP的自适应策略。文献[16]针对HAS系统,提出了一种基于Q-learning的客户端自适应策略,通过感知网络环境动态地调整请求码率。以上两种算法都是针对ABR应用场景。
基于SVC的视频点播系统架构如图1所示,该系统由流媒体服务器和视频客户端组成,二者通过HTTP协议完成通信。
流媒体服务器端设计如图2所示,由SVC编码模块、层数计算模块、码流提取模块和发送模块组成。其中,SVC编码模块首先将服务器存储的视频从时间序列上拆分为n个视频分片,然后将每个分片每16帧封装为一个图片组(Group-of-pictures, GOP),并逐GOP进行编码,产生含有m个层次的最高码率版本视频,每个编码后的分片含有的层次为。层数计算模块负责根据客户端的请求信息计算本次请求的层次。码流提取模块负责根据层数计算模块得到的本次请求的层次提取相应版本的分片码流。发送模块负责将分片封装发送。
图1 系统架构
图2 服务端架构
客户端设计如图3所示,由请求/接收模块、解码模块、缓存模块和播放模块组成。其中,请求/接收模块负责完成HTTP的请求和响应工作。解码模块使用SVC解码工具将分片解码为YUV序列,然后放入缓存中。除此之外,缓存模块还需要在每次请求时提供当前的缓存信息帮助服务器端进行决策,由于SVC视频的特性,所以无法使用传统的“字节”作为缓存的单位,而是使用“秒”来衡量缓存状态。每次请求时将当前缓存状态传递给服务器。当缓存中的YUV序列达到一定数量后,播放模块负责按时间顺序播放YUV序列。
图3 客户端架构
关于QoE的评价,本文主要考虑视频质量和缓存溢出风险来设计QoE函数。视频质量方面,采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)作为测度。客户端接收的层次越高,其解码得到的视频质量越高, PSNR值相应越高,其定义如公式(1)所示。
缓存方面考虑缓存的上溢和下溢风险,缓存下溢会导致播放暂停,缓存上溢往往意味着没有选择最优的层次,其定义如公式(2)所示,将缓存的数据量映射到大小不等的值。
SVC视频的特性使得播放过程中可以通过选择不同的层次达到自适应播放的目的。服务器每次响应请求前都需要决定本次发送的视频层次,不同层次的视频带给用户端不同的体验质量。本文将SVC视频层次自适应选择问题建模成一个有限状态的离散马尔科夫决策过程。一个马尔可夫决策过程由五元组M=(S,A,P,R,γ)描述,其中,S为有限的状态集,A为有限的动作集,P为状态转移概率,R为回报函数,γ为折扣因子,用来计算累积回报。MDP进行组织的方式为:智能体对初始环境进行感知,按策略实施动作,环境受动作影响进入新的状态,并反馈给智能体一个奖励,随后智能体基于做出新的决策,与环境持续交互。下面依次对SVC视频服务的MDP的五元组进行构造。
在做出每个决策时,系统都处在一个特定状态。在本模型中,系统状态由前次选择的层次和当前缓存的大小这两个维度进行定义。层次一共有15种,缓冲区最多存储30秒视频,所以状态空间元素一共465个。
动作是对系统行为的描述,是系统决策的结果。因此本模型中,动作空间就是可选的层次空间,SVC编码工具一共产生15个层次,动作空间A={a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14}。回报函数直接由QoE得到:
表1 状态空间定义
因为在每个状态下做出的层次选择动作都是基于策略Π的,因此找到一个最优策略使得期望总回报最大,这个策略就是SVC视频层次选择问题的最优解。所以,该优化问题可以表述成公式(9),对于最优解,任意策略Π都满足:
将Q-learning算法运用到本文提出的模型当中,得到基于MDP的层次自适应选择算法。
算法1 基于MDP的层次自适应选择算法
5:while 所有视频分片没有传输完成do
9: else
11: end if
13: 提取层数 的码流,封装发送
16: end while
本文自行开发的SVC服务器端部署在Ubuntu18.04平台上,开发的SVC客户端运行在本地计算机上,实验环境如图4所示,服务器和客户端在同一局域网中,网络带宽和流量控制模块主要使用Linux下的Traffic Control(TC)和Wondershaper工具来实现,这两个工具部署在服务器端,可以用来在性能良好的局域网中,通过限制网络接口的传入和传出流量模拟出复杂的互联网传输环境,诸如低带宽、传输延迟、丢包等实际情况。实验采用SFT算法[10]和EBALS算法[12]作为对比。
图4 实验环境
首先固定网络中的丢包率,并观察用户端接收到的视频质量。实验视频一共180个分片,每个分片的视频时长是1s。在丢包率限定为10%的网络环境下,三种算法的运行情况如图5所示其中横轴为请求的分片序号,纵轴为每次决策的层次。
图5 丢包率10%下三种算法表现情况
从图5中可以看出本文提出的算法能够快速收敛到最优的层次,而EBALS算法因为保守的逐级上调机制而收敛较慢,另外SFT算法因为是基于分片的下载速度来测量带宽,即使网络抖动不强时,选择的层次也不够稳定,这就导致了请求第70和150个分片时层次急剧下降。按照公式(3)计算本次传输的平均QoE,取,分别为0.7和0.3,取,分别为0.8和0.5。得到的结果如表2所示,本文提出的算法表现明显好于另外两种算法,带给用户更好的体验质量。
表2 三种算法QoE表现情况
实验二观察用户端接收到的视频质量及缓存状态。视频一共200个分片,每个分片的视频时长是1s,经编码后产生15个层次。实验过程中,带宽在500kbps到1500kbps之间波动。三种算法的表现情况如图6所示,图6(a)显示不同带宽下选择的平均层数,而图6(b)显示不同带宽下对应的平均缓存量。图中可以看出本文提出的算法在不同带宽下平均每次选择的层次都要优于另外两种算法。因为SFT是基于带宽的算法,具备一定的带宽跟随性,但同时较低带宽时层次大幅减小;而EBALS算法因为其保守的上调机制导致其所选的层数集中在较低的层次。从缓存量上也反映了上述缺陷,SFT和EBALS算法很明显都没有充分发挥缓存的潜力,也就导致了它们始终处在较高的缓存占有量上。本文提出的算法在缓存方面表现的更均衡,始终处于一个中间状态。利用公式(3)来计算QoE,取,分别为0.7和0.3,取,分别为0.8和0.5。得到如图6(c)所示的QoE表现情况。可以看出本文提出的算法在不同带宽下的QoE表现都好于另两种算法,整个实验过程中本文提出的算法的平均QoE值明显高于另外两种算法,给用户带来的体验更好。
本文从提升用户体验质量的角度出发,提出了一种基于马尔可夫决策过程的可伸缩SVC视频层次自适应选择算法。将马尔可夫决策过程应用于SVC视频层次选择问题中,通过每次反馈的QoE量化值来进行分析决策。通过仿真实验,分别比较了在有丢包与带宽波动的网络环境下,算法能够保证较高的视频质量和均衡的缓存,从而得到更好的QoE。今后的研究工作将侧重于对层次切换的幅度和次数进行优化,在抖动强烈的网络中避免频繁切换。
图6 (a) 带宽波动下层次选择情况
图6 (b) 带宽波动下缓存表现情况
图6 (c)带宽波动下QoE表现情况