打造音视频极致消费体验

在观看视频时,用户最看重的是什么呢?清晰度?流畅度?还是播放时的稳定性?作为视频厂商,不仅要考虑到常见的指标,一些关乎用户体验的隐藏性指标也需要重点关注。如何持续升级优化代码并在成本和用户体验之间找到平衡,这需要技术团队不断地尝试。LiveVideoStackCon 2022北京站邀请到快手播放技术中心负责人苍鹏为我们分享快手如何打造极致的音视频消费体验。

文/苍鹏

编辑/LiveVideoStack

大家好,我是苍鹏,目前在快手音视频技术部任播放技术中心负责人。我们团队主要负责播放器、下载器和图片库,是快手音视频消费体验的入口。在今天的分享中,我将重点探讨从端侧播放的角度如何优化消费体验。

-01-

“链”——音视频点播链路

首先将从快手音视频链路出发展开介绍。

b3c60a7474c34d36bb8094876568214b.png

上图是关于快手的点播云基建。快手的点播链路包括生产、处理、分发和消费四个环节,从用户的角度来看,则包括拍摄、编辑和上传视频,最终在端上播放视频。用户能够感知到的是生产和消费。快手是一个以视频为核心载体的平台,整个链路规模庞大,但设计非常精巧。

c4002e1556df6d0e57dd1c098140a899.jpeg

快手支持4K视频的拍摄、编辑和上传,保障视频上传时的原始质量。此外,媒资上传管理平台可实现视频的智能分析,而媒体智能处理平台可以进行视频增强、音频增强、质臻影音和内容感知转码等操作。融合CDN管理实现多CDN的调度。终端播放可从多个清晰度档位中调用多家CDN,结合端上所有优化,最终呈现给用户。整个链路实现了端到端的全链路优化,既保障清晰度和流畅度,又实现了成本的最优化。

-02-

“眼”——音视频播放数据与指标体系

快手设计了全链路的质量保障体系,其中播放数据体系和指标体系是最为重要的环节。

在从事流媒体工作时,我们常常会接到用户反馈起播速度慢、播放卡顿等问题。仅仅针对某一个用户的情况进行分析并不能完全反映所有用户的体验状况。因此,我们引入了音视频消费指标体系的概念。

06aec48dd5ac2b412adbc515f9a89e6c.png

优化用户体验的关键在于量化,因此我们通过QoE指标来评估用户体验质量,并基于视频设计QoS指标来保证质量。通过这些指标,我们可以分析用户的痛点并提出相应的优化方案,在上线之前使用A/B Test来验证优化方案对用户的影响。此外,我们还设置了日常监控、自动报警和自动归因的功能。

f820c7e5983df3b85982181d4389f1dc.jpeg

快手设计了一套完整的消费指标,覆盖常规维度、播放维度和业务维度。

6303d53303191c0508d85dc569eb0155.png

播放是整个用户体验的入口,也是最贴近用户的环节。所有的QoE和QoS指标都基于播放的埋点建立。举个例子,播放器首屏和用户体验是有着紧密联系的。基于播放器首屏的指标,我们在播放器这一端设计了30+埋点。通过对这些埋点进行分析,我们最终设计出了各种深入优化方案。目前,快手的首屏体验均值在百毫秒。

4856fc001f27922ed9d5c0ea39a0bcc1.jpeg

埋点指标体系是基于快手音视频大数据体系建立的。此外,底层还有多个域的基础建设,实现了自动化报警和自动归因等服务。基于这些基础能力,我们制定了流畅度优化、清晰度优化和成本控制等策略,并将这些能力应用到快手的各个业务中。

-03-

“核”——音视频播放核心技术优势

79eb82cb6bcaf055ae33f3f47ed9fc43.png

在集成播放器时,不仅仅只是提供内核,也提供了完整的服务。通过中间件隔离业务和内核,并提供核心而简单的抽象接口。复杂的实现都在内部完成,并将通用的能力(如埋点上报、配置管理等)封装到中间件中。这样做的目的是为了降低业务的接入成本,让底层内核可以专注于各自的核心能力。

