写点什么

爱奇艺知识播放体验优化的探索和实践

2020 年 10 月 14 日

爱奇艺知识播放体验优化的探索和实践

前言


德鲁克说:未来社会最大的改变一定是会发生在知识领域。

知识付费商业形式在 2014 年甚至更早之前就已经开始有了,只是当时还没有内容创业的概念,没有被完全重视。到了 2016 年,移动互联网的成熟、短视频和直播行业爆发式增长,促使知识付费也进入了人们热烈讨论的话题中。爱奇艺知识布局最早要追溯到 2012 年上线的爱奇艺教育频道,并于 2019 年爱奇艺知识独立 APP 上线。

爱奇艺知识是以音视频播放为主要分发手段,注重用户体验和内容质量。而播放体验是用户产品体验的核心。相比于爱奇艺 APP,爱奇艺知识有更复杂的播放交互场景:视频、音频、音频控制台、音视频浮窗等多种音视频平滑切换的场景较多,如何保证起播流畅性是一个相对复杂的技术难题。

爱奇艺知识技术团队经过不断探索和实践,在《爱奇艺知识音视频通用播放架构实践》文章介绍的播放架构基础上,总结针对性的优化方案,最终实现了多播放场景的平滑切换的极致用户体验,和秒播率 37%左右的提升。

本文主要针对爱奇艺知识播放体验优化方案的实现进行分享。


01 播放场景扩展


为了能够给用户提供更丰富内容和连贯的观看体验,爱奇艺知识也在常规的视频播放场景以外扩展了音频、视频条、音频条、吸顶条、控制台等场景,同时还做了音视频的主被动切换功能、场景间切换的不间断播放体验等。多场景的播放切换和多方播放器的接入势必会带来新的挑战,如音视频播放页与音视频条的无缝切换、音视频前后台自动切换、音频播放器与控制台的对接等,当然,这些问题目前在爱奇艺知识 APP 中也得到了很好的解决,以下就为大家简单做一下介绍。


1.1 音视频播放页与音视频条间切换


为达到极致用户体验,不阻断播放,爱奇艺知识研发了音视频浮窗(简称音视频条),在播放页退出的时候仍然可以出现在当前页面下方。这个机制适用于长视频、短视频和音频播放场景;并且实现了音视频条在 APP 内部页面的全局露出,使用户随时随地可以对当前播放内容进行控制,同时音视频条支持任意位置的拖拽,进而保证对页面内容的无遮挡效果。不仅如此,基于此架构还可以非常低的成本对音视频浮窗的样式做随时变更,以适应不同的产品体验。




为了实现音视频播放页与音视频条之间的无缝切换,也为了实现音视频条独立起播的能力,我们使用了功能控制器,即针对需要使用播放器的业务场景封装播放控制器,在这个控制器里面会存储播放器所需的必要数据,如选集数据等,同时这个控制器里面也会处理共性的播放器 delegate 事件,如统计等,这样也就可以更好的实现不同场景间切换的无间断播放,目前使用的播放器控制器有两种类型,即长视频播放器控制与短视频播放器控制器。


使用方式如下图所示:



1.2 音视频前后台自动切换


为了给用户更连贯的视听体验,我们添加音视频前后台自动切换的功能,即在用户开启允许视频后台继续播放的前提下,在 APP 进入后台模式后我们会主动将视频转为听音模式,使得播放内容不间断,用户可以继续听视频内容,同时还可以避免不必要流量的浪费。在 APP 切换到前台后会自动转换为视频模式,用户依旧可以继续观看视频内容,整个切换的流程不会中断,视听的体验是连贯的。



1.3 控制台的对接


由于爱奇艺知识有大量的音频课程,并且视频课程也是绝大部门都是支持听音模式的功能,为了形成更好的音频播放功能闭环,我们在全新音频播放器的基础上,对接(iOS)/添加(Android)的控制台模块,这样可以使得在手机不解锁的前提下,实现对播放内容控制,满足用户更多场景的功能体验需求,实现音频播放功能的闭环。




02 起播流程优化


由于爱奇艺知识播放内容含有合作方的内容,部分合作方并没有把相应内容源文件上传至爱奇艺统一内容后台,因此也就需要使用对应合作方提供的 SDK 或者通过知识后台代理获取三方内容的播放地址进而实现播放。目前爱奇艺知识的内容不仅包含爱奇艺内容,还包含了多种合作方内容,每种播放源的播放使用相应的播放器来实现,目前播放器使用的主要架构图如下:



从上图可以看出知识播放器对下需要对接多种播放 SDK,对上需要输出 4 种播放 UI(音频 UI、长视频 UI、短视频 UI、视频浮窗 UI)和相应播控、满足多种播放场景功能需求,同时还会有多种音视频交叉和功能切换的复杂场景。


由于知识播放器需求的多样性,也就注定了架构和起播流程的复杂性,优化之前先搞清楚起播流程是什么样的,下图简述了起播的主要流程。



2.1 分 析


