导读

随着经济的发展“衣食住行”等基础消费已不再是消费者首要考量,自我认知的提高便成为现阶段消费的必然选择。尤其是在移动互联网崛起的当下,移动支付和不限流业务的普及,人们为他们感兴趣的内容或知识买单的行为逐渐养成,为知识服务平台商业价值打下基础。

早期的知识服务类平台大多以音频形式为主,因播放形式比较单一,对架构技术场景的要求也较为简单,随着内容消费的升级,知识服务平台的展现形式更加丰富,视频类消费逐渐成为行业共识,为了满足用户的多种需求,早期音频起家的知识服务类平台开始陆续切入视频,这样的音频、视频混杂的多场景的播放体验及场景间的平滑切换逐渐成为了行业内面临的技术挑战。

爱奇艺知识技术团队较早就开始针对兼顾音视频播放架构进行思考、通过实践开发出一套音视频播放的通用架构,支持更丰富的音视频场景体验,有效解决了行业内面临的技术挑战,本文将分享爱奇艺知识音视频通用播放架构的实践。

爱奇艺知识播放业务产品形态

从上面产品形态效果图可以看出,爱奇艺知识播放器支持视频窗口、音频窗口、视频浮窗、音频浮窗、短视频窗口、短视频浮窗、音频控制台等多种场景播放,并且可以根据需要在保持播放的平滑流畅的同时随时切换。

上述多场景播放的产品形态在技术实现上的最大挑战是是多个播放场景的平滑切换,也就是说在播放一个内容时很难在不影响播放器的状态的情况下音视频场景随意切换,这就面临着无法保证用户的持续流畅的视听体验的问题。爱奇艺知识技术团队开发了一套通用播放架构,其支持以下特性:

1)支持多种音视频融合场景,以及新的音视频场景快速接入;

2)场景之间的切换不会引起播放器状态的变化,即播放器的播放状态对场景的切换无感知。

音视频通用播放架构

为了支持多场景融合以及播放器对场景的无感知切换,这套通用播放架构要具备以下特点:

1)播放器与播放业务解耦: 支持更多的播放场景、以及新的播放业务快速接入,并且不影响其他播放业务;

2)播放器与播放SDK解耦: 支持第三方内容和SDK接入: 提供强大内容拓展性,保证接入第三方内容现有的播放业务不需要调整;

3)播放器与分发页面解耦: 播放器存在于App全局,可以出现在任何展示页面,不影响用户浏览。

架构的介绍:

1) 基础播放SDK:提供基础的播放功能,对外输出音视频效果;

2) 统一播放器:屏蔽底层播放SDK差异,根据协议为上层提供统一的播放能力接口;

3) 播放业务管理器 : 负责播放业务的调度、解除播放业务与播放器的耦合;

4) 播放场景业务:负责向用户展示音视频播放能力和交互的业务;

5) 播放关联业务: 为播放器提供增值或支撑的业务。

3.1 播放器与播放业务的解耦

3.1.1 播放器与播放业务耦合的弊端  

从爱奇艺知识播放器的产品形态可以看到,播放器可支持多种场景下的播放,一个内容的周期内必须使用同一个播放器,这样就会带来一个问题,一个播放业务播放器状态发生变化,其他播放业务必须同步更新播放状态,各个播放业务之间互相交叉,随着播放业务的增多,开发和维护成本会急剧增加, 导致后续开发不可持续。

3.1.2 播放器与播放业务的解耦方案

播放状态变化是导致不同播放业务场景之间交叉同步的原因,新的解耦方案需要解除播放业务对播放器的直接操控,采用观察者模式对播放业务和播放器进行解耦,设计思路如下:

1、播放业务管理器 :

1)作为被观察者为各个播放业务分发播放器的状态变化;

2)为各个播放业务提供基础的播放操控和数据访问接口。

2、播放业务:

1)作为观察者接收播放器的状态变化,更新关联的播放状态和数据;

2)接收用户操作,通过播放业务管理器对播放器进行操控。

目前爱奇艺知识播放业务都是以模块的形式注入到播放器业务管理器,业务模块只负责观察调用播放业务管理器。不直接持有播放器实例。解除了播放业务与播放器的耦合。

3.2 播放器与播放sdk解耦

