写点什么

经历过亿级 DAU 的打磨检验,抖音同款 RTC 到底有何魔力

  • 2022-12-06
    北京
  • 本文字数:3859 字

    阅读完需:约 13 分钟

经历过亿级DAU的打磨检验,抖音同款RTC到底有何魔力

作为国内知名的短视频平台,拥有亿级活跃用户的抖音已经成为现代互联网用户日常生活的一部分。来自全球各地的音视频内容深刻影响了人们的生活、工作和娱乐方式,实时音视频交互也已演变成互联网的主要交流模式。


熟悉音视频技术的开发者都能意识到,抖音亿级日活的背后必然有着极为强大的技术支撑体系。在这一体系中,占据最关键地位的就是字节跳动于 2021 年向行业公开的火山引擎 RTC。经历了过亿级 DAU 产品的持续打磨与完整检验,火山引擎 RTC 将其沉淀的关于音画质提升、架构设计、抗弱网、机型适配等技术成果打包成“抖音同款 RTC”产品及服务,赋能广大企业和开发者,同时助力平台解锁各类场景新玩法,为平台创新增长打开想象空间。如今,火山引擎 RTC 已成为业内 RTC 技术的顶流之一,围绕该引擎发展的火山社区正在吸引越来越多的开发者共同参与和建设。


在 Qcon 全球软件开发大会 2022 上海站上,火山引擎 《实时音视频技术在抖音上的深度磨砺》专场,邀请了来自火山引擎团队的四位高级工程师就 RTC 体验革新、端云协同、出海优化等主题展开分享。本专题深度挖掘了抖音背后实时音视频技术架构的能力与实践经验,获得了与会观众的热烈响应与好评,也为实时音视频技术从业者提供了宝贵的见解和启发。

RTC 与互娱应用


实时互动娱乐是 RTC 技术的主要应用场景之一。对于互娱应用的产品负责人与开发者而言,如何充分利用 RTC 技术的潜力,不断探索互娱应用的全新增长点是日常工作中面临的重要挑战。在本专题的开场,拥有 8 年视频云平台架构设计和管理经验的火山引擎 RTC 互娱产品架构师刘云龙登台,带来了主题为《聚焦增长,探索 RTC 在互娱应用的新进化》的演讲,基于抖音的实践经验为与会者解读上述主题。


在互娱从业者的一般印象里,RTC 作为底层技术与应用的业务表现是没有太大关系的,但火山引擎在实践中得出了不同的的结论。经过团队与抖音业务方的沟通,火山引擎总结出了 RTC 技术与业务指标的几大关键焦点:连麦建连成功率、建连耗时、主播画面清晰度、视频卡顿水平、连麦音质。火山引擎复用了 RTC 音视频流传输链路与弱网对抗策略实时信令,将建连成功率从 2% 优化到了 1.1% 的水平。



接下来,团队借鉴 CDN 首帧策略优化了建连耗时,做到了真正的瞬开体验。针对主播画面,火山引擎优化了人脸算法,并与手机厂商深度合作适配,解决了小主播设备条件不足时经常出现的人脸过曝过暗问题。


如今,互娱领域出现了很多新的场景和玩法,例如跨房厅战、线上 K 歌、边聊边玩等等。这些场景对手机性能、推流延迟、音质等指标要求颇高。火山引擎采用了 SFU+MCU 混合方案、GPU 带宽优化等方法优化了 CPU、GPU 和内存占用,显著降低了机型要求并提升了用户覆盖。团队还采用了三滤波结构和改进算



针对世界杯版权赛事这样的重大活动,火山引擎加强了平台数据感知、后台实时干预和分级服务实时切换能力。其中,平台实时数据感知的问题监控延迟从之前的 100 秒以上压缩到了 10 秒,确保出现问题后能够迅速响应和解决。


目前,火山引擎 RTC 已经接入了抖音小程序和小游戏平台,开发者通过抖音开放平台即可快速接入 RTC 能力,为自己的线上小游戏、小程序提供语音通话功能,并实现多平台互联互通。

数据驱动,“我离抖音还有多远?”


既然 RTC 技术对互娱应用的业务有着重要影响,如何提升 RTC 体验自然就成为企业和开发团队下一个关心的主题。用户体验 QoE 如何度量?QoS 和 QoE 如何关联?解答这些问题的关键就在于火山引擎 RTC 音视频高级架构师卢俊谈到的数据驱动。


如何准确定义 QoS 指标?这是开发者和业务方非常关注的一大挑战。火山引擎 RTC 在实践中总结的经验是,技术指标一般要对齐最小行为粒度,例如用户进房、发言、Mute 自己都要有对应的指标;QoS 指标要对齐最小阈值感受,例如音频卡顿率需要和正常语速对应,音频监控指标定在 80ms 为佳;最后,指标计算要对齐用户行为和反馈,实现透明可验证。


