规模增长背后抖音如何构建直播体验优化

news2024/11/29 8:35:54

随着抖音直播用户持续增加,生态日渐丰富,在经历亿万规模化增长的过程之中,体验优化是必须要面对的问题,如何建立不同阶段的优化体系?如何抓住过程中的优化重点?另外面对业务增长诉求,面对新技术发展趋势,体验优化如何体现业务价值?新技术如何落地在业务之中?LiveVideoStackCon 2022北京站邀请到火山引擎直播技术负责人周一楠,分享抖音体验优化过程的一些探索与实践。

文/周一楠

编辑/LiveVideoStack

6105ec5645797fa13201ec1f896bde3f.jpeg

大家好,今天我分享的主题是“规模增长背后抖音如何构建直播体验优化”。

-01-

抖音规模化过程中面临的挑战

9bd7f6e944508212d7741e30387d7598.jpeg

首先给大家展示一张图,这是抖音在过往一段时间里的直播播放的并发量。这张图背后其实隐含着几个关键词。

  • 首先是“增长”,抖音直播业务量级一直在持续增长,包括时长和渗透均保持增长的状态。

  • 另外是“突刺”,代表着热点主播、热点赛事、热点事件等,导致直播量级经常出现较大的波动,这种波动对稳定性提出了很大的挑战。

  • 第三是“场景”,从传统的秀场,到游戏,再到电商,最近一年拓展到竞技比赛、虚拟偶像、PICO VR,都在抖音直播中孵化,这些都是新场景的尝试。

  • 最后对应的是“平衡”,场景越来越丰富,用户体量越来越大,除了需求的差异之外,我们也要理解并处理好不同阶段在成本和体验之间的平衡。

eb2774b4fab0494ddff1539248293bb2.jpeg

今天我用思考总结+具象案例的模式来做分享,抖音去年关注度最高的是世界杯直播,整体直播量级完全超出之前预估。数据上来看,单场的PCU并发量最高为3706万,UV值2.3亿,应该是目前规模最大的直播赛事。针对这样的量级变化,非常考验应急策略,尤其是稳定性,作为第一要务要保障,为此我们做了大量的工作。

  • 首先,直播全链路无单点,各个环节都会具备冗余灾备的能力,比如上行网络、源站、转码系统以及节点和节点之间的网络线路。

  • 第二,在分发层面单机性能优化和弹性扩缩容,最大程度的提升资源利用率和复用率。

  • 第三,总体容量保障,为了满足大规模观看4K分辨率要求,从整个行业去募集分发资源,通过融合调度系统,实现容量保证。同时在用户观看直播的过程中,配合容灾降级的策略,达到体验与稳定性间的最优解。

456578f45c30c1f09278139ca3445a9e.jpeg

另外具象来看,新的技术面对新的挑战。本次世界杯我们率先实现了大规模4k 50fps的超高清直播的行业首创。正常情况下,抖音默认的直播分辨率是720p或者1080p,像世界杯这样超大规模的4k直播我们也是第一次尝试。另外竞技类比赛对延时的要求非常高,整体直播的端到端延时,最低情况下可到一秒钟。同时我们也进行了画质增强,支持10bit的HDR,在色彩的饱和度、空间感都最大程度的还原比赛现场。

另外虽然4k画质清晰度足够高,但是不能一味的追求单一的直播体验指标,还要注意成本控制。期间我们使用火山引擎的“极致高清”转码技术,以保证最低的码率,最优的成本。最后这次世界杯,我们也创新的使用了VR直播,实现了180度和360度的VR 3Dof直播业务落地。以上种种优化升级,整个世界杯的过程中我们最终也输出了数十项核心专利,为后续沉淀和持续迭代奠定了基础。

-02-

抖音直播体验优化的体系构建

6cc95394ccef477104a8f1b3f16fb51a.jpeg

第二部分主要介绍下抖音直播体验优化的体系构建。我们会从业务和场景出发做直播技术升级,关注用户的核心体验。同时,我们也会结合当前技术的成熟度、可能性、条件要求,对技术应用进行判断,期望寻找发挥技术价值最大化杠杆的地方。

在技术判断之后,我们会进行线下性能、体验的验证体系建设,设置好准入准出条件,并设计数据指标来做度量参考。最后线上部分以QoE为牵引,进行线上AB实验指标做持续调优,最终验证收益和价值回收。基于以上的循环模式,持续构建直播体验优化的体系,以上是我们构建的整体方法论。