爱奇艺知识除了涵盖爱奇艺自身生产的内容外,也会接入“喜马拉雅”、“蜻蜓FM”等第三方合作方的内容。由于每家合作方播放SDK提供的API都不一样,如果业务层对每个合作方都进行业务开发,就会导致业务量非常庞大,并且不同合作的方的播放SDK会产生交叉,不利于播放业务的维护和拓展。同时开发量指数增长,无法满足第三方合作快速上线的需求。

为了避免业务层单独适配第三放播放SDK,需要对业务层和第三方播放SDK进行解耦操作。即上层业务对接入第三方合作方的播放SDK是无感知的。解耦方案设计如下:

1)设计统一播放协议,对于上层播放业务,只调用按照统一协议设计接口,不必关心底层播放器的设计逻辑。保证上层播放业务不随新的接入播放SDK发生变化。

2)爱奇艺播放SDK和第三方播放SDK按照统一协议进行适配,提供基本的播放接口。保证上层业务对具体播放SDK无感知。

3.2.1解耦设计实现:

在解耦设计实现中,播放SDK适配器实现的核心:

1)对于上层业务,播放SDK适配器对上层业务输出标准的播放、暂停、快进等接口;

2)对于底层基础SDK,播放SDK适配器负责分发具体播放SDK,并适配其播放、暂停、快进等接口。

由于播放器和播放SDK实现解耦,爱奇艺知识App在不改变上层业务的情况下集成了喜马拉雅和蜻蜓第三方音频内容。避免了上层业务修改带来的工作量,大大加快的第三方内容的接入速度。

3.3 播放器与分发页面解耦

目前市面上很多视频应用退出详情页,视频播放就会被终止,这样就不能为用户提供持续平滑的播放体验。为了打造极致播放体验,爱奇艺知识App支持不同页面间切换时播放器持续平滑播放。

3.3.1 播放器持续平滑播放方案选择

播放器持续平滑方案主要涉及三种:

1)画中画方案:虽然Android8.0及其以上版本已提供了画中画方案,但是

Android8.0以下版本仍然保有大量用户,其缺点就是无法满足Android8.0以下用户需;

2)采用系统浮层:采用系统浮层需要系统浮层权限,Android厂商对系统浮层的授权越来越严格,导致用户授权过程的体验比较差;

3)在每个展示页面单独添加播放器浮窗优点是不受Android系统版本限制,并且用户无需系统浮层权限授权,适合所有手机用户,体验较好。

为了更好支持用户体验,我们选用了第三种方案。

3.3.2 展示页面单独添加播放器浮窗的弊端

展示页面单独添加播放器浮层方案虽然对用户比较友好,但是开发成本较高,每个页面都有可能中承载播放器并与播放器生命周期联动,播放器与每个页面耦合,开发成本和页面数量成正比。不利于后期维护。因此我们在此思路的基础上做了解耦设计和架构改造。

3.3.3 播放器与展示页面解耦设计:

采用非侵入式方案,设计思想如下:

1) 通过底层劫持展示页面的生命周期处理,处理播放器生命周期, 解除播放器与展示页面的生命周期耦合。

2) 设计透明容器作为音视频浮窗的容器,展示页面可见时将透明容器嵌入到展示页面的根布局容器中,实现短视频浮窗展示页面的解耦。

非侵入式页面切换方案调度图如下所示:

从调度图可以看出,播放器页面间切换和生命周期的控制逻辑由“生命周期劫持模块”负责,与展示页面解耦。

目前爱奇艺知识App,新增加的页面不需要添视频条容器即可实现视频条的展示,新页面的开发者不需要关注视频条逻辑,降低了开发工作量。

总结与展望

爱奇艺知识为用户打造极致的音视频播放体验出发,自主研发设计了一套通用的音视频播放架构,能够有效的支持多种场景播放需求,可实现第三方内容的快速接入,极大提升了用户体验。提升播放器性能并支持更多的播放场景是播放器开发者一直面对的问题。爱奇艺知识技术团队通过不断的技术创新,赋予用户更优质的播放能力和体验。

也许你还想了解2020爱奇艺卡通人物检测识别挑战赛,点击“阅读原文”,前往大赛通道!

扫一扫下方二维码,更多精彩内容陪伴你!