从起播流程图不难看出,整个流程大体可分为 3 个大的阶段,即:起播参数的获取、播放器的选择与创建、播放地址获取。


  1. 起播参数的获取: 上图所示多个参数(第一排参数,后称起播参数),如果在上级页面能够获取到的话,即跳转播放页的时候就可以准备好,便可以直接在起播参数模型转换之后直接走起播流程了。即使上级页面没有传递起播参数,但本地若能有一个可以补全参数的模块的话依旧可以走快速起播流程,否则需要调用一次接口,待参数补全后才能走起播流程,本次接口请求耗时是可以优化的。故此阶段的参数获取前置对于优化来讲尤为重要。

  2. 播放器的选择与创建: 获取到起播参数之后,会根据合作方标识选择需要使用的播放器,走相应的起播流程,同时如若可以减少播放器 UI 和相应 SDK 创建次数的话也是可以实现优化的效果。此阶段的也是可以优化的。

  3. 播放地址获取: 得益于爱奇艺 APP 播放器体系的优势,爱奇艺内容播放地址获取已经形成了一套完善的接口调用机制,适用于所有业务线,不需要做针对性优化,合作方内容播放地址获取由知识后端团队代理。此阶段的接口请求次数已经减少到一次,响应速度是可以得到保证的,三方内容播放地址的获取依赖于三方接口的响应速度。由于播放地址获取的接口没有多少优化空间,但我们可以考虑把更多的网络资源让给这个地址获取阶段。


2.2 优化方向


2.2.1 第一阶段(起播参数的获取)优化


a. 起播参数前置


由第一阶段的分析可以看出,如果进入播放页之前,所有需要的起播参数都已经由外部入口提供了,就避免了补全参数所需的网络接口请求,可以有效提升起播速度。由于此项优化涉及的入口较多,知识各个数据接口都针对起播做了统一添加处理。


b. 本地播放记录模块的添加


为了实现更高的秒播率、实现多种内容源播放记录的读取、同时也为了更好的存取音频播放场景的播放记录,爱奇艺知识开发了本地播放记录模块,每次在起播之前都会做本地播放记录模块的查询,可以根据视频 ID 查询到本地存储的播放记录数据(不区分内容提供方),如若命中即可获取到播放所需全量参数,走起播流程。


知识播放记录模块还分别做了内存和外存的存储方式,内存的合理化使用可以提升读写的效率,降低读取所需耗时。


  • 上述两条方案的使用后秒播率得到了 19%左右的提升,总体来说收益还是比较明显的


2.2.2 第二阶段(播放器的选择与创建)优化


a. 音视频播放器统一


爱奇艺知识统一播放器的开发可以针对自身的需求进行实现,使得功能上线的灵活性更强,同时也使得播放器功能开发更加具有针对性,实现了功能级别的“瘦身”,减少了不必要系统资源的消耗。


知识内部各类型播放器是单例存在的形式,即单次生命周期内只需要创建一次,这样也可以大大减少创建创建的次数与相应耗时。


知识播放器的自行开发同时也实现了多播放器 UI 与共性功能的复用,即无论使用哪种播放器进行播放给用户呈现的观影体验是无差别的,不同类型播放器的切换间亦是如此,进而实现了观看窗口的统一与切换的无感。


b. 播放器 UI 创建优化



爱奇艺知识对接爱奇艺 APP 的无 UI 播放 sdk,即除播放画面以外的播控、浮层等自行实现,因此,我们针对播放器 UI 创建使用的是懒加载的形式,会根据使用需求进行即时创建,不会同时创建当时不需要的 UI 控件,也不会重复创建相同的 UI 控件,这样可以避免 UI 创建所需的耗时与主线程的使用。


举一个具体的例子,知识播放器上的提示浮层目前除购买之外的,loading、网络提示、播放错误、播放结束等提示类浮层只有一个实例,第一次创建成功后,之后会随着所需样式进行更新,无需每次都创建。


  • 上述两条方案的使用后秒播率得到了 7%左右的提升


2.2.3 第三阶段(播放地址获取)优化


a. 预加载(起播第三阶段)


连播预加载的实质就是提前加载即将用到或者即将可能用到的网络资源,减少当次起播获取播放资源的网络开销,进而实现更高的秒播率,给用户更流畅的观看体验。


播放器支持预加载下一集的连播,在当前视频播放到最后 20 秒时播放器会通过相应 delegate api 去业务层取需要预加载的播放 item,拿到 item 之后会预加载一段播放资源,进而提升连播的开播速度。


在当前视频播放完成后会通过相应的 delegate api 获取需要播放的 item,确认预加载的视频是否与此次数据一致,确认一致后会直接使用已经加载的播放资源直接起播。


  • 此方案的实现使得秒播率有了 4%左右的提升


b. 开播前系统资源分配


前面讲了播放地址获取需要较大的网络开销,因此在调用起播后,我们尽量把更多的系统网络资源让给播放器,方案是:进入播放页后,在收到相应回调或者达到最大等待阈值后,再进行业务接口的请求与页面的绘制,提升播放器开播速度。



