全栈算力,加速行业AI落地 了解详情
写点什么

优酷智能档的三个技术挑战和解法

  • 2019-08-12
  • 本文字数:2817 字

    阅读完需:约 9 分钟

优酷智能档的三个技术挑战和解法

在你追《长安十二时辰》时,机器学习和大数据也没闲着,一直在后台帮你选“档位”,是标清、高清还是蓝光?机器学习会根据你的网络偏好、信号强度等智能地做选择,让你不在感觉到视频卡顿。这背后的技术原理是什么?

为什么会产生卡顿?

理论上,和人饿了就没力气一样,产生卡顿和缓冲的直接原因是视频数据不足。当播放器进入“饥饿”状态,就需要等待足够多的视频数据来恢复播放。但在真实场景下,网络信号质量变差、视频码率峰值过高、网络带宽竞争等,都会导致视频缓冲。


在优酷,我们有多个技术小组都在针对各种播放场景进行技术优化。这其中就有“智能档”,它融合大数据分析、AI 机器学习等能力,通过动态化地播放与网络环境相匹配的最佳清晰度,来提升视频流畅度和观看体验。

智能档的技术原理

智能档的技术原理并不复杂,就是通过将不同码率、分辨率的视频文件,切分成 5-10s 的视频片段,并由算法实时动态决策适合播放的文件分辨率,通过动态的降低、升高观看视频的清晰度和码率,以适应复杂多变的外部网络环境,避免可能发生的视频缓冲。



难点是,如何将理论付诸实践,让用户获得丝滑顺畅的观看体验。


目前,主流的自适应播放协议以苹果公司的 HLS(2009 年起草)、MPEG-DASH 协议(2010 年起草)以及近两年推出的 CMAF 协议为主。优酷智能档在起步阶段,结合业务需求与平台特性,选择以 HLS 协议为基础协议进行自定制的扩展和平台实现。



作为一个有着近 20 年的成熟业界应用协议,智能档的算法层面也有着非常丰富成熟的学术积累,使用“Adaptive Streaming”作为关键字,在 Google Scholar 搜索引擎检索,约有 100 万左右的论文结果。这些研究成果,也基本奠定了优酷智能档的算法框架和理论依据,并为前期的快速迭代上线提供了非常大的助力。


随着智能档的产品化以及迭代加速,即使站在巨人的肩膀,我们也很快就遇到新挑战。

挑战一、高清和流畅的平衡点很难权衡

在学术界,高清与流畅的平衡往往是被转化为一个目标函数的优化过程,通过引入一个 QoE(Quality of Experience)公式,将高清晰度的观看时长、卡顿次数、不同清晰度的切换频次等进行算法拟合,使用加权计算后的结果作为衡量算法表现的依据。


通过观察以下公式的计算因子,我们可以很容易地发现,计算结果其实与视频观看时长正相关:观看视频时间越长,得分越高,而卡顿、清晰度切换等负面行为的惩罚机制会被弱化。



而 QoE 类的计算公式带来的另一个问题是,它作为一个复合评分机制,有较多的变量因素参与到计算中,因此线上 QoE 监控数据的波动变化,除了可以给出“整体的播放体验在变化”外,几乎没有其它任何信息可以提供给技术进行进一步的问题分析和优化。

技术解法:

针对上述两个问题,我们将 QoE 公式进行了时间维度的归一化调整,并建立了一系列中间技术观测指标,用来进行线上体验的监控度量、线下算法的优化。


为了更快发现问题、更贴近用户使用场景,我们分别针对升降档的频次、清晰度的变化趋势、不同清晰度的缓冲频次、观看时长等,建立了完善的中间度量指标,来准确全面地观测智能档的真实表现。


挑战二、线下算法训练与线上实际效果的差距较大

目前,业界主流的算法以 MPC 极其衍生算法为主。MPC 是一个典型的工业领域的控制算法,尤其合适在复杂多变的环境中进行自我矫正,来执行特定的任务。如路径跟随控制、自适应导航算法等,在工业界取得了非常大的成功。在智能档算法中,典型的 MPC 算法通过将带宽、视频码率、缓冲时长等因素作为模型输入,以决策选择最佳播放策略。



在摩尔定律的加持下,计算机算力的指数级提升以及 GPU 并行计算模型的成熟等,将深度学习领域推向了新的巅峰,也带来了爆炸式的应用场景增长。


在优酷,我们也积极尝试基于深度学习、线性回归等不同方向的控制算法。其中,在深度学习算法Pensieve 的基础上的改良算法,已经开始进入了测试阶段。



无论是 MPC 算法还是机器学习算法,都需要 QoE 公式作为优化的目标函数,其算法内核都需要一组超参来对输入的特征变量进行动态决策。而模型的训练优化,离不开高质量的数据积累。


数据对模型表现的重要性,对于从事机器学习相关领域研究的读者来说是不言而喻的。对于不熟悉的读者,我们可以将数据与模型的关系类比为“课本与学生”的关系,当课本中的知识错误或者脱离了实际的应用场景,那么通过学习课本而获取知识的学生,也必然在实际的环境中处处碰壁。


例如,使用 Pensieve 算法依赖的公开网络数据集训练出来的模型,在我们实际的应用中,尽管在训练阶段取得了不错的结果,但是上线后的泛化能力较差,导致播放体验差强人意。 因此,我们正在基于优酷海量用户行为数据,建立与完善一套高质量的网络模型数据集,来持续优化算法模型,提升用户播放体验。

技术解法:

针对模型算法的可解释性较差,严重依赖高质量数据训练的弊端,我们自主研发了基于规则、Buffer、MPC 等不同策略的复合模型算法,并结合在流媒体播放领域积累多年的核心技术积累,在实际应用中取得了非常好的成果,其中高清视频播放时长占比较业界算法有 5%-10%左右提升,卡顿次数下降 10%-20%左右。