爱奇艺知识的音视频通用播放架构实践相关推荐

  1. 爱奇艺知识移动端组件化探索和实践

    前言 组件化对于任何一个业务场景复杂的APP以及经过多次迭代之后的产品来说都是必经之路,组件化是指解耦复杂系统时将多个功能模块拆分.重组的过程.组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有 ...

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

    前 言 德鲁克说:未来社会最大的改变一定是会发生在知识领域. 知识付费商业形式在2014年甚至更早之前就已经开始有了,只是当时还没有内容创业的概念,没有被完全重视.到了2016年,移动互联网的成熟.短 ...

  3. 爱奇艺知识WEB前端组件化实践

    组件化作为一种开发模式,其在代码复用,提高开发效率上的效果被广泛认可.组件化思想适用于移动端.Web前端.PC端.TV端等多种类型的客户端和前端开发. 本文主要讲述爱奇艺知识 WEB 前端团队如何结合 ...

  4. 从财报看爱奇艺增长想象 长视频巨头要说“10分钟”新故事

    北京时间2020年2月28日, 爱奇艺公布截至到2019年12月31日的第四季度和全年未经审计的财务报告.财报数据显示,2019财年爱奇艺总营收达到290亿元(约42亿美元),同比增长16%,其中第四 ...

  5. 最前线|爱奇艺低调上线“好多视频”,短视频战场的主动防御

    爱奇艺在短视频领域的布局有些低调. 近日,爱奇艺新推出一款名为"好多视频"的短视频APP,主推爱奇艺热播剧综周边,基于AI技术的智能推荐向用户进行内容分发.目前已在苹果App St ...

  6. 爱奇艺向抖音开启授权,打开内容价值的新大门

    7月19日,爱奇艺和抖音集团(以下简称:抖音)宣布达成合作,爱奇艺将长视频内容授权给抖音进行二创.推广等行为.活跃在短视频平台上的影视内容,开始走向正版化. 随之而来的是资本市场的支持,爱奇艺隔夜美股 ...

  7. 爱奇艺、腾讯视频等接连涨价 地主家也没有余粮了?

    继爱奇艺.芒果TV后,腾讯视频会员也要涨价了. 4月9日,腾讯视频宣布将于4月20日零点对腾讯视频VIP和超级影视VIP会员价格进行调整.其中,腾讯视频VIP月卡以及超级影视VIP的多项套餐等5种会员 ...

  8. 爱奇艺路香菊:视频人物识别关键技术及其应用|爱奇艺技术沙龙回顾

    主讲人 | 路香菊 爱奇艺科学家 张康 编辑整理 量子位编辑 | 公众号 QbitAI 近日,爱奇艺技术沙龙"多模态视频人物识别的关键技术及应用"成功举办,爱奇艺科学家路香菊出席并 ...

  9. 步爱奇艺与腾讯视频的后尘,B站扬帆出海能否跨海破圈?

    2020年,"出海潮"成为不少互联网企业的动作之一,哔哩哔哩的出海计划也已经提上了日程. 12月28日消息,B站已经登陆东南亚市场.视频平台"出海",在哔哩哔哩 ...

最新文章

  1. Docker核心技术之仓库
  2. 呵呵,又在这里开了个博客,现在已经有好几个了
  3. SDUT—2054数据结构实验之链表九:双向链表 (基本建立)
  4. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析
  5. java nio node_支撑 Java NIO 与 NodeJS 的底层技术
  6. Cloudera Manager安装
  7. EL表达式的11隐含对象
  8. 记一次应急响应到溯源入侵者
  9. 公路交通安全设施设计细则_转让江苏公路交通工程(公路安全设施分项)二级资质(包安许)...
  10. python如何确定拐点_如何确认均线拐点的实战技巧和理论(图解)
  11. 爬虫抓取表格中的数据
  12. React 一些相关的技巧
  13. c 语言编程文档下载,C语言编程规范
  14. vue前端跨域解决方案
  15. 红外接收C语言实现 NEC 定时器
  16. java农夫过河_农夫过河问题(java版)
  17. Axure手机移动端交互原型通用元件库
  18. 清除谷歌浏览器input框黄色底色
  19. 蓝桥ROS机器人之古月居ROS入门21讲
  20. [Java笔记13] 日期与时间

热门文章

  1. 如何卸载或删除 Microsoft Office 2007 套件
  2. tomcat 配置环境
  3. 基于Unity3D的牙医病人小游戏设计与实现 文档+项目源码及可执行EXE文件
  4. 自动化编辑器 插件开发
  5. 爱奇艺Android客户端启动优化与分析(转载)
  6. HotSpot线程与栈帧
  7. 产品经理必备的5大工具
  8. SVN撤销已提交的代码
  9. python强制暂停线程_如何暂停线程(python)
  10. mysql使用正则取2个字段的交集