有了良好定义的 QoS 指标,接下来就要设法用这些指标帮助业务实现增长。这里的要点在于,并非每一项技术优化都会给业务带来正向收益,有时给成熟业务做的优化反而会有负收益。为此字节跳动搭建了 AB 实验平台来判断收益水平。经过长期实践,火山引擎 RTC 团队发现最重要的指标是可用性指标,需要尽量优化;体验类指标就需要更多探索,例如卡顿率与用户使用时长之间的关系就不一定很明显。


将各种指标与业务之间的关系做关联分析,就可以找到技术优化的最佳路径,也能更加准确地计算出技术改进带来的业务收益。


此外,团队还会收集用户对 RTC 的反馈数据,通过负反馈率来评估用户的满意度。



负反馈优化存在的痛点是,每日的线上反馈数量很多,很难全部人工分析,需要提升分析效率;有些问题的反馈量很小,但对体验的影响很大,需要专门识别。为此火山引擎 RTC 建立了负反馈异常特征库,可以有效提升分析效率并快速发现无声问题。


未来,火山引擎 RTC 会进一步总结内部对抖音的打磨经验来服务外部客户,探索更多指标优化空间。帮助客户解决用户实际面临的问题。上述特征库也会覆盖内外部客户,客户问题一旦命中特征库会迅速得到解决。


探索 RTC 体验升级新路线


端云协同在 RTC 技术优化中是常见的主题。在音视频特效大量应用于业务的背景下,互动特效算法与音视频云服务的充分融合是业务获得体验优势的重要路径。身为火山引擎智能互动特效架构总监。拥有近 8 年音视频创新实施经验的范青非常熟悉这一领域,并在本专题中带来了题为《端云协同创新优化音视频场景用户体验》的分享,讲述火山引擎互动特效算法引擎的创新点及技术积累,以及与视频云产品,特别是 RTC 融合的最佳实践。



涉及到用户体验主题,一份严谨的评测报告往往是第一步。评测需要主客观分析,以画质评测为例就需要画质的专家测评、专业小组评测、用户重测、AB 实验。这中间还需要搭建专业评测环境、引入专业工具等等。


经过严谨的评测后,开发团队可以找出影响画质的主要问题,随后开始分析最佳的优化路径。很多问题并不是简单提升参数就能解决的,例如 AI 算法的改进都要考虑低端手机的算力瓶颈。优化方案做出来要尽可能覆盖大多数用户、大多数机型,不能在低端机上有很明显的劣化。与此同时,某项方案的改进不能对其他指标产生明显影响,例如分辨率提升如果带来帧率的显著下降是不可接受的,需要有补帧之类的补救方案。此外,团队还需要考虑亮度、位深、色域等指标,各方面取得平衡来获得最佳的画质增强效果。


实践中,美颜这样的算法不仅要在技术底层下功夫,还要深度钻研受众群体的偏好。例如亚洲用户与欧美用户对美颜效果的需求就有很大区别,需要针对性制定不同的算法。这些算法在端侧都要做对应优化,并且要针对不同机型有分级部署策略。



作为云端服务平台,火山引擎提供了全套端云一体增强方案。该方案融合了常见的画质增强技术,并解决了海量机型适配难题,能够以 SDK 的形式为客户提供线上音视频体验增强能力。直播、点播、社交娱乐、游戏互动、在线教育等场景都可以利用该方案为用户提供极致体验。

火山引擎 RTC 全球化架构设计


疫情时代,全球实时互动应用迎来高速发展,各类优秀出海应用层出不穷。出海应用底层往往需要有稳定高可用的 RTC 架构做支撑,而各地参差的网络基建情况和复杂的运营商为 RTC 架构设计提出了更多挑战。本场专题最后,火山引擎 RTC 实时传输网负责人游望秋发表演讲《RTC 全球化架构助力业务出海》,带来火山引擎 RTC 在全球化架构设计方面的实践分享。


RTC 模型可以简化为信令部分和媒体部分,前者包括进房、发布和订阅消息,后者包括发布和订阅流。由此,RTC 全球化架构可以拆分为信令的全球化和媒体的全球化。



火山引擎 RTC 在全球有大量边缘节点,有多个信令中心机房组建信令全球同步网络,共同构成全球实时流媒体传输网络。边缘节点的主要目的是提供用户就近接入。调度服务收到用户请求可以分配到最近节点上,提供较低的延迟水平。与此同时,为了解决跨地域用户互动的延迟需求,云端还会做边缘聚合,减少跨节点流量浪费。这些边缘节点还构建了公网上的实时传输网,具备 QoS 保障。此外,云端还通过多电信供应商、多个边缘节点地址下发和故障节点及时收回等策略保障稳定性。


