未来已来|人工智能与数据库融合发展分论坛议程初探 了解详情
写点什么

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

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

    阅读完需:约 13 分钟

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

6 月 17 日,极客时间《企业级 Agents 开发实战营》正式上线,10 周掌握企业级 Agents 从设计、开发到部署全流程。

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


熟悉音视频技术的开发者都能意识到,抖音亿级日活的背后必然有着极为强大的技术支撑体系。在这一体系中,占据最关键地位的就是字节跳动于 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:246364
用户头像
王强 技术是文明进步的力量

发布了 793 篇内容, 共 385.8 次阅读, 收获喜欢 1727 次。

关注

评论

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

数字人民币钱包短暂露面 金融诈骗伺机而起

CECBC

数字货币 钱包 货币

合约跟单软件开发,合约跟单交易所系统开发搭建

13530558032

性能相关 磁盘I/O子系统

Linuxer

java安全编码指南之:对象构建

程序那些事

Java 安全 安全编码指南 对象构建

SpreadJS 纯前端表格控件应用案例:表格数据管理平台

葡萄城技术团队

人民版权 获2020中国产业区块链创新奖

CECBC

区块链 产业发展 版权

你也许还不懂静态方法和实例方法

架构师修行之路

week 12 学习总结

Geek_2e7dd7

自己做的 PPT 总被批「缺少干货」?试试先回答这三个问题

Tony Wu

效率工具 方法论 PPT

数字货币交易平台搭建,去中心化交易所开发方案

13530558032

Python 到底是强类型语言,还是弱类型语言?

Python猫

Java c++ Python 编程

MySQL复杂where条件分析

程序员历小冰

MySQL

Keepass+Synology 打造私人密码管理器

zj坚果

week 12 作业

Geek_2e7dd7

产品经理的架构思维

吴世亮

架构 产品经理 电商

Jenkins持续集成「编译打包、代码检查、单元测试、环境部署、软件测试​」

清菡软件测试

jenkins

深入了解 Rust 异步开发模式

lipi

rust 异步

USDT承兑商软件开发,区块链支付系统源码搭建

13530558032

Week12

一叶知秋

揭开链表的真面目

Java旅途

Java 数据结构 链表

管理时间还是挥霍时间?

钰湚—付晓岩

学习 时间管理 工作体会 工作哲学

Golang写算法

卒迹

算法 Go 语言

新时代背景下的Java语法特性

九叔(高翔龙)

Java java 14 java 14 新特性 Java 分布式

甲方日常4

句子

工作 随笔杂谈 日常

DockerHub 镜像仓库的使用

哈喽沃德先生

Docker 容器 微服务 镜像

拖延症竟然是自己给自己的一种奖励?如何干掉它?

非著名程序员

个人成长 拖延症 番茄土豆工作法

数字资产钱包开发,深圳区块链理财钱包服务商

13530558032

文件系统

Linuxer

在面试中成长

escray

学习 面试

面试是一张窄窄的船票

escray

学习 面试

oeasy教您玩转linux-010110内容回顾

o

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