cd9627d569f94248688fdb7f9a24e57f.png

在设计播放器内核框架时,我们将抽象作为核心理念。整体架构分为三层,即业务接入层、处理框架层和组件支撑层。为应对复杂的策略消息,我们针对其进行了相应的抽象,并将其处理过程放置于各自的处理中心。中间的核心部分是一套基于Node抽象的完整pipeline。我们也实现了插件系统能力,基于插件系统,客户端任何私有化定制都可以快速集成到播放器内部,性能上实现了全局线程池方案,可以为多个不同的播放器提供服务。

6e32af20a52ed83b91f087dccf693f0b.png

基于整体抽象架构,快手实现了播放器的全链路。除了通用的基础协议,链路还支持AAS 点播协议、LAS直播协议等。此外,对于一些非常核心的模块,快手还进行了进一步的抽象和优化。

5c8513e63f4921977af3c3999a195ef1.png

我们以视频渲染框架为例说明。视频渲染在整个播放环节中扮演着重要且复杂的角色。该框架对复杂的视频渲染抽象出GPU Frame实现封装的输入、抽象出GPU Interface实现API的渲染、抽象出Device Interface实现设备的桥接。基于此架构,视频后期处理团队只需实现对应VPP的Unit即可。这套独立的架构完全脱离播放器,因此图片、弹幕等需要视频渲染能力的服务都可轻松接入到该架构中。

f10eafeab274e2f92d7d30074d0a8145.png

快手的下载器也是完全独立,不依赖于播放器。下载器能够为播放器提供服务,具有边下边播和缓存等功能。此外,在下载器内部,所有静态资源都通过下载器实现。根据不同需求,下载器还实现了缓存管理、网络控制和任务调度等功能。

0cd15a3e10cda3bb45267eb0d10a8bbf.png

为了满足对网络性能的极高要求,快手依托自研的网络库来实现网络传输,并在此基础上进行了全链路的优化,包括HTTP/3、预解析和预建立连接等操作。

5bcd19f20554d6bf0048f36a916cc653.png

目前,快手的硬解码覆盖率在95%以上,为用户带来了非常好的体验。安卓的硬解码器非常复杂,并且国内的厂商经常进行魔改,因而存在上万种安卓设备和数百种手机芯片。为此快手通过线下测试和线上检测,一次性完成了所有存量设备的硬解码适配。

解决存量问题还不够,还要解决增量问题。因此,快手与芯片和ROM厂商建立了一套完整的对接体系。在芯片发布之前,快手会与厂商进行芯片级硬解能力测试。同时,在新机型上市之前,快手还会与ROM厂商联合进行验证硬解码的适配。一旦新机型上市后,快手会进行线上监控,以继续对其进行优化。

4dc326938f347ad669717f08ee242a92.png

虽然硬解码体系已经能够覆盖95%以上主流手机厂商和芯片,但仍然可能存在一些小厂商的手机和芯片。为此我们设计了机型画像平台。该平台可以动态收集机型的性能信息,并建立完整的机型画像数据仓库。这些数据可以被用来反向调整多码率和硬解码的配置。无论是机型画像平台还是硬解码体系,我们都已经将其集成在快手的线上服务当中。

2c99daa92bd6d9de8e59090203918fbe.png

多码率自适应可以自动识别短视频和长视频,达到清晰度和流畅度的最佳平衡。

a14b74bc5cb39fc5aeabcc0b00589bf6.png

除了基础优化之外,快手还进行了一些针对性的场景优化。在上下滑的场景中,用户的需求非常明确,他们需要在上下滑屏幕时实现快速起播,实现无缝播放。为了满足用户的需求,快手实现了播放器的预加载。当用户观看当前视频时,系统会自动创建下一个播放器,提前进行资源的下载、解码和预渲染。当然,这种预加载也会带来网络竞争和系统资源竞争的问题。为了解决这些问题,快手的应对策略是在保证当前视频播放流畅度的前提下,才会进行播放器的预加载。