2f335818a53ac984c513fa40a1c016b9.jpeg

具象来看,在整个世界杯期间,用户最关注的核心体验之一是低延时。过往我们在很多场景也在做低延时优化,解决秀场中主播反馈慢,电商中介绍商品不及时,以及教育场景中老师授课的交互性差等问题,都取得了不错的用户正向反馈和业务收益。

这次竞技比赛对于延时的意义会更重要,最差的一种体验是观看比赛直播的过程中,这边还没看到进球,就已收到其他App的进球消息了。虽然有些夸张,但比赛的及时性是用户能够明显感知到的。因此低延时的技术判断和业务价值我们是确定的。在此之后,就进入到技术方案环节,我们需要了解延时到底发生在哪个环节?

从全链路角度来看,原流上行到接入节点,再通过源站到转码处理,之后分发到边缘最后在通过不同的协议,到用户最后1公里。在整个过程中,如链路图所示,每个环节都会产生延时。但其中播放器的缓存对延迟影响最大,在直播过程中,为了对抗卡顿,常规做法都会设置一定的buffer缓冲区,一般防抖buffer会设置在5~8秒,进而引入了延时产生。

c7315757fc462b10753625a47741a52c.jpeg

链路盘点清楚,我们重点解决主要问题,并在两个技术方向来降低延时。

第一个是基于HTTP-FLV的传输协议。第二个是基于火山引擎超低延时直播技术-RTM。HTTP-FLV是最广泛使用的流式传输方案,协议本身较简单,延时目前我们最优可以到3s以内RTM协议在某些层面和RTC有一定的共用技术,属于新型的直播传输模式,在抖音直播世界杯期间,我们也投入了使用,在RTM上可以将延时做到1秒以内。

902238c7468f3ac032dcee8ba1b53c4a.jpeg

下面介绍下具体的优化方法。我们把FLV延迟进行了分类,分为初始静态延迟和动态消费延迟。针对不同的延迟有不同的优化策略。对于初始静态延迟,可以调低Gop、转码延迟优化以及降低CDN GopCache。对于动态消费延迟出现的IO消费慢、解码消费慢和渲染消费慢问题,采用不同的优化策略。其中IO消费慢可以采用卡顿优化、倍速播放和丢帧跳片。解码消费慢可以采用性能优化、动态码率和丢帧跳片。渲染消费慢会采用倍速播放、性能优化、动态码率和丢帧跳片。

1c8ad99abb618cba7eea29ccb8cb43f4.jpeg

针对RTM传输协议,虽然RTC和RTM有一定的复用性,但也有一定差异性。直播场景中更加看重首帧的成功率和长时间看播的音画强同步率。

RTC应用最多的是会议模式和教育小班课,技术层面,RTC会维护一个网络长链接,无论socketio还是websocket采用哪一种方式实现,都会保证信令消息的可靠性和即时性,进而保障成功率和体验。RTM的数据和信令也是分离的,但无长链接,需要做定向技术改造,比如使用预加载策略降低首帧,还有一些用户的网络不支持UDP传输,如果UDP不通,也会影响连接的成功率,需要做端口检测。为了提升成功率,因为SDP有冗余信息存在,所以也会把SDP进行压缩,变成miniSDP进行传输,通过0rtt或者一个rtt处理来提升成功率。另外因为抖音默认采用feed流模式,所以需要最大程度的去降低首帧时间。

在整个直播过程中,需要保证实时地强音画同步,尤其是在高清晰度的情况下,音频先触达,需要减少起播倍数播放,另外在分发环节上,RTM的分发模式通过CDN的边缘节点进行分发,我们在服务端、客户端侧的组帧、解帧需要做定向优化,提升秒开的成功率和降低时间,这里不详细展开了。

5ed6818cb5f34d150033ca482da0ceb6.jpeg

最后来看一下整体业务收益。两年前,抖音的直播延时大约在7.9s。我们持续地在两个方向上进行延时优化,目前技术数据上来看,大盘均值可以降低到3秒内,RTM场景在1秒内,均投入到了常规放量状态。业务价值上来看,无论是直播的看播渗透率还是看播时长、评论,亦或电商都有显著正向收益。同时因为减小缓冲区可以减少网络浪费率,从而降低95峰值进而影响直播成本单价,我们除了用户体验的收益之外,也获得了成本上的收益。