火山引擎 RTC 的信令全球化架构经过了五个阶段的演进。经过迭代,全球化架构发展为分布式房间架构,并引入了数据半同步模式提升体验,又加入了多径传输模式提升稳定性。全球化架构还统一了信令和媒体通道,并将很多能力下沉到了边缘节点。针对机房稳定性也做了很多工作,例如接入网关部署在多机房、加入 AIOps 组件等。



如今,火山引擎 RTC 的端到端网络延迟可以实现 200ms 达标率 99%,5s 进房成功率达 99.5%,体验非常出色。总体来看,引擎全球化设计的思路就是提升边缘计算能力,同时增强异地多活架构、提升稳定性。

未来展望


回顾四位嘉宾的精彩分享可以看到,火山引擎 RTC 的技术发展与迭代一直都是建立在推动业务发展这一宗旨之上的。只有获得了业务侧的认可,技术升级的价值才能得到充分体现。对于火山引擎的客户而言,这也意味着客户可以更好地感知每一次技术改进和优化所产生的业务收益。


未来,RTC 技术会向更低的延时、更好的清晰度与画质、更流畅等方向演进。除此以外,火山引擎 RTC 团队还注意到了 RTC 行业的一大痛点:使用较为复杂、指标缺乏标准。因此火山引擎 RTC 也在引领全新的 RTC 概念——基于标准协议的 RTC。火山引擎推出了 WebRTC 传输网络,使用标准的 RTC 协议适应更多 RTC 开发者。也能够让更多的 RTC 开发者参与进来,还能够实现不同厂商的 RTC 之间互通,形成“众人拾柴火焰高”的行业局面,推动 RTC 行业迎来全新的时代。

2022-12-06 16:247441
用户头像
王强 技术是文明进步的力量

发布了 889 篇内容, 共 518.8 次阅读, 收获喜欢 1790 次。

关注

评论

发布
暂无评论
发现更多内容

Java 学习笔记(三)数据类型

杜朋

Rust 遇上 C/C++(二):函数传参

Coding Fatty

c c++ rust 编程语言

时序数据库

pydata

小谈校招offer选择

dongh11

职场 职业规划 应届毕业 心态 招聘

珍藏已久的 OS 学习网站拿出来分享给大家

苹果看辽宁体育

操作系统

《中国互联网简史》系列笔记之P2P

dongh11

读书笔记

Dataway 整合 Swagger2,让 API 管理更顺畅

哈库纳

Spring Boot DataQL Dataway Hasor

ARTS|Week 1 第一次使用LeetCode

Puran

LeetCode ARTS活动

服务化构建-多维度的认识中台

图南日晟

软件工程 分层架构 架构设计

tput命令介绍

唯爱

避免争执

孙苏勇

职场 随笔杂谈

Vol.9 Web前端发展历程及前端工程化

pyfn2030

大前端

控制 Pod 内容器的启动顺序

张晓辉

Kubernetes

安装R语言编译器:

唯爱

金灿灿的季节 - Apache DolphinScheduler收获5位新Committer

代立冬

不懂送女朋友什么牌子的口红?没关系!Python 数据分析告诉你。

JackTian

Python 程序员 数据分析 python 爬虫 口红

MySQL死锁系列-常见加锁场景分析

程序员历小冰

MySQL

深入浅出Mysql索引的那些事儿

猿人谷

MySQL 性能优化 索引

超简单入门MyBatis,看了就会了~

程序员的时光

mybatis

解决版权难题,“豪横”字体自己做

zhoo299

设计 CG

认识数据产品经理(四 与互联网产品经理的区别)

马踏飞机747

大数据 互联网 产品经理 职业规划

Eureka 实例注册状态保持 STARTING 的问题排查

张晓辉

spring Spring Cloud netflix

【写作群星榜】5.22~5.28写作平台优秀作者&文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

Vol.8 云栖小镇游记

pyfn2030

阿里云 随笔 数字化转型

磁盘挂载

唯爱

在培训机构花了好几万学Java,当了程序员还常被鄙视,这是招谁惹谁了?

四猿外

Java 学习 程序员 个人成长

只用CSS实现响应式Full-Width img 2种方法

寇云

CSS css3

服务化架构-状态码设计要点

图南日晟

微服务 RESTful 架构设计

XSKY发布XMotion纳管热迁移技术,OpenStack集群迁移效率提升超10倍

XSKY星辰天合

游戏夜读 | vim,vim,vim

game1night

Vol.7 聊聊我热爱的陕西省图书馆

pyfn2030

记录 生活,随想

经历过亿级DAU的打磨检验,抖音同款RTC到底有何魔力_文化 & 方法_王强_InfoQ精选文章