前言

 

 

 本篇基于LiveVideoStackCon 2018的分享,介绍了自动码率调节的实现过程、现行算法与评价标准,并重点介绍了基于强化学习的自动码率调节算法的技术架构与实现要点。

一、概述

 

 

作为国内最大的长视频网络公司之一,爱奇艺拥有超过4亿的用户,庞大的用户群相对应的是用户设备类型的多样性,包括手机、平板、PC、网络电视等。爱奇艺网络终端部一直致力于用技术手段为用户提供更清晰流畅的观看体验,下面将为大家介绍如何用自适应码流来更好地提升用户的观看体验。

二、什么是自适应码流

 

 

 

用户在观看一个视频的时候,需要将视频内容从服务器下载到本地才能观看。但是用户的带宽往往会有很大的波动,固定码率的视频会造成两方面的问题,一是当用户的带宽大于用户的观看码率时,会造成用户带宽的浪费,二是当用户的带宽小于用户的观看码率时,会造成视频的卡顿。

基于强化学习的自适应码流_软件研发

自适应码流可以根据用户终端设备的不同,基于用户的网络情况和播放状态来为用户提供不同的码率节目。相比较于固定码率,自适应码流技术可以更充分的利用用户的带宽和设备性能,为用户提供更清晰流畅的视频节目。自适应码流包括两个方面:

(1)       传输形式:HLS/DASH/Smooth Streaming

(2)       码率调节算法:ABR

HLS是苹果公司推出的一个传输协议,Smooth Streaming是微软推出的一个标准协议,DASH是大家目前用的最多的开源的传输协议。视频节目在生产的时候会被编码为不同的码率,根据用户的设备类型,以及用户的网络情况,给用户分发不同码率的节目,使得用户能够观看其所能支持的最清晰流畅的视频。确定了传输协议之后,我们可以通过自适应码流的码率调节算法来确定如何通过用户的网络情况和播放状态来选择适合用户的码率。相对于传输形式,我们更关注于自适应码流的码率调节算法。

基于强化学习的自适应码流_软件研发_02基于强化学习的自适应码流_软件研发_03

目前比较流行的自适应码流算法,根据采取策略的不同,可分为以下三种:

1.       基于带宽预测的自适应码率算法。这类算法首先需要对用户的带宽进行预测,根据预测的带宽来对码率进行动态调节。这类算法的逻辑比较简单,但是有效性依赖于对带宽预测的准确性,而用户的带宽变化往往是随机不可预测的。这类算法的主要代表有FESTIVE等。

2.       基于缓存的自适应码流算法。这类算法根据用户当前缓存的大小,来对码率进行动态调节,使得用户的缓存能够稳定在一定的范围之内。这类算法不需要对用户的带宽进行预测,但是往往需要调节很多的参数,并且需要一定的buffer长度才能适用。这类算法的主要代表有BOLA等。

3.       综合使用带宽预测和缓存的自适应码流算法。这类算法综合考虑用户的带宽和缓存,在缓存较多时,主要依赖于带宽预测进行码率调节,在缓存较少时,主要依靠缓存大小进行码率调节。这类算法综合了前两种算法的优缺点,但也有一定的局限性。这类算法的主要代表有MPC等。

 

三、基于强化学习的自适应码流

 

 

强化学习(Reinforcement Learning, RL)是AI领域中广受关注的一种学习方法,主要应用于分析预测领域。强化学习的模型包括两个部分,智能体(Agent)和环境(Environment)。智能体根据环境的状态(State),采取合适的动作(Action),环境则会根据智能体所采取的动作,给与智能体相应的奖励(Reward),并转换到下一个状态。在这个过程中,智能体会对当前的状态、所采取的动作以及所收到的奖励进行学习,以使得所收到的奖励最大。

基于强化学习的自适应码流_软件研发_04

强化学习所针对的问题就是马尔科夫过程的分析预测问题,自适应码流又正好是一个马尔科夫过程的问题。在自适应码流中,我们根据用户当前的播放状态和网络状态来选择下一个合适的码率,和之前的播放状态及网络状态都是不相关的。我们将用户的当前带宽,当前的Buffer大小,还有其它一些播放参数作为用户的当前状态,将这些状态值输入到强化学习的智能体中,根据智能体所选取的码率,给予相应的奖励,这样就形成了一个完整的强化学习过程。在这个过程中,我们无需对带宽进行预测,无需对模型进行调参,并且当应用场景变化时,可以进行自动训练。

基于强化学习的自适应码流_软件研发_05

在实际的训练过程中,我们会对训练参数做出调整,训练出多个强化学习模型。在模型训练完成之后,需要该模型的QoS评估,之后我们会选择评估效果最好的模型作为最终的自适应码流模型。在这个过程我们使用A/B Test来选取最优模型,A/B Test的结果是确定最终模型的关键。为了对多个模型做A/B Test,我们选择C/S架构来完成自适应码流功能。为此我们搭建了一个可在线实时评估多种自适应码率算法的系统,该系统能够对不同的自适应码率算法进行实时的A/B Test,并对测试结果进行可视化展示。

基于强化学习的自适应码流_软件研发_06

 

基于强化学习的自适应码流_软件研发_07

 

四、基于强化学习的自适应码流的QoS

 

 

在我们的自适应码率算法评测系统上,我们从清晰度,流畅度和平滑度三个方面对BOLA/MPC/RL的QoS进行了评测。评测结果如下:

基于强化学习的自适应码流_软件研发_08基于强化学习的自适应码流_软件研发_09基于强化学习的自适应码流_软件研发_10

BOLA/MPC/RL之间的清晰度和平滑度之间有着比较明确的差异性,但是流畅度指标的变化波动要比较明显。从清晰度指标上来看,RL>BOLA>MPC。从平滑度指标上来看,也是RL>BOLA>MPC。虽然流畅度指标的波动比较大,但我们依然可以看出在整体流畅度上,BOLA>RL>MPC。

在清晰度/流畅度/平滑度的基础上,我们根据用户的观看行为定义了一个整体的QoS评分标准,在该评分标准上,我们对BOLA/MPC/RL进行了评测,结果如下图。从整体QoS上来看,基于强化学习的自适应码流要优于BOLA和MPC。

基于强化学习的自适应码流_软件研发_11

五、总结

 

 

相比较于传统的自适应码流,基于强化学习的自适应码流能够比较明显的提升用户的观看体验。但是在实际工作中我们发现,自适应码流在提升用户体验的同时也会带来一些其它的问题。例如在评测中我们发现,自适应码流所带来的QoS提升大部分是通过提升用户的观看码率来获得的,用户的卡顿情况并没有能够得到明显的改善,此外,用户观看码率的提升会带来更高的带宽压力。如何通过改善用户的卡顿情况来提升QoS和在不增加带宽压力的基础上实现自适应码流,是我们下一步需要研究的方向。