在观看视频时,用户最看重的是什么呢?清晰度?流畅度?还是播放时的稳定性?作为视频厂商,不仅要考虑到常见的指标,一些关乎用户体验的隐藏性指标也需要重点关注。如何持续升级优化代码并在成本和用户体验之间找到平衡,这需要技术团队不断地尝试。LiveVideoStackCon 2022北京站邀请到快手播放技术中心负责人苍鹏为我们分享快手如何打造极致的音视频消费体验。
文/苍鹏
编辑/LiveVideoStack
大家好,我是苍鹏,目前在快手音视频技术部任播放技术中心负责人。我们团队主要负责播放器、下载器和图片库,是快手音视频消费体验的入口。在今天的分享中,我将重点探讨从端侧播放的角度如何优化消费体验。
-01-
“链”——音视频点播链路
首先将从快手音视频链路出发展开介绍。
上图是关于快手的点播云基建。快手的点播链路包括生产、处理、分发和消费四个环节,从用户的角度来看,则包括拍摄、编辑和上传视频,最终在端上播放视频。用户能够感知到的是生产和消费。快手是一个以视频为核心载体的平台,整个链路规模庞大,但设计非常精巧。
快手支持4K视频的拍摄、编辑和上传,保障视频上传时的原始质量。此外,媒资上传管理平台可实现视频的智能分析,而媒体智能处理平台可以进行视频增强、音频增强、质臻影音和内容感知转码等操作。融合CDN管理实现多CDN的调度。终端播放可从多个清晰度档位中调用多家CDN,结合端上所有优化,最终呈现给用户。整个链路实现了端到端的全链路优化,既保障清晰度和流畅度,又实现了成本的最优化。
-02-
“眼”——音视频播放数据与指标体系
快手设计了全链路的质量保障体系,其中播放数据体系和指标体系是最为重要的环节。
在从事流媒体工作时,我们常常会接到用户反馈起播速度慢、播放卡顿等问题。仅仅针对某一个用户的情况进行分析并不能完全反映所有用户的体验状况。因此,我们引入了音视频消费指标体系的概念。
优化用户体验的关键在于量化,因此我们通过QoE指标来评估用户体验质量,并基于视频设计QoS指标来保证质量。通过这些指标,我们可以分析用户的痛点并提出相应的优化方案,在上线之前使用A/B Test来验证优化方案对用户的影响。此外,我们还设置了日常监控、自动报警和自动归因的功能。
快手设计了一套完整的消费指标,覆盖常规维度、播放维度和业务维度。
播放是整个用户体验的入口,也是最贴近用户的环节。所有的QoE和QoS指标都基于播放的埋点建立。举个例子,播放器首屏和用户体验是有着紧密联系的。基于播放器首屏的指标,我们在播放器这一端设计了30+埋点。通过对这些埋点进行分析,我们最终设计出了各种深入优化方案。目前,快手的首屏体验均值在百毫秒。
埋点指标体系是基于快手音视频大数据体系建立的。此外,底层还有多个域的基础建设,实现了自动化报警和自动归因等服务。基于这些基础能力,我们制定了流畅度优化、清晰度优化和成本控制等策略,并将这些能力应用到快手的各个业务中。
-03-
“核”——音视频播放核心技术优势
在集成播放器时,不仅仅只是提供内核,也提供了完整的服务。通过中间件隔离业务和内核,并提供核心而简单的抽象接口。复杂的实现都在内部完成,并将通用的能力(如埋点上报、配置管理等)封装到中间件中。这样做的目的是为了降低业务的接入成本,让底层内核可以专注于各自的核心能力。
在设计播放器内核框架时,我们将抽象作为核心理念。整体架构分为三层,即业务接入层、处理框架层和组件支撑层。为应对复杂的策略消息,我们针对其进行了相应的抽象,并将其处理过程放置于各自的处理中心。中间的核心部分是一套基于Node抽象的完整pipeline。我们也实现了插件系统能力,基于插件系统,客户端任何私有化定制都可以快速集成到播放器内部,性能上实现了全局线程池方案,可以为多个不同的播放器提供服务。
基于整体抽象架构,快手实现了播放器的全链路。除了通用的基础协议,链路还支持AAS 点播协议、LAS直播协议等。此外,对于一些非常核心的模块,快手还进行了进一步的抽象和优化。
我们以视频渲染框架为例说明。视频渲染在整个播放环节中扮演着重要且复杂的角色。该框架对复杂的视频渲染抽象出GPU Frame实现封装的输入、抽象出GPU Interface实现API的渲染、抽象出Device Interface实现设备的桥接。基于此架构,视频后期处理团队只需实现对应VPP的Unit即可。这套独立的架构完全脱离播放器,因此图片、弹幕等需要视频渲染能力的服务都可轻松接入到该架构中。
快手的下载器也是完全独立,不依赖于播放器。下载器能够为播放器提供服务,具有边下边播和缓存等功能。此外,在下载器内部,所有静态资源都通过下载器实现。根据不同需求,下载器还实现了缓存管理、网络控制和任务调度等功能。
为了满足对网络性能的极高要求,快手依托自研的网络库来实现网络传输,并在此基础上进行了全链路的优化,包括HTTP/3、预解析和预建立连接等操作。
目前,快手的硬解码覆盖率在95%以上,为用户带来了非常好的体验。安卓的硬解码器非常复杂,并且国内的厂商经常进行魔改,因而存在上万种安卓设备和数百种手机芯片。为此快手通过线下测试和线上检测,一次性完成了所有存量设备的硬解码适配。
解决存量问题还不够,还要解决增量问题。因此,快手与芯片和ROM厂商建立了一套完整的对接体系。在芯片发布之前,快手会与厂商进行芯片级硬解能力测试。同时,在新机型上市之前,快手还会与ROM厂商联合进行验证硬解码的适配。一旦新机型上市后,快手会进行线上监控,以继续对其进行优化。
虽然硬解码体系已经能够覆盖95%以上主流手机厂商和芯片,但仍然可能存在一些小厂商的手机和芯片。为此我们设计了机型画像平台。该平台可以动态收集机型的性能信息,并建立完整的机型画像数据仓库。这些数据可以被用来反向调整多码率和硬解码的配置。无论是机型画像平台还是硬解码体系,我们都已经将其集成在快手的线上服务当中。
多码率自适应可以自动识别短视频和长视频,达到清晰度和流畅度的最佳平衡。
除了基础优化之外,快手还进行了一些针对性的场景优化。在上下滑的场景中,用户的需求非常明确,他们需要在上下滑屏幕时实现快速起播,实现无缝播放。为了满足用户的需求,快手实现了播放器的预加载。当用户观看当前视频时,系统会自动创建下一个播放器,提前进行资源的下载、解码和预渲染。当然,这种预加载也会带来网络竞争和系统资源竞争的问题。为了解决这些问题,快手的应对策略是在保证当前视频播放流畅度的前提下,才会进行播放器的预加载。
快手还实现了视频的预下载功能。当观看当前视频时,会预先将后面几个视频缓存在本地,这样即使网络状况不佳或者滑动速度很快,也可以保证无缝起播的体验。当然,这样做也会存在一些制约项,比如增加了下载量,会带来更高的带宽成本。此外,同时进行的下载任务会导致各种网络竞争,有可能影响到当前正在播放的视频。为了避免这些问题,快手提供了不同的策略,通过预测下载速度和用户行为,在不同的场景中控制下载数量和下载视频的大小。无论是视频下载还是资源下载,都可以在下载器内部实现网络避让,从而达到良好的流畅度和成本平衡。
对于播放器,我认为最重要的核心指标就是稳定性。快手目前已经实现UT覆盖率90%以上,做到天级别的线上版本更新频率,提供每日百亿级的播放量。
-04-
“能”——音视频播放特色功能与实践
HDR是视频领域发展的必然趋势,但由于设备的限制非常大,因此很多硬件和芯片都不支持HDR,尤其是手机端,显示效果并不好。然而,快手通过算法来解决部分硬件差异的问题,使之不仅可以在兼容的设备上展示出HDR的效果,而且在不兼容的设备上也能正常展示。
播放器内置了后处理SR算法,适配不同机型,设计不同的推理策略和链路,全面支持移动端的高、中端机型。在低端的机型,受限于性能,目前还较难实现。
快手在音频后处理方面也自研了3D环绕音效。通过专业音频后处理算法提升听感,支持响度均衡、低音增强、声场展宽和耳机环绕等操作,效果震撼。而且该处理接入成本低,支持一键开启,延迟也在毫秒级别。
质臻影音融合多种智能修复和增强技术,全方位定义极致的硬件优化体验。服务端和播放端都有对应的前处理和后处理来实现质臻影音。
两年前,快手就已经支持360°视频和3D环绕音效播放。在不借助VR设备即可播放全景视频和直播,提供沉浸式播放体验。快手在播放器内部封装了传感器、手势控制等模块,上层的业务的接入零感知,也不依赖任何第三方库。同时,快手也和一些设备厂商合作,实现一键发布直播。
全景是从里往外看,而6DoF是从外往里看。快手已经实现了完整的端到端的6DoF服务。最终为用户带来可交互、空间感丰富的视觉体验。
目前上述的一些技术能力已实现对外合作,基于开放的产品能力,快手技术toB品牌StreamLake已携手知乎、中国联通、央视频、浙江广播电视集团、蒙牛、小米等众多合作伙伴,在视频化、智能化领域展开深入合作。
以上是我本次的分享,谢谢大家!