ZEGO自研RTC+直播系统架构,如何支撑一场高质量直播
近年来得益于网络基础设施的进步,实时音视频(Real-Time Communication,以下简称 RTC)和直播(采用 CDN 进行内容分发)在各行业迅速落地,在疫情的催化下更是推动传统的教育、会议等场景往线上转移。
RTC 通常采用私有 UDP 协议,端到端延时低同时弱网适应能力强,不过成本高昂。直播 CDN一般基于标准的 TCP 协议,采用多级分发、时延高、抗弱网能力相对较差,但优在在成本低廉。虽然终端网络能力有了长足的进步,但是用户对直播质量的要求也越来越高,支撑一场高质量的直播并不简单。
那么,今天我们来聊一聊 ZEGO 如何优化弱网观看体验,解决内容分发异常等问题,支撑起一场高质量直播。
直播质量的拦路虎
我们先来看一下常见的直播系统架构(如下图),通常是主播通过 TCP 协议推流到 CDN,然后经过 CDN 的流媒体处理系统(比如转码,合流,多码率转换等),再经过 CDN 多级分发最后到观众端。

图1:传统直播系统架构图
显然如果主播数据源异常或者到 CDN 推流点这段链路质量异常,那么整个直播效果都将大打折扣。根据我们线上实际观察,影响这段链路质量的主要因素有:
- 主播侧的源数据异常
- 主播侧网络抖动
- 公网链路抖动
- CDN节点异常(网络抖动或负载过高)
- DNS解析不准确导致主播获取的推流点并不合适主播网络
那么,为什么会出现上述问题呢,简单总结为以下三点:
主播系统设备五花八门,Android 、iOS、Windows 等系统的各个版本齐上阵,加上各个手机厂商的定制版系统,兼容适配各类设备是令开发者非常头痛的问题,一旦有兼容性问题则通常会导致主播侧推流源数据异常甚至无法推流;
主播侧网络和公网链路大概率会抖动或间歇性异常,本地域名解析线路识别也有一定误差,再加上域名劫持等,这类问题通常是开发者或者 PaaS 厂商无法预测和掌控的,我们能做的只有规避或适应这种变化;
CDN 节点故障无法避免,同时厂商也无法保障到每一个主播的接入质量,一旦个别用户出现接入质量问题时,排查定位需要拉起多方人员:用户、开发者、CDN 技术人员,如果用了第三方音视频 PaaS 厂商,则还会需要厂商人员参与,整个流程下来效率低,用户满意度也低。
ZEGO 自研RTC+系统,保障主播推流持续高质量
ZEGO 并没有沿用传统的直播系统架构,而是采用完全自研的 RTC+ 系统。RTC+ 套系统不仅承载 RTC 流量,也能够无缝接入传统直播流量。ZEGO 优化后的系统架构如下图:

图2:ZEGO RTC+ 直播系统架构
依托这套架构,ZEGO 对上述痛点进行各个击破,下面将为您介绍 ZEGO 具体做了什么。
1、音视频算法&传输协议优化主播推流质量
主播推流到 ZEGO RTC 推流节点,节点采用完全自研的音视频引擎,自研引擎拥有业界领先的 3A 算法,具体优势有:
- 优异的回音消除算法在多讲场景下拥有比竞品更优异的双工体验;
- 结合心理学模型的噪音抑制策略,在不损失音质的情况下提高 20dB+ 信噪比;
- 自动音量调节确保在嘈杂环境下用户的音频体验。
同时 ZEGO 摒弃了传统的 TCP 协议,自研的 AVERTP 音视频协议基于私有 UDP 协议,其抗丢包能力更强;在弱网环境中面对网络抖动及丢包时通过抖动缓冲、前向纠错和丢帧补偿,极大提升通话质量,保证 80% 网络丢包下音频可正常连通,70% 网络丢包下视频可正常连通。
同时 ZEGO 流媒体节点支持按流级别进行质量监控,当 CDN 节点或者公网链路异常时,能够自动切换转推节点,无需主播介入。
2、全球智能调度优化主播第一公里接入
主播推流前 ZEGO SDK 会请求调度服务,调度服务实时解析主播地理位置和运营商信息,匹配调度覆盖策略,过滤出负载最优节点列表后返回给主播端。不止于此,针对重点主播,ZEGO 还支持为其配置个性化的调度策略,实现流量的精准调控。网络是时刻变化的,多年来 ZEGO 依托海量音视频数据分析平台 Ocean 并结合 SDK 的网络探测能力,能够实时感知区域网络变化并动态调整节点覆盖策略,保障主播最佳接入质量。
当前 ZEGO 在全球 150+ 地区部署有流媒体节点,覆盖了全球各大主流的运营商和人口密集区。与此同时 ZEGO 还同各大云厂商及主要的传统 IDC 厂商保持紧密合作,确保能够及时上线优质机房。
3、Navigator 智能解析优化转推CDN链路
为了解决多方沟通效率低下和 Local DNS 结果不可控的问题,ZEGO 引入了智能 CDN 域名解析系统 —— Nagivator,系统架构如下:

图3:Navigator 智能化解析架构图
Navigator 相比较于传统 DNS 有如下优势:
- 解析结果可自定义,支持按探测质量设置质量梯度返回,支持优先或禁用节点,确保在异常时能够快速调整;
- 解析策略修改秒级生效,无需等待 DNS 扩散;
- 杜绝了本地域名劫持、运营商线路识别异常等问题。
通过上述的各类优化,整体直播转推异常率从百分之一下降到万分之五,极大的提升了推流质量。
SDK 动态感知为观众带来流畅观看体验
观众端网络情况相较于主播端更加复杂,整体网络质量相对较差,ZEGO 主要从三个方面优化用户体验。
1、引擎动态感知&自动切换
为了适应客户端网络,ZEGO 音视频引擎实时计算拉流质量,可根据质量情况动态切换拉流帧率及码率,并在必要情况下切换拉流节点或者传输协议(支持 TCP、QUIC 及 ZEGO 私有 AVERTP 协议),无需开发者调用接口。
当切换到 ZEGO 私有 AVERTP 协议时,拉流用户可享受到媲美 RTC 的接入质量。对于长距离或者跨国场景的流量回源,ZEGO 构建了 Massive Serial Data Network(海量有序数据网络,简称 MSDN ),保障流量的可靠传输。
2、云控系统精准把控调节范围
通过云控系统,客户可根据地区调整默认拉流协议及切换策略,在为用户提供更为流畅的观看体验的同时实现精准的成本控制(云控系统能力远不止于此,限于篇幅,此处仅提及部分功能,后续将有专题与您分享 ZEGO 云控系统及其能力)。
3、SDK 极致的兼容能力和机型适配
在机型适配方面,ZEGO SDK 团队经过多年打磨,目前完美适配 15000+ 终端设备及外设,兼容 25 种平台,让用户在直播或观看直播时应用不假死不崩溃。
以上就是关于 ZEGO 即构科技如何支撑一场高质量直播的内容分享。
ZEGO 在音视频行业深耕多年,通过自研音视频引擎,结合智能调度系统、Navigator 解析系统、云控系统等业务系统实现了从主播数据采集、推流、内容分发、观众播放的全链路质量优化。后续我们将继续打磨系统细节,提升系统可靠性和服务质量。
如果您对上述内容感兴趣想要深入了解可到 ZEGO官网 体验,我们也将在后续的文章中同大家分享更多 ZEGO 后台技术及解决方案!
ZEGO自研RTC+直播系统架构,如何支撑一场高质量直播的更多相关文章
- 阿里云推出SRT+杜比全景声直播方案,低成本打造高质量直播观感体验
超过200个国家和地区共5144万人观看:浙江卫视.东方卫视55城总收视达2.39,稳居同时段市场第一:优酷直播间63%观看晚会的用户参与了互动:微博68.2亿的主话题阅读量:2019天猫双11狂欢夜 ...
- Android进阶(十一)Android系统架构讲解
如果说一个成功男人的背后会有一个默默支持的女人的话,那么一个优越稳定的平台背后必有一个成熟的系统架构所支撑着.那么,Android的系统架构是怎么样的呢?从下图我们可以从整体上有个大致的了解(图片来源 ...
- 利用ffmpeg一步一步编程实现摄像头采集编码推流直播系统
了解过ffmpeg的人都知道,利用ffmpeg命令即可实现将电脑中摄像头的画面发布出去,例如发布为UDP,RTP,RTMP等,甚至可以发布为HLS,将m3u8文件和视频ts片段保存至Web服务器,普通 ...
- 互联网公司IT系统架构进化之路
一日,与一高手在茶馆聊天.他问道:在鞋厂剑派这两年,可习的什么高深的剑法?我不由一愣,细细想来,这两年每日练习的都是简单的劈砍动作和一些简练的套路.并没有去练什么高深的剑法.不过鞋厂剑派在江湖上也算小 ...
- vivo 全球商城:优惠券系统架构设计与实践
一.业务背景 优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口.优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是单体应用时,优惠券 ...
- 直播CDN架构随想
互联网内容载体变迁历程,文字--图片/声音--视频--VR/AR----从直播1.0秀场时代(YY).2.0游戏直播(斗鱼.虎牙.熊猫)到如今全民直播3.0泛生活娱乐时代(映客.花椒),国外直播App ...
- Android之路-------浅淡Android历史、系统架构与开发特色
前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结 ...
- 从游击队到正规军:马蜂窝旅游网的IM系统架构演进之路
本文引用自马蜂窝公众号,由马蜂窝技术团队原创分享. 一.引言 今天,越来越多的用户被马蜂窝持续积累的笔记.攻略.嗡嗡等优质的分享内容所吸引,在这里激发了去旅行的热情,同时也拉动了马蜂窝交易的增长.在帮 ...
- 我是如何一步步编码完成万仓网ERP系统的(一)系统架构
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- CC视频CTO栗伟:CDN系统架构及CC视频应用实践
2017 年 11 月9日,CC视频获2.08 亿元C轮融资. EGO 北京分会会员.CC视频CTO栗伟获邀作为 EGO 线上分享第三季嘉宾,与大家交流了CDN系统架构及CC 视频的应用实践. \\ ...
随机推荐
- ajax面试题总结
转载请注明出处: 1.ajax异步和同步的区别 Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新 ...
- Gin框架快速入门
github地址: https://github.com/gin-gonic/gin 初体验 安装: $ go get -u github.com/gin-gonic/gin 简单实例: packag ...
- json解析异常显示
解决方案 1.取消FastJson的循环引用的检查:JSONObject.toJSONString(guardVoList,SerializerFeature.DisableCircularRefer ...
- 视频会议中的AEC、AGC、ANS是什么?
视频会议中的AEC.AGC.ANS是什么? 1.AGC是自动增益补偿功能(Automatic Gain Control),AGC可以自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克 ...
- Golang常用语法糖
1.名字由来 语法糖(Syntactic sugar)的概念是由英国计算机科学家彼得·兰丁提出的,用于表示编程语言中的某种类型的语法,这些语法不会影响功能,但使用起来却很方便.语法糖,也称糖语法,这些 ...
- 2022-12-15:寻找用户推荐人。写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。 对于示例数据,结果为: +------+ | name | +------+ | Wil
2022-12-15:寻找用户推荐人.写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2. 对于示例数据,结果为: ±-----+ | name | ±-----+ | Will ...
- 2022-11-29:查找重复的电子邮箱。以下数据中a@b.com是重复的,请写出sql语句。 DROP TABLE IF EXISTS person; CREATE TABLE person (
2022-11-29:查找重复的电子邮箱.以下数据中a@b.com是重复的,请写出sql语句. DROP TABLE IF EXISTS person; CREATE TABLE person ( i ...
- 2022-10-16:以下go语言代码输出什么?A:timed out;B:panic;C:没有任何输出。 package main import ( “context“ “fmt“
2022-10-16:以下go语言代码输出什么?A:timed out:B:panic:C:没有任何输出. package main import ( "context" &quo ...
- 2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角。沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和。请问最小距离累加和是多少?
2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角.沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和.请问最小距离累加和是多少? 福哥答案2021-02 ...
- golang基础面试题,不完整
启动流程 Q.go的init函数是什么时候执行的? Q.多个init函数执行顺序能保证吗? Q.go init 的执行顺序,注意是不按导入规则的(这里是编译时按文件名的顺序执行的) Q.init函数能 ...