829dd63f72dc62a79594ca092888450e.jpeg

除了低延时,我们发现在整个世界杯直播期间,用户对于画质的要求也是最高的。

首先我们先看下视频全链路的技术结构。从生产端编辑处理和视频编码,再上传到云端。在云端和转码环节上会进行视频的分析和理解,然后进行策略优化,进行极致超清的转码。相关的处理完成之后,会把处理好的数据通过边缘节点进行分发,最后再传输到消费端。消费端会对直播流进行播放控制,视频解码以及效果增强。整体看下来涉及端上行,云端编辑&转码,云端分发,最后到端上消费,涉及到的环节多而复杂,往往需要跨多领域配合以达到最优体验。

de1c20433acff563fd1a3b7cfee2e2a5.jpeg

现在抖音直播的分辨率大部分是1080p和720p。世界杯期间我们期望带来4k的大升级,提供更高的清晰度。另外因为足球比赛的特性,运动激烈、纹理复杂、场景切换多,需要提供50fps加HDR模式,最大程度的还原比赛的临近感和冲击性。但这些画质升级的背后,也会带来视频数据量大、实时处理难度大等问题,我们又不希望引入额外的延时,同时使用尽可能低的码率,这些都有非常大的挑战。

e8c492b90cf51b75ab73a0ebae54eb8b.jpeg

我们采取了以下优化思路来解决上述问题。首先进行策略优化的选型,比如判断软件编码还是硬件编码,档位配置,并对画质进行整体评分。策略决定好之后,再进行内部编码内核的优化,以及具体前后处理优化策略,最终保证画质最优。

拆开策略优化一共有三个动作:

首先评估是用硬件编码的模式,还是软件编码的模式,在足球比赛这样特殊的场景中,综合判断软件编码的效果往往比硬件编码效果更好,也更具定制化改造和优化开放性

其次进行前处理的预估,世界杯信号源支持HDR,我们要把HDR的效果带给所有的观众,就需要在转码侧、分发侧以及端上都具备支持4K HDR的能力,否则就会出现图像偏暗的问题。但同时我们也要考虑到一些用户因为手机性能或者网络的原因,没有办法播放HDR视频,这就需要同时具备HDR转换成SDR的能力。在转换过程中会发现传统的ToneMapping算法,不论是Reinhard、Filmic或者Hable,其本质都是固定映射曲线实现从HDR到SDR的转换,不可避免会产生一些信息损失,导致效果不好。我们设计了自适应ToneMapping,通过统计视频内容的实际光照情况动态地进行ToneMapping,从而得到更优的效果。

5d1ed517a30e1c35af24fe597c2ad1df.jpeg

另外,抖音世界杯直播支持多机位、多档位、多分辨率。我们通过多轮评测,制定档位码率的甜点值是多少,目的是为了能够用最低的码率达到最优的画质体验。

41deb806f9ffbf06452ffbb9b0f37c25.jpeg

前处理的环节中,重点讲一下时域ROI技术,为了兼顾视频码率和主观画质,我们采用基于LSTM(长短期记忆网络)的时域ROI技术。通过人眼显著性区域检测和编码相结合的方式,让码率在画面上的分配更加合理。

但目前市面上没有专门针对足球场景的saliency(显著性物体检测)数据集,通用的saliency数据集在世界杯这类特定场景中表现并不理想。针对这一问题,团队专门制作了足球场景的saliency数据集,通过眼动仪追踪球迷观看球赛时的关注区域得到足球比赛的专用saliency数据集,从而极大增加了模型的准确性。针对足球场景中显著性物体较多,显著性区域分散的特点,团队对检测模型进行了专门的优化,在保证检测速度的前提下,提高了模型的召回率和不同场景的鲁棒性,从而实现更优的主观质量。

70b30f895fabc5b2a9e6ac32d3aa67b7.jpeg

编码器内核优化环节, 我们结合世界杯,梳理了过往比赛的测试序列,并根据特征选择包括球场、观众、特写等等,精简视频数量,目的是加快测试迭代,进而在控制码率、动作估计等进行定向优化。最终的效果从图中可以看出,在PSNR、Vmaf对比下,码率持续降低,同时速度在大幅度的提升,最终我们的码控偏差值也控制在1%范围之内。另外与开源项目X265对比,比X265的最快档位,速度还快。最慢档位,码率还低。

