近年来得益于网络基础设施的进步,实时音视频(Real-Time Communication,以下简称 RTC)和直播(采用 CDN 进行内容分发)在各行业迅速落地,在疫情的催化下更是推动传统的教育、会议等场景往线上转移。
RTC 通常采用私有 UDP 协议,端到端延时低同时弱网适应能力强,不过成本高昂。直播 CDN一般基于标准的 TCP 协议,采用多级分发、时延高、抗弱网能力相对较差,但优在在成本低廉。虽然终端网络能力有了长足的进步,但是用户对直播质量的要求也越来越高,支撑一场高质量的直播并不简单。
那么,今天我们来聊一聊即构(ZEGO)如何优化弱网观看体验,解决内容分发异常等问题,支撑起一场高质量直播。
直播质量的拦路虎
我们先来看一下常见的直播系统架构(如下图),通常是主播通过 TCP 协议推流到 CDN,然后经过 CDN 的流媒体处理系统(比如转码,合流,多码率转换等),再经过 CDN 多级分发最后到观众端。
显然如果主播数据源异常或者到 CDN 推流点这段链路质量异常,那么整个直播效果都将大打折扣。根据我们线上实际观察,影响这段链路质量的主要因素有:
- 主播侧的源数据异常
- 主播侧网络抖动
- 公网链路抖动
- CDN节点异常(网络抖动或负载过高)
- DNS解析不准确导致主播获取的推流点并不合适主播网络
那么,为什么会出现上述问题呢,简单总结为以下三点:
- 主播系统设备五花八门,Android 、iOS、Windows 等系统的各个版本齐上阵,加上各个手机厂商的定制版系统,兼容适配各类设备是令开发者非常头痛的问题,一旦有兼容性问题则通常会导致主播侧推流源数据异常甚至无法推流;
- 主播侧网络和公网链路大概率会抖动或间歇性异常,本地域名解析线路识别也有一定误差,再加上域名劫持等,这类问题通常是开发者或者 PaaS 厂商无法预测和掌控的,我们能做的只有规避或适应这种变化;
- CDN 节点故障无法避免,同时厂商也无法保障到每一个主播的接入质量,一旦个别用户出现接入质量问题时,排查定位需要拉起多方人员:用户、开发者、CDN 技术人员,如果用了第三方音视频 PaaS 厂商,则还会需要厂商人员参与,整个流程下来效率低,用户满意度也低。
即构自研RTC+系统,保障主播推流持续高质量
即构并没有沿用传统的直播系统架构,而是采用完全自研的 RTC+ 系统。RTC+ 套系统不仅承载 RTC 流量,也能够无缝接入传统直播流量。即构优化后的系统架构如下图:
依托这套架构,即构对上述痛点进行各个击破,下面将为您介绍 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,系统架构如下:
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即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-technique/397/