随着抖音直播用户持续增加,生态日渐丰富,在经历亿万规模化增长的过程之中,体验优化是必须要面对的问题,如何建立不同阶段的优化体系?如何抓住过程中的优化重点?另外面对业务增长诉求,面对新技术发展趋势,体验优化如何体现业务价值?新技术如何落地在业务之中?LiveVideoStackCon 2022北京站邀请到火山引擎直播技术负责人周一楠,分享抖音体验优化过程的一些探索与实践。
文/周一楠
编辑/LiveVideoStack
大家好,今天我分享的主题是“规模增长背后抖音如何构建直播体验优化”。
-01-
抖音规模化过程中面临的挑战
首先给大家展示一张图,这是抖音在过往一段时间里的直播播放的并发量。这张图背后其实隐含着几个关键词。
- 首先是“增长”,抖音直播业务量级一直在持续增长,包括时长和渗透均保持增长的状态。
- 另外是“突刺”,代表着热点主播、热点赛事、热点事件等,导致直播量级经常出现较大的波动,这种波动对稳定性提出了很大的挑战。
- 第三是“场景”,从传统的秀场,到游戏,再到电商,最近一年拓展到竞技比赛、虚拟偶像、PICO VR,都在抖音直播中孵化,这些都是新场景的尝试。
- 最后对应的是“平衡”,场景越来越丰富,用户体量越来越大,除了需求的差异之外,我们也要理解并处理好不同阶段在成本和体验之间的平衡。
今天我用思考总结+具象案例的模式来做分享,抖音去年关注度最高的是世界杯直播,整体直播量级完全超出之前预估。数据上来看,单场的PCU并发量最高为3706万,UV值2.3亿,应该是目前规模最大的直播赛事。针对这样的量级变化,非常考验应急策略,尤其是稳定性,作为第一要务要保障,为此我们做了大量的工作。
- 首先,直播全链路无单点,各个环节都会具备冗余灾备的能力,比如上行网络、源站、转码系统以及节点和节点之间的网络线路。
- 第二,在分发层面单机性能优化和弹性扩缩容,最大程度的提升资源利用率和复用率。
- 第三,总体容量保障,为了满足大规模观看4K分辨率要求,从整个行业去募集分发资源,通过融合调度系统,实现容量保证。同时在用户观看直播的过程中,配合容灾降级的策略,达到体验与稳定性间的最优解。
另外具象来看,新的技术面对新的挑战。本次世界杯我们率先实现了大规模4k 50fps的超高清直播的行业首创。正常情况下,抖音默认的直播分辨率是720p或者1080p,像世界杯这样超大规模的4k直播我们也是第一次尝试。另外竞技类比赛对延时的要求非常高,整体直播的端到端延时,最低情况下可到一秒钟。同时我们也进行了画质增强,支持10bit的HDR,在色彩的饱和度、空间感都最大程度的还原比赛现场。
另外虽然4k画质清晰度足够高,但是不能一味的追求单一的直播体验指标,还要注意成本控制。期间我们使用火山引擎的“极致高清”转码技术,以保证最低的码率,最优的成本。最后这次世界杯,我们也创新的使用了VR直播,实现了180度和360度的VR 3Dof直播业务落地。以上种种优化升级,整个世界杯的过程中我们最终也输出了数十项核心专利,为后续沉淀和持续迭代奠定了基础。
-02-
抖音直播体验优化的体系构建
第二部分主要介绍下抖音直播体验优化的体系构建。我们会从业务和场景出发做直播技术升级,关注用户的核心体验。同时,我们也会结合当前技术的成熟度、可能性、条件要求,对技术应用进行判断,期望寻找发挥技术价值最大化杠杆的地方。
在技术判断之后,我们会进行线下性能、体验的验证体系建设,设置好准入准出条件,并设计数据指标来做度量参考。最后线上部分以QoE为牵引,进行线上AB实验指标做持续调优,最终验证收益和价值回收。基于以上的循环模式,持续构建直播体验优化的体系,以上是我们构建的整体方法论。
具象来看,在整个世界杯期间,用户最关注的核心体验之一是低延时。过往我们在很多场景也在做低延时优化,解决秀场中主播反馈慢,电商中介绍商品不及时,以及教育场景中老师授课的交互性差等问题,都取得了不错的用户正向反馈和业务收益。
这次竞技比赛对于延时的意义会更重要,最差的一种体验是观看比赛直播的过程中,这边还没看到进球,就已收到其他App的进球消息了。虽然有些夸张,但比赛的及时性是用户能够明显感知到的。因此低延时的技术判断和业务价值我们是确定的。在此之后,就进入到技术方案环节,我们需要了解延时到底发生在哪个环节?
从全链路角度来看,原流上行到接入节点,再通过源站到转码处理,之后分发到边缘最后在通过不同的协议,到用户最后1公里。在整个过程中,如链路图所示,每个环节都会产生延时。但其中播放器的缓存对延迟影响最大,在直播过程中,为了对抗卡顿,常规做法都会设置一定的buffer缓冲区,一般防抖buffer会设置在5~8秒,进而引入了延时产生。
链路盘点清楚,我们重点解决主要问题,并在两个技术方向来降低延时。
第一个是基于HTTP-FLV的传输协议。第二个是基于火山引擎超低延时直播技术-RTM。HTTP-FLV是最广泛使用的流式传输方案,协议本身较简单,延时目前我们最优可以到3s以内。RTM协议在某些层面和RTC有一定的共用技术,属于新型的直播传输模式,在抖音直播世界杯期间,我们也投入了使用,在RTM上可以将延时做到1秒以内。
下面介绍下具体的优化方法。我们把FLV延迟进行了分类,分为初始静态延迟和动态消费延迟。针对不同的延迟有不同的优化策略。对于初始静态延迟,可以调低Gop、转码延迟优化以及降低CDN GopCache。对于动态消费延迟出现的IO消费慢、解码消费慢和渲染消费慢问题,采用不同的优化策略。其中IO消费慢可以采用卡顿优化、倍速播放和丢帧跳片。解码消费慢可以采用性能优化、动态码率和丢帧跳片。渲染消费慢会采用倍速播放、性能优化、动态码率和丢帧跳片。
针对RTM传输协议,虽然RTC和RTM有一定的复用性,但也有一定差异性。直播场景中更加看重首帧的成功率和长时间看播的音画强同步率。
RTC应用最多的是会议模式和教育小班课,技术层面,RTC会维护一个网络长链接,无论socketio还是websocket采用哪一种方式实现,都会保证信令消息的可靠性和即时性,进而保障成功率和体验。RTM的数据和信令也是分离的,但无长链接,需要做定向技术改造,比如使用预加载策略降低首帧,还有一些用户的网络不支持UDP传输,如果UDP不通,也会影响连接的成功率,需要做端口检测。为了提升成功率,因为SDP有冗余信息存在,所以也会把SDP进行压缩,变成miniSDP进行传输,通过0rtt或者一个rtt处理来提升成功率。另外因为抖音默认采用feed流模式,所以需要最大程度的去降低首帧时间。
在整个直播过程中,需要保证实时地强音画同步,尤其是在高清晰度的情况下,音频先触达,需要减少起播倍数播放,另外在分发环节上,RTM的分发模式通过CDN的边缘节点进行分发,我们在服务端、客户端侧的组帧、解帧需要做定向优化,提升秒开的成功率和降低时间,这里不详细展开了。
最后来看一下整体业务收益。两年前,抖音的直播延时大约在7.9s。我们持续地在两个方向上进行延时优化,目前技术数据上来看,大盘均值可以降低到3秒内,RTM场景在1秒内,均投入到了常规放量状态。业务价值上来看,无论是直播的看播渗透率还是看播时长、评论,亦或电商都有显著正向收益。同时因为减小缓冲区可以减少网络浪费率,从而降低95峰值进而影响直播成本单价,我们除了用户体验的收益之外,也获得了成本上的收益。
除了低延时,我们发现在整个世界杯直播期间,用户对于画质的要求也是最高的。
首先我们先看下视频全链路的技术结构。从生产端编辑处理和视频编码,再上传到云端。在云端和转码环节上会进行视频的分析和理解,然后进行策略优化,进行极致超清的转码。相关的处理完成之后,会把处理好的数据通过边缘节点进行分发,最后再传输到消费端。消费端会对直播流进行播放控制,视频解码以及效果增强。整体看下来涉及端上行,云端编辑&转码,云端分发,最后到端上消费,涉及到的环节多而复杂,往往需要跨多领域配合以达到最优体验。
现在抖音直播的分辨率大部分是1080p和720p。世界杯期间我们期望带来4k的大升级,提供更高的清晰度。另外因为足球比赛的特性,运动激烈、纹理复杂、场景切换多,需要提供50fps加HDR模式,最大程度的还原比赛的临近感和冲击性。但这些画质升级的背后,也会带来视频数据量大、实时处理难度大等问题,我们又不希望引入额外的延时,同时使用尽可能低的码率,这些都有非常大的挑战。
我们采取了以下优化思路来解决上述问题。首先进行策略优化的选型,比如判断软件编码还是硬件编码,档位配置,并对画质进行整体评分。策略决定好之后,再进行内部编码内核的优化,以及具体前后处理优化策略,最终保证画质最优。
拆开策略优化一共有三个动作:
首先评估是用硬件编码的模式,还是软件编码的模式,在足球比赛这样特殊的场景中,综合判断软件编码的效果往往比硬件编码效果更好,也更具定制化改造和优化开放性。
其次进行前处理的预估,世界杯信号源支持HDR,我们要把HDR的效果带给所有的观众,就需要在转码侧、分发侧以及端上都具备支持4K HDR的能力,否则就会出现图像偏暗的问题。但同时我们也要考虑到一些用户因为手机性能或者网络的原因,没有办法播放HDR视频,这就需要同时具备HDR转换成SDR的能力。在转换过程中会发现传统的ToneMapping算法,不论是Reinhard、Filmic或者Hable,其本质都是固定映射曲线实现从HDR到SDR的转换,不可避免会产生一些信息损失,导致效果不好。我们设计了自适应ToneMapping,通过统计视频内容的实际光照情况动态地进行ToneMapping,从而得到更优的效果。
另外,抖音世界杯直播支持多机位、多档位、多分辨率。我们通过多轮评测,制定档位码率的甜点值是多少,目的是为了能够用最低的码率达到最优的画质体验。
前处理的环节中,重点讲一下时域ROI技术,为了兼顾视频码率和主观画质,我们采用基于LSTM(长短期记忆网络)的时域ROI技术。通过人眼显著性区域检测和编码相结合的方式,让码率在画面上的分配更加合理。
但目前市面上没有专门针对足球场景的saliency(显著性物体检测)数据集,通用的saliency数据集在世界杯这类特定场景中表现并不理想。针对这一问题,团队专门制作了足球场景的saliency数据集,通过眼动仪追踪球迷观看球赛时的关注区域得到足球比赛的专用saliency数据集,从而极大增加了模型的准确性。针对足球场景中显著性物体较多,显著性区域分散的特点,团队对检测模型进行了专门的优化,在保证检测速度的前提下,提高了模型的召回率和不同场景的鲁棒性,从而实现更优的主观质量。
编码器内核优化环节, 我们结合世界杯,梳理了过往比赛的测试序列,并根据特征选择包括球场、观众、特写等等,精简视频数量,目的是加快测试迭代,进而在控制码率、动作估计等进行定向优化。最终的效果从图中可以看出,在PSNR、Vmaf对比下,码率持续降低,同时速度在大幅度的提升,最终我们的码控偏差值也控制在1%范围之内。另外与开源项目X265对比,比X265的最快档位,速度还快。最慢档位,码率还低。
-03-
下一步的优化空间
第三部分,我们聊聊下一步的优化空间,这里更多的是一些对未来的探索和想法。
在过往的直播体验优化的过程中,我们做了例如节点优化、极致高清、超分、音量均衡、分辨率升级和HDR等等。在业务情况不断发生变化的同时,用户的网络情况、设备情况也在不断发生变化。做了这么多优化,我们到底想要达成什么样的目的呢?我们最终沉淀了什么?或者有方式能达成灵活的策略吗?
未来我们依然希望能够把音视频技术和数据驱动相结合,沉淀到策略中心中去。能够在不同的业务场景、不同的用户需求,提供针对性的优化策略,精细化打磨。另外业务每天都在变化,突发情况特别的多,也需要我们具备这样的技术手段,否则很难保证灵活的模式支持业务发展。
最后,我认为直播体验优化是一个持续的过程,随着场景的新增,新技术的产生,我们一直在优化的路上。如果把稳定性看作60分的基础分,那么如果想拿满分,就必须在直播各个环节持续的优化。需要更低的延迟,更高的画质,更低的成本,甚至需要跳出直播流本身,与业务侧进行动态配合,以保证整个直播的最优效果。
感谢大家,这是我今天的分享。
LiveVideoStackCon 2023上海讲师招募中
LiveVideoStackCon是每个人的舞台,如果你在团队、公司中独当一面,在某一领域或技术拥有多年实践,并热衷于技术交流,欢迎申请成为LiveVideoStackCon的讲师。请提交演讲内容至邮箱:speaker@livevideostack.com。