-03-

下一步的优化空间

第三部分,我们聊聊下一步的优化空间,这里更多的是一些对未来的探索和想法。

4a13357a5aa4f305baf67fd8387850c4.jpeg

在过往的直播体验优化的过程中,我们做了例如节点优化、极致高清、超分、音量均衡、分辨率升级和HDR等等。在业务情况不断发生变化的同时,用户的网络情况、设备情况也在不断发生变化。做了这么多优化,我们到底想要达成什么样的目的呢?我们最终沉淀了什么?或者有方式能达成灵活的策略吗?

ebceec4032299d531fd098bfffa57eb0.jpeg

未来我们依然希望能够把音视频技术和数据驱动相结合,沉淀到策略中心中去。能够在不同的业务场景、不同的用户需求,提供针对性的优化策略,精细化打磨。另外业务每天都在变化,突发情况特别的多,也需要我们具备这样的技术手段,否则很难保证灵活的模式支持业务发展。

bc5788518d7e15bd33af52bd5dde3291.jpeg

最后,我认为直播体验优化是一个持续的过程,随着场景的新增,新技术的产生,我们一直在优化的路上。如果把稳定性看作60分的基础分,那么如果想拿满分,就必须在直播各个环节持续的优化。需要更低的延迟,更高的画质,更低的成本,甚至需要跳出直播流本身,与业务侧进行动态配合,以保证整个直播的最优效果。

感谢大家,这是我今天的分享。



4d194610e8433b327aaf550e0abec561.jpeg

LiveVideoStackCon 2023上海讲师招募中

LiveVideoStackCon是每个人的舞台,如果你在团队、公司中独当一面,在某一领域或技术拥有多年实践,并热衷于技术交流,欢迎申请成为LiveVideoStackCon的讲师。请提交演讲内容至邮箱:speaker@livevideostack.com。

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

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

相关文章

计算机网络学习08(TCP三次握手和四次挥手)

1、建立连接—TCP上次握手 建立一个 TCP 连接需要“三次握手”,缺一不可 : 一次握手: 客户端发送带有 SYN(SEQx) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;二…

《PyTorch 深度学习实践》第13讲 循环神经网络(高级篇)

文章目录 1 这一讲任务2 相关解释3 代码 该专栏内容为对该视频的学习记录:【《PyTorch深度学习实践》完结合集】 专栏的全部代码、数据集和课件全放在个人GitHub了,欢迎自取。 1 这一讲任务 根据名字中的字符来预测其是哪个语言地区:如&quo…

03_线程间通信