快手还实现了视频的预下载功能。当观看当前视频时,会预先将后面几个视频缓存在本地,这样即使网络状况不佳或者滑动速度很快,也可以保证无缝起播的体验。当然,这样做也会存在一些制约项,比如增加了下载量,会带来更高的带宽成本。此外,同时进行的下载任务会导致各种网络竞争,有可能影响到当前正在播放的视频。为了避免这些问题,快手提供了不同的策略,通过预测下载速度和用户行为,在不同的场景中控制下载数量和下载视频的大小。无论是视频下载还是资源下载,都可以在下载器内部实现网络避让,从而达到良好的流畅度和成本平衡。

577ebcb3904aa2e0ba3dab998b257b38.png

对于播放器,我认为最重要的核心指标就是稳定性。快手目前已经实现UT覆盖率90%以上,做到天级别的线上版本更新频率,提供每日百亿级的播放量。

-04-

“能”——音视频播放特色功能与实践

90ff7914040bfeed5505eb58059616bb.png

HDR是视频领域发展的必然趋势,但由于设备的限制非常大,因此很多硬件和芯片都不支持HDR,尤其是手机端,显示效果并不好。然而,快手通过算法来解决部分硬件差异的问题,使之不仅可以在兼容的设备上展示出HDR的效果,而且在不兼容的设备上也能正常展示。

de5ea024e7c37ea8b4aa787e4f055efd.png

播放器内置了后处理SR算法,适配不同机型,设计不同的推理策略和链路,全面支持移动端的高、中端机型。在低端的机型,受限于性能,目前还较难实现。

14836f859abdde8f8951e077fe7e0444.png

快手在音频后处理方面也自研了3D环绕音效。通过专业音频后处理算法提升听感,支持响度均衡、低音增强、声场展宽和耳机环绕等操作,效果震撼。而且该处理接入成本低,支持一键开启,延迟也在毫秒级别。

b9c464ed669c0ae209252ebe7fe67309.png

质臻影音融合多种智能修复和增强技术,全方位定义极致的硬件优化体验。服务端和播放端都有对应的前处理和后处理来实现质臻影音。

a98cd09f96e6cbf05030a408139a3660.png

两年前,快手就已经支持360°视频和3D环绕音效播放。在不借助VR设备即可播放全景视频和直播,提供沉浸式播放体验。快手在播放器内部封装了传感器、手势控制等模块,上层的业务的接入零感知,也不依赖任何第三方库。同时,快手也和一些设备厂商合作,实现一键发布直播。

734190bdc91afbd082fe69d0781ef413.png

全景是从里往外看,而6DoF是从外往里看。快手已经实现了完整的端到端的6DoF服务。最终为用户带来可交互、空间感丰富的视觉体验。

目前上述的一些技术能力已实现对外合作,基于开放的产品能力,快手技术toB品牌StreamLake已携手知乎、中国联通、央视频、浙江广播电视集团、蒙牛、小米等众多合作伙伴,在视频化、智能化领域展开深入合作。  

以上是我本次的分享,谢谢大家!


9ab95902f4286a8ee7d7745e4ba8cf2d.png

扫描图中二维码或点击“阅读原文 

查看更多LiveVideoStackCon 2023上海站精彩话题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256409.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

前端系列17集-和公司架构师在学习vue3-springboot

SyntaxError: "undefined" is not valid JSON at JSON.parse (<anonymous>) 这个错误通常意味着你正在尝试将一个非 JSON 格式的数据转换成 JSON 格式。为了修复这个问题&#xff0c;你需要找到导致错误的代码行并检查它的输入数据是否符合 JSON 格式标准。 这…

微信联盟链接不到服务器怎么,LOL微信绑定方法及无法登录处理方案推荐

LOL今日开启了微信登录功能的测试&#xff0c;很多玩家不知道该怎么绑定。本文小编会为大家详细介绍绑定方法和无法登陆的处理方案&#xff0c;感兴趣的小伙伴们&#xff0c;和小编一起来看看吧&#xff01; 绑定方法 8月21日8.16版本发布后&#xff0c;在部分大区开启微信登录…