如上所示,页面跳转会经过路由,路由内部会判定是否满足起播条件,满足起播条件或者经过播放页补全起播参数后会走起播流程,播放页在收到播放器开播成功、鉴权失败、播放器错误等回调或达到等待阈值后,再进行页面绘制操作。


  • 此方案的实现使得秒播率有了 7%左右的提升


03 总 结


秒播率的提升,顾名思义就是提升一秒内开播的占比,优化的空间也都是毫秒级的,本文从起播流程的参数准备、播放器创建与选择、播放地址获取 3 个阶段详细分析了优化关键节点,并针对性的提出了优化方法,使得爱奇艺知识 APP 的播放秒开率大幅提升,实现了更加流畅的播放体验。


爱奇艺知识团队一直把服务用户,让更多有知识获取需求的人能更便捷、更好的获取到优质的内容和观看体验作为自我鞭策的基准,播放场景的拓展也为满足了用户多样的观看和收听体验,在未来爱奇艺知识团队还会持续完善和扩展播放场景,旨在提升使用的便捷性与多样性。在不断创新和优化使用体验,力争为用户提供更优质的视听体验。


本文转载自公众号爱奇艺技术产品团队(ID:iQIYI-TP)。


原文链接


爱奇艺知识播放体验优化的探索和实践


2020 年 10 月 14 日 14:00782

评论

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

赶紧收藏!Java大牛熬夜一周肝出的《Spring AOP/IOC源码笔记》

Java成神之路

Java 程序员 架构 面试 编程语言

每周学点TARS——服务自定义命令

TARS基金会

c++ DevOps 后端 TARS

拆解增长黑客之知识篇

丁一

产品 运营 增长

我在阿里巴巴做 Serverless 云研发平台

阿里巴巴云原生

Serverless 容器 开发者 云原生 CloudNative

蘑菇街Java大牛纯手写熬夜肝出的《Spring MVC源码笔记》赶紧收藏

Java成神之路

Java 程序员 架构 面试 编程语言

我对业务方提出需求的态度

boshi

随笔杂谈 需求落地

讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer

比伯

Java 编程 架构 面试 计算机

值得学习!阿里P8架构师“墙裂”推荐:Java程序员必读的架构书籍

Java成神之路

Java 程序员 架构 面试 编程语言

mysql的这些坑你踩过吗?快来看看怎么优化mysql?

比伯

Java 编程 架构 面试 计算机

一周信创舆情观察(11.23~11.29)

统小信uos

LeetCode题解:52. N皇后 II,回溯+哈希表,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

腾讯T4Java大牛连续半个月每天熬夜到凌晨三四点,竟然就只是为了写一份MyBatis源码学习笔记

Java成神之路

Java 程序员 架构 面试 编程语言

智能与影像的强耦合:华为Mate 40系列的视觉探索

脑极体

Java程序员做外包,10个月收入40万

Crud的程序员

Java 学习 程序员 外包

程序员的故事

Philips

敏捷开发 快速开发 原创小说 企业开发 企业应用

打造Django私有化缓存组件django-api-cache

pygodnet

django django-api-cache django缓存 私有化缓存 接口缓存

《迅雷链精品课》第十课:共识算法理论基础

迅雷链

区块链

年轻人想详细了解做了十年Linux跟做了十年Windows的程序员差距有多大吗?听我慢慢道来!

ShenDu_Linux

Linux 程序员 windows

价值、产业、数据加密,区块链如何助力互联网升级?

CECBC区块链专委会

区块链 互联网

区块链产业下的“非遗”突围战:商业化和手艺人发掘

CECBC区块链专委会

区块链 非遗

HTTP协议概述

落日楼台H

https HTTP 协议 HTTP2.0 HTTP3.0

架构师训练营第二周框架设计课后练习

Geek_xq

架构师训练营 1 期 -- 第十一周总结

曾彪彪

极客大学架构师训练营

京东T7架构师手写的10万字Spring Boot详细学习笔记+源码免费下载

Java成神之路

Java 程序员 架构 面试 编程语言

训练营第七周总结

大脸猫

极客大学架构师训练营

ETV全球熵APP系统开发|ETV全球熵软件开发

开發I852946OIIO

系统开发 现成系统

「更高更快更稳」,看阿里巴巴如何修炼容器服务「内外功」

阿里巴巴云原生

容器 运维 云原生 双十一 CloudNative

单机服务器模型,reactor的5种实现方式,只有这样才算了解了

linux亦有归途

c++ Linux reactor 后端开发

线程池的优点及其原理,代码实现线程池。简单、明了。

Linux服务器开发

网络编程 线程池 后端开发 Linux服务器 web服务器

看区块链如何打通信息壁垒,盘活万亿级”积分”市场

CECBC区块链专委会

区块链 信息

【得物技术】搜索引擎技术简介

得物技术

搜索引擎 技术 算法 排序 搜索

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

爱奇艺知识播放体验优化的探索和实践-InfoQ