面试题:两个线程打印 两个线程,一个线程打印1-52,另一个打印字母A-Z打印顺序为12A34B...5152Z,要求用线程间通信 public class Demo01 {public static void main(String[] args) {ShareData05 shareData05 new ShareData05();new…

DFIG控制11: 磁链定向矢量控制和仿真

DFIG控制11: 磁链定向矢量控制和仿真,主要是看下怎么根据DFIG模型来做矢量控制。 磁链定向和模型简化 原模型 dq同步坐标系下的模型:DFIG控制10: 双馈发电机的动态模型_Fantasy237的博客 电压方程: { u s d R s i…

AIhelp智能问答

前言 2023年,科技圈里,持续爆火的科技应用,毫无疑问是生成式AI,chatGPT了的,之所以令人惊叹,正是因为它的强大 可以这么认为,chatGPT能够解决很多问题,尤其是问答,问题答案的搜索,远比百度,google要精准,方便得多 如何提出高质量的问题,写好一个promot提示词,尤为重要,提出问题…

Anaconda+vscode+pytorch环境搭建

1、安装Anaconda ​ 不要添加到path,否则可能会引起其他冲突。 ​ 记得手动添加环境变量 2、安装vscode 已经不支持自定义安装啦,默认(D:\Program Files) 按住ctrlshiftp,输入language,选择第一个configure Display Language&…

TypeScript第一个程序HelloWorld

博主作品:《Java项目案例》主要基于SpringBootMyBatis/MyBatis-plusMySQLVue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,…

新晋项目经理,如何快速胜任?

第一次当项目经理,往往会由于经验不足、项目管理知识的不足以及角色转换等原因,无从着手。 有时候我们会觉得一个项目经理,不像项目经理,那像什么呢?当然是像程序员。也就是说,他的职位虽然变化了&#x…

【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别

目录 一、问题描述二、概念神经网络实现手写体数字识别原理三、算法步骤3.1 数据输入3.2 特征提取3.3 模型训练3.4 测试 四、运行结果 一、问题描述 手写体数字属于光学字符识别(Optical Character Recognition,OCR)的范畴,但分类…

07 【Sass语法介绍-控制指令】

1.前言 Sass 为我们提供了很多控制指令,使得我们可以更高效的来控制样式的输出,或者在函数中进行逻辑控制。本节内容我们就来讲解什么是 Sass 控制指令?它能用来做什么?它将使你更方便的编写 Sass 。 2.什么是 Sass 控制指令 控…

松下 OPF CMOS影像传感器

一、概述 不久前,松下在其国际网站公布了关于有机光电导膜(OPF)CMOS影像传感器技术的最新研发进展,并表示该技术已趋于成熟,有望在未来一段时间内正式投入商用。此外,松下还在3月15日至16日,于…

Oracle LiveLabs DB Security (数据库安全)实验汇总

在Oracle LiveLabs中,和数据库安全相关的实验分为2个系列,共12个实验。 Oracle数据库安全架构如下图: 这些实验涉及了Oracle安全相关的特性,企业版选件,独立产品和服务。 关于Oracle安全产品的中文主页可见&#…

Marior去除边距和迭代内容矫正用于自然文档矫正

一、简要介绍 本文简要介绍了论文**“ Marior: Margin Removal and Iterative Content Rectification for Document Dewarping in the Wild ”的相关工作。照相机捕捉到的文档图像通常会出现透视和几何变形。考虑到视觉美感较差和OCR系统性能下降,对其进行纠正具有重…

JavaScript实现输入圆的半径,输出周长、体积和面积的代码

以下为输入圆的半径,输出周长、体积和面积实现结果的代码和运行截图 目录 前言 一、请输入圆的半径,输出周长、体积和面积 1.1运行流程及思想 1.2代码段 1.3 JavaScript语句代码 1.4运行截图 前言 1.若有选择,您可以在目录里进行快速查找; 2.本博…

【crontab】如何解决命令末尾自动加^M,导致不生效的问题

目录 场景: 问题: 问题原因: 解决方案: Step 1:编辑文件yolov5 ,并查看文件类型 Step 2:修改文件类型 yolov5 Step 3:yolov5中的定时任务加入到crontab中,并查看crontab 列表…

前端性能优化总结(SPA篇)

性能优化 所有开发者都无法避免的一个问题,即关于项目的性能优化。性能优化是一个经久不衰的问题,它几乎贯穿于整个项目的开发过程。做好性能优化的项目不仅能在用户体验上更胜一筹,还能让服务资源的分配更加的合理。 关于SPA(单…

互联网医院开发|线上问诊系统开发|互联网医院功能开发

互联网医院在智慧医疗版块可以算的上是“核心成员”,无论是出色的实战能力还是在管理功能模块上,都为行业带来了切实的便利,就例如平时的工作安排,省时省力,也让患者有更方便的就医条件,互联网医院系统源码…

必须掌握的重写,重载,equals,==

生活是晨起暮落,日子是柴米油盐,时光匆匆,我们终将释怀。 重写与重载的区别 重写(Override) 1.发生在父类与子类之间 2.方法名,参数列表,返回类型必须相同 3.访问修饰符的限制一定要大于被重写方法的访问修饰符,如果…

【sunny land】利用Animation编辑器实现近战敌人判定

昨晚研究了一晚Boss近战判定,也找了一些方法,但始终找不到合适的 今天终于让我找到了[泪目] 让我们先看演示 这个效果是我们的Boss挥刀时不造成伤害,当火焰冒出来时再对主角造成伤害。 这个我讲详细点吧 步骤: 首先&#xff…

矿井水行业氟超标的解决方法

高矿化度的废水是指含有高浓度溶解性矿物质的废水,通常指的是含有高浓度钠、钙、镁、铁、铝、钾等离子的废水。这些离子通常来自于废水所处的环境、工业或生产过程中使用的原材料和化学品。高矿化度的废水通常具有高盐度、高电导率、高硬度等特征,对环境…