挑战三、实际的用户体验需要更“智能”

任何算法策略,既需要数据喂养,以实现迭代优化,更要符合现实场景需求。智能档上线初期,我们常听到用户反馈说智能档“很傻”,或者觉得“莫名其妙”。通过对用户反馈场景的复现、日志分析排查等,我们更加意识到,智能档的策略绝不能仅停留在算法层面的”选择最优解“上。


例如,由于典型的智能档算法在优化目标函数时,总是倾向于避免缓冲、减少切换频次等来获取更高的 QoE 得分,而逐渐变得”功利“起来:它更倾向于使用一个较低的清晰度开始播放,在网络质量不太理想的场景下,更不愿意作出”乐观的“尝试,避免因为错误的判断而导致得分变低。 这就会让实际的播放体验变得较差,用户自然认为算法不够智能,因为“我的网速明明可以播 1080P,为什么要总是给我放高清”,或者“清晰度总是一会儿变模糊,一会儿变清晰”。


这些“不智能”的表现,主要是因为传统算法往往是在实验环境下构建,并且进行了问题的抽象和简化,使得通过 QoE 度量的用户体验,略显单薄。


从真实用户体验出发,我们将智能档的体验标准进行了更细致地描述:


  • 总是用符合我预期的清晰度播放,不论是“开始播放”还是“播放中快进”等;

  • 对视频清晰度有强烈诉求的用户,要避免频繁的降低清晰度;

  • 手机流量比较紧张的用户,要更多使用较低清晰度播放。

技术解法:

基于这些认知,通过建立用户偏好画像、网络度量模型、典型场景划分等手段,我们正在为不同诉求的用户提供个性化的智能策略。例如,得益于日益完善的网络度量模型以及智能档算法优化,偏好“高清”播放体验的用户已经能够在 92%的观看时间内,享受到最佳画质。而流量比较紧缺的用户,又能在流畅观影的前提下,以最合适的清晰度享受最好的观看体验。


最后,作为一个程序员,我的目标就是“没有卡顿”。当然,这更是优酷智能档的技术方向,在“不卡顿”之上,为不同用户提供差异化的最佳播放体验。


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-08-12 11:463152

评论

发布
暂无评论
发现更多内容

PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力

Serverless Devs

如何赋能APaaS平台应用管理员

明道云

三轮融资笔笔过亿,来画如何实现弯道超车?

ToB行业头条

打破 Serverless 落地边界,阿里云 SAE 发布 5 大新特性

Serverless Devs

阿里云 Serverless 函数计算

架构实战营毕业总结

maybe

万圣节也是节,准备好Trick or Treat了么?

气气

话题讨论

堪称神级的Spring Boot手册,从基础入门到实战进阶

Java 程序员 Spring Boot

递推算法与递推套路(手撕算法篇)

有道技术团队

学习 编程 算法

用建造者模式实现一个防SQL注入的ORM框架

Tom弹架构

第 24 章 -《Linux 一学就会》- shell中色彩处理和awk使用技巧

学神来啦

Linux linux运维 linux云计算 linux一学就会

直面Z级计算挑战,英特尔携手生态合作伙伴加速开发者工具和软件部署

科技新消息

云原生体系下 Serverless 弹性探索与实践

Serverless Devs

云原生 无服务器 弹性计算

网易云音乐音视频算法的 Serverless 探索之路

Serverless Devs

阿里云 Serverless 算法 音视频

WorkPlus数字化办公解决方案,打造企业高效协同生态!

WorkPlus

Python代码阅读(第47篇):从列表右边开始执行给定函数

Felix

Python 编程 Code Programing 阅读代码

企业级开发工具,J2PaaS低代码平台核心能力解析!

J2PaaS低代码平台

软件开发 低代码 低代码开发 低代码平台

先行一步,7 大技术创新和突破,阿里云把 Serverless 领域的这些难题都给解了

Serverless Devs

阿里云 gpu VPC 函数计算

Serverless 工程实践 | 零基础上手 Knative 应用

Serverless Devs

iOS 崩溃日志在线符号化实践

百度Geek说

官方线索 | 阿里云1024程序员创造营

穿过生命散发芬芳

1024我在现场

网易云音乐音视频算法的 Serverless 探索之路

阿里巴巴中间件

云计算 阿里云 Serverless 云原生 中间件

英特尔On技术创新峰会公布开发者重点投入计划,全面赋能开发者

科技新消息

[2021年新鲜出炉]K8s工程师资料合辑,书籍推荐,面试题,精选文章,开源项目,PPT,视频,大厂资料

奔着腾讯去

golang Docker Kubernetes 容器 云原生

阿里最新春招面经,腾讯/美团/字节1万道Java中高级面试题

收到请回复

Java 程序员 面试 职场 后端

给JSONObject添加自定义遍历方法

FunTester

单元测试 Fastjson JSON库 spock FunTester

Android平台如何使用RSA算法进行加解密?

Changing Lin

10月月更

安全漏洞的复现与总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

英特尔全面升级开发者专区(Developer Zone),携手开发者共塑科技未来

科技新消息

瑜伽CRM系统使老师再也不用教学分心

低代码小观

CRM 管理工具 CRM系统 瑜伽 瑜伽馆管理

一文详解从云计算到 Serverless

Serverless Devs

云计算 Serverless

Serverless 工程实践 | 自建 Apache OpenWhisk 平台

Serverless Devs

优酷智能档的三个技术挑战和解法_AI&大模型_肖文良_InfoQ精选文章