英雄联盟手游登录注册地与服务器不匹配,lol手游无法使用当前地区账号登录原因说明,相关解决方法分享...

在lol的手游中&#xff0c;最近注册登录的玩家越来越多&#xff0c;上线登录的时间也越来越频繁&#xff0c;很多服务器也处于无法登陆的状态&#xff0c;刚刚也有玩家发现Unable to login with an account from this region的登录提示&#xff0c;这是表示无法使用当前地区的账…

LOL决赛夜钓鱼攻击分析

今天是LOL决赛夜&#xff0c;朋友圈和群里很多人发图一的链接&#xff0c;会自动跳转到B站&#xff0c;我看了一下认为有点问题。 首先是大学生群体中大规模转发了这种自动跳转b站的url&#xff0c;并且url不相同。 第二我进行分析了一下&#xff0c;发现这个url域名没有网页…

印尼玩lol注册哪个服务器,LOL手游印尼服怎么注册 云顶之弈印尼服账号注册方法[多图]...

LOL手游印尼服作为国外服开放的区域&#xff0c;可以让你认识更多的国外强力玩家哦&#xff0c;但是很多玩家都不知道如何注册账号&#xff0c;下面就让安族66来告诉大家吧~ LOL手游云顶之弈印尼服账号注册方法 国服英雄联盟玩家众多&#xff0c;万一手游的水平达不到希望中的程…

推特 我们目前不能注册此邮箱地址_试玩手游版LOL,媲美端游的质量,这份注册攻略须收藏|moba|英雄联盟|lol|端游|手游...

眼看着英雄联盟手游版已经在印尼、马来西亚、新加坡、日本、菲律宾、韩国等公测地区的应用商店上线&#xff0c;且正式进行不限号公测&#xff0c;国内玩家也开始想尽办法冲破地域限制来率先体验这款经典的游戏。那么“如何成功下载并运行游戏&#xff1f;”、“哪些机型能够完…

推特 我们目前不能注册此邮箱地址_试玩手游版LOL,媲美端游的质量,这份注册攻略须收藏...

原标题&#xff1a;试玩手游版LOL&#xff0c;媲美端游的质量&#xff0c;这份注册攻略须收藏 眼看着英雄联盟手游版已经在印尼、马来西亚、新加坡、日本、菲律宾、韩国等公测地区的应用商店上线&#xff0c;且正式进行不限号公测&#xff0c;国内玩家也开始想尽办法冲破地域限…

前端:完整简单详细的注册页面讲解

成品总效果如下&#xff1a; 需要其他修饰网页可以加入自己的创意 讲解&#xff1a; 不知道基础语法的宝可以看看我先前发的一些内容 注意点&#xff1a; 1&#xff0c;密码需要用type"password"属性&#xff0c;使密码不会被显示。如下&#xff1a; 密 码<in…

云顶之弈服务器维护多长时间,云顶之弈各服务器上线时间一览

云顶之弈已经在美服PBE测试一段时间了&#xff0c;终于要开始登陆正式服了&#xff0c;下面为大家带来的是lol云顶之弈各服务器的正式上线时间一览&#xff0c;一起来了解一下吧。 推荐阅读&#xff1a; 云顶之弈各服务器上线时间一览 由于以下的时间都是太平洋时区&#xff0c…

冲击百万大奖!广州·琶洲算法大赛赛题讲解会,7场直播直击命题重点

‍‍ 第二届广州琶洲算法大赛是由广州市人民政府主办、海珠区人民政府和百度公司等单位联合承办的赛事&#xff0c;旨在为企业、高校师生、广大开发者提供展示技术能力、开展跨界交流、促进创业就业的平台。大赛自 4 月 25 日启动以来&#xff0c;吸引了超过 1000 支队伍报名参…

microsoft store 安装包_LOL英雄联盟手游官方安装包

两年了&#xff0c;整整两年了&#xff0c;英雄联盟手游终于要来了&#xff0c;10月28日&#xff0c;LOL手游在日本开放公测&#xff0c;无需再预约。 不过很遗憾&#xff0c;现在只开放了东南亚小部分地区&#xff0c;国内还得等一段时间。官方预计在明年春季上线国服。 前辈今…

