欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~web
在线“看片”时,咱们常常会遇到这些事情:视频画面忽然卡住进入缓冲状态或者视频画面忽然变得模糊而不忍直视。这些事情的背后极可能是网络环境忽然变差了致使下载速度很慢,也多是码率调整算法没有对当前环境作出合理的决策致使。数据库
事实上,如何感知网络环境的变化并做出合理的码率调整并不是易事。目前不少视频播放的客户端都提供了几种码率档位(标清、高清、超清、蓝光等)供用户自主选择,在网络环境好时用户能够自主切到高码率档位,网络环境差时切到低码率档位。固然,有些主流的视频播放客户端也提供了自适应(自动)这个选项,好比YouTube,当用户选择这个选项后,运行在背后的码率自适应算法会根据当前的网络状况和播放缓冲区等信息去自适应调整视频档位,旨在给用户提供更好的视频观看体验。事实上,码率自适应算法是学术界近年来的一个研究热点,音视频实验室和企鹅电竞团队也在点播码率自适应方法上进行了尝试和实践。安全
图1:码率自适应系统框架服务器
码率自适应技术 (Adaptive Bitrate Streaming,ABR)是一种视频码率能够根据网络情况或客户端播放buffer状况自动调整的视频传输技术。如图1所示,一个视频源经过视频转码器转成不一样的视频码率存储在web 服务器,同时每一个码率的视频被切割成一个个小的视频分片,每一个分片一般是可单独解码播放的视频内容,分片时长一般介于2秒到10秒之间。视频播放客户端首先获取不一样码率的切片索引信息,而后根据当前的网络情况或者客户端的播放缓冲区状况自动选择档位最匹配的视频片断下载。微信
目前,基于HTTP的码率自适应技术的实现方式从标准的类型来看主要有两大类:如图2所示,一类是企业方案,即提供了总体的技术解决方案,如Apple Live Streaming技术;另外一类是一些国际标准组制定的技术标准,如MPEG的DASH(Dynamic Adaptive Streamingover HTTP)。网络
图2: 码率自适应技术分类架构
视频码率自适应的目的是为了提升(或者最大化)用户在线观看视频的体验质量(qualityof experience, QoE),可是用户体验质量的定量表达自己也是一个难点。许多研究代表视频的质量(好比码率)、卡顿时间以及切换频繁度都将影响到用户的体验质量。最大化用户体验质量能够认为:尽量最大化视频码率的同时尽可能减小视频卡顿和码率档位切换。而实际上,组成用户体验质量的这些因素之间是互相影响甚至存在矛盾,好比用户若是能长期收到高码率的视频,视频质量天然会更好,但这又极可能增长视频卡顿的风险(网络若是变差,播放速度快于后续片断的下载速度)。另外,码率自适应调整具备累积效应,前面的码率决策会影响到将来的码率的决策。所以,一个好的码率自适应算法要兼顾各项指标,快速响应环境变化作出尽量最优的决策。框架
码率自适应算法(ABR)通常经过当前的网络状态或客户端播放缓冲区状况来动态地调整将来视频片断的码率档位以期最大化用户的QoE,近年来的ABR算法主要分为三类:机器学习
传统的码率自适应算法通常是基于人为设定的固定规则的来进行视频码率档位的动态调整。其中,单独基于buffer或者预测带宽的方法没有充分利用可用信息,而结合了二者信息的算法能够得到相对较好的效果,但其很是依赖于带宽预测信息,在带宽变化剧烈的场景中,准确预测带宽是很是困难的。基于混合模式的MPC(模型预测控制)算法虽然能够得到不错的结果,但其在求解最优解时计算耗时大,速度慢,在决策动做空间和优化区间步长稍大时,缺点显现出来。
反观码率自适应过程:首先,视频播放客户端会根据当前的网络状况、播放缓冲区大小等因素决定下一个片断的码率档位,而后客户端执行码率决策向CDN服务器请求对应质量的视频片断,进行下载,下载的过程当中视频缓冲区也同时在播放消耗。下载完当前片断后,客户端进入了另一种状态(播放缓冲区大小变化、是否卡顿等)且能够据此评价上一个动做的好坏,而后再从新进行新的决策,如此循环往复,直到结束。以上过程能够抽象成系统控制或者策略制定的问题。而相对于人为制定策略和控制规则而言,机器学习里的强化学习不须要人为地设定一些经验规则或策略逻辑,直接经过与环境的不断交互中去学习策略,在不断试错和经验总结中学到好的决策和控制模型。本文在研读业界近年来码率自适应算法的基础上,重点对基于强化学习的码率自适应算法进行了探索和研究。再进一步讨论以前,下面先简单介绍强化学习的基本概念。
总所周知,近年来机器学习里的深度学习在计算机视觉、语音识别和天然语言处理等流域遍地开花,取得了不少突破性的进展。而机器学习从学习信号区分的话,能够分为:有监督学习、无监督学习和强化学习。强化学习是系统从环境学习以使得奖励指望最大的机器学习。强化学习和有监督学习的不一样在于教师信号。强化学习的教师信号是动做的奖励,有监督学习的教师信号是正确的动做。举个例子,在猫狗分类时,对于一张图片是哪一种动物,有监督学习给的信号是这张图片的真正label是猫或者狗。而基于强化学习的围棋AI中,在某种局面下,咱们并无确切的答案告诉你,必定要落子在哪里,而是可能会反馈给你落子在何处时的价值估计。
图3: 强化学习基本框架
强化学习(Reinforcement learning, RL)的基本思路是经过最大化智能体(Agent)从环境中得到的累计奖赏值,以学习到完成目标的最优策略。强化学习侧重于学习解决问题的策略,是制定策略或者系统控制的通用框架,其经过和环境的不断交互和动做尝试来调整和优化策略决策,通常由智能体Agent、环境Environment、动做action、执行动做后环境反馈的观察状态S和当即奖惩reward组成,其学习的过程能够描述为:(1)在每一个时刻,agent与环境交互获得一个环境的状态观察St,并利用DL(深度学习)等方法来感知观察,以获得状态S的抽象特征表示;(2)基于某种策略将当前状态映射为相应的动做,并基于指望回报来评价各动做的价值(3)环境对此动做作出反应,获得新的观察状态St+1并反馈上一个动做at的当即奖赏reward(rt)。经过不断循环以上过程,不断试错和学习,以期获得实现目标的最优策略。
近两年,随着深度学习的火热和应用领域的延伸,学术界也尝试利用机器学习的方法来解决码率自适应问题。其中,MIT的计算机科学和人工智能实验室在基于AI的码率自适应算法上作了创新性的尝试并取得了不错的结果,受到他们思路的启发,咱们也在基于AI的码率自适应算法进行了实践探索。本文基于强化学习的码率自适应算法中采用的是Actor-Critic的策略梯度方法来进行策略的学习,下图4是基于Actor-Critic框架的码率自适应算法的模型框架。
图4:基于Actor-Critic框架的ABR算法模型
在AC框架中,actor(演员)网络进行策略决策,学习状态state到动做的映射关系,而critic(评论家)负责价值估计,即估计价值函数。策略决策和价值估计须要在训练过程当中迭代优化,一开始actor的策略可能随机,critic也没有好的打分规则。可是因为reward的存在,critic评分随着训练的进行会愈来愈准,actor的决策表现也会愈来愈好,最终学习到好的策略。
在模型训练过程当中, reward信号的设计是很是重要的,在不一样reward下模型学习到的策略也就会有差别。本文但愿解决的问题是如何在点播系统中最大化视频观看用户的体验质量(QoE),而研究代表:视频的质量(码率高低)、rebuffering(从新缓冲)以及档位切换的平滑性都将影响到用户体验的质量,所以在设计reward时,能够由这些因素共同决定。
模型输入的状态信息也是很是重要的点,结合reward的设计,模型状态输入信息主要包括:吞吐量信息、播放缓冲区信息等。
如图4所示,输入状态通过actor网络和critic网络后输出的分别是策略动做(码率档位)和价值估计,而在实际部署只须要策略决策时,仅保留训练好的actor网络。在实际的模型训练时,采用的是A3C(Asynchronous AdvantageActor-Critic)架构进行快速有效的模型训练。
模型训练和测试的吞吐量数据由宽带网络数据和移动(3G\4G)网络数据组成,训练集和测试集均包含了100多种网络数据。图5和图6展现了在该测试集上基于强化学习的模型1和模型2对比传统方法MPC(采用表现较好的robustMPC)的结果。总平均reward表明了在100多种网络状况下,视频播放过程当中客户端的累计奖励值的平均。模型1和模型2相对于robustMPC分别有约6.4%和8.8%的提高。
图5:100多种网络状态下(6种码率档位)的测试结果对比
图6:100多种网络状态下(6种码率档位)的测试结果对比(reward组成因素分解)
图6中对组成总平均reward的各个因素进行分解,能够看到传统方法的robustMPC虽然在总平均码率奖励上比强化学习模型1和2要高,但与此同时带来的从新缓冲(rebuffering)的风险也更高,致使rebuffering的惩罚明显多于其余两种模型。而基于强化学习的ABR模型1和2可以更好地兼顾各项因素使得累计奖励到达更高。
图5和图6的结果都是基于数据库的带宽信息进行测试的,为了验证在实际场景中的应用效果,咱们将强化学习的码率自适应算法应用于DASH点播系统中,在真实的网络损伤环境下验证各类算法模型的表现:在视频播放客户端和视频服务器之间的视频下载的网络链路上分别添加了限速、丢包、抖动和时延等损伤环境进行测试,结果如图7所示。相对而言,在真实的损伤场景中,模型1和模型2的总体表现比robustMPC稳定,在损伤场景的测试集上,模型1和模型2相对于robustMPC分别有约9.2%和8.9%的提高。结果和须要注意的是,咱们的模型是离线使用数据库中有限的带宽数据进行模拟训练的,将其直接应用在实际环境中的表现说明了其具备不错的泛化性。
图7:真实系统和损伤网络环境测试集下模型的测试结果
在上述预研的基础上,咱们将本文介绍的基于强化学习的码率自适应算法应用于企鹅电竞的点播业务(HTTP+HLS),用于决策客户端当前应该下载的视频片断的档位(例标清、高清、超清等)。为了提高用户体验,电竞团队联合腾讯云团队作了“帧对齐”的优化工做,实现点播过程的无缝切换效果。图8是针对电竞点播业务部署的点播AI流控系统,预测服务器负责码率决策和下发档位,并向训练服推送训练数据,训练服负责模型训练和模型同步。
图8:点播AI流控系统
实际的线上数据统计对好比下:
表1:流控后台打分算法统计的效果对比(对比传统算法)
表2:流控后台打分算法统计的效果对比(对比非流控模式)
以上表格1和表格2结果显示:
•AI模型的总得分比传统MPC算法增长约6%, 超清档位占比增长约5%,且卡顿和切换惩罚更小
•AI模型的总得分比非流控模式增长约18%,超清档位占比增长约6%~14%左右,且卡顿和切换惩罚明显更小
注:表格2是关闭MPC传统算法后,AI模型算法对比非流控模式(用户自主选择档位)的统计数据。
表3:电竞客户端打分算法统计的效果对比
以上表格3结果显示:
• AI流控的总分比非流控模式增长约4.9分
• 清晰度:超清档位占比增长约8.4%
• 流畅度:
1)AI流控较非AI无缓冲率得分高约12分,无缓冲率高约8%
2)AI流控较非AI二次缓冲每小时比率的得分高约8分
上述结果代表,基于强化学习的AI算法在点播流控的应用中,可以更好地兼顾码率、卡顿和切换因素,在提供更高清晰度体验的同时,也能更好地避免卡顿的产生,从而提供给用户更好的视频观看体验。
本文简要介绍了基于强化学习的码率自适应算法,在实践预研验证和分析的基础上,将该AI算法模型应用于实际项目。在音视频实验室和企鹅电竞团队等的共同努力下,在基于AI的点播流控探索和实践上,取得了初步的成效。而如何在直播、实时通话系统中进行更好的码率自适应调整值得咱们进一步研究和探索。
问答
相关阅读
此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/developer/article/1153315?fromSource=waitui
欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~
海量技术实践经验,尽在云加社区! https://cloud.tencent.com/developer?fromSource=waitui