[JSP暑假实训] 二.JSP网站创建及Servlet实现注册表单提交、计算器运算

本系列文章是作者暑假给学生进行实训分享的笔记&#xff0c;主要介绍MyEclipse环境下JSP网站开发&#xff0c;包括JAVA基础、网页布局、数据库基础、Servlet、前端后台数据库交互、DAO等知识。 本篇文章开始讲解MyEclipse环境下创建JSP网站&#xff0c;并实现注册表页面的创建及…

lol计算机丢失msvcp140,玩英雄联盟提示电脑缺少msvcp140.dll怎么办

玩英雄联盟提示电脑缺少msvcp140.dll怎么办&#xff1f;很多小伙伴不知道msvcp140.dll是什么&#xff1f;msvcp140.dll 其实是 VC 运行库组件中的一个 dll 文件。很多小伙伴安装游戏活着软件的时候提示缺少该文件&#xff01;其实我们可以通过安装 VC 运行库来解决这个错误提示…

仿LOL项目开发第一天

---恢复内容开始--- 仿LOL项目开发第一天 by---草帽 项目源码研究群&#xff1a;539117825 最近看了一个类似LOL的源码&#xff0c;颇有心得&#xff0c;所以今天呢&#xff0c;我们就来自己开发一个类似于LOL的游戏demo。 可能项目持续的时间会比较久&#xff0c;主要是现在还…

linux 用户创建时间,在linux中如何能得知一个用户的创建时间?

在linux中如何能得知一个用户的创建时间&#xff1f; (2011-08-24 03:36:01) 标签&#xff1a; 杂谈 在linux中如何能得知一个用户的创建时间&#xff1f;如题。之前我试过id、passwd以及通过stat查看用户主目录的创建时间&#xff0c;但是都不能准确地反映这个用户的 创建时间…

印尼玩lol注册哪个服务器,《LOL手游》印尼服怎么注册 安卓IOS注册流程攻略

导 读 LOL手游印尼服终于上线咯。相信大家都想去尝试一波&#xff0c;印尼服作为国际外服&#xff0c;想要体验就需要注册账号哦&#xff0c;下面九游小编就带来详细注册方法&#xff0c;快来看看吧~ 云顶之弈手游安卓ios注册流程详解 国服英雄联盟... LOL手游印尼服终于上线咯…

印尼玩lol注册哪个服务器,LOL手游印尼服怎么注册 LOL手游印尼服账号注册方法介绍...

版本&#xff1a;v1.0 类型&#xff1a;MOBA跑酷大小&#xff1a;1 MB评分&#xff1a;9.2 标签&#xff1a; moba 策略 立即下载 LOL手游目前还没在中国上线&#xff0c;我国玩家想要提前体验可以先去别国服玩&#xff0c;印尼服就是一个不错的选择&#xff0c;不少小伙伴好奇…

【PWN · ret2text | PIE 】[NISACTF 2022]ezpie

简单的PIE绕过 目录 前言 一、题目重述 二、解题思路 1.现有信息 2.思考过程 3.exp 总结 前言 所接触的PIE保护的第一题&#xff0c;也非常简单。 一、题目重述 二、解题思路 1.现有信息 PIE保护——程序可能被加载到任意位置&#xff0c;所以位置是可变的。程序返回…

JRE和JDK

JRE (Java Runtime Environment) 是Java程序的运行时环境&#xff0c;包含JVM 和运行时所需要的核心类库。我们想要运行一个已有的Java程序&#xff0c;那么只需安装JRE即可。 JDK (Java Development Kit) 是Java程序开发工具包&#xff0c;包含JRE和开发人员使用的工具。 其中…

分享一个下载软件的html

主要是html与js,css实现 页面如下: 点击软件后会滑动到,软件介绍,然后弹出二维码: <!DOCTYPE HTML> <!--HTML for wufuba.comAuthor: www.wufuba.com --> <html lang="zh-cmn-Hans"><head><title>xxx软件</title><m…