写点什么

如何实现 70% 丢包下音视频的高可用之数据篇

  • 2019-12-19
  • 本文字数:2143 字

    阅读完需:约 7 分钟

如何实现70%丢包下音视频的高可用之数据篇

基于卓越的自研音视频引擎,即构科技实现了超低时延的多路音视频通信和优异的音频体验。通过深度优化音视频数据处理、传输策略和音视频信令服务,让音视频服务在各种环境下保持超高的可用性和优良的体验。


以下为在上行丢包 70%和下行丢包 70%网络环境下的可用性展示:


上行丢包 70%:



下行丢包 70%:



从数据可以看到,在上下行 70%的高丢包环境下,即构示例 APP 依然可保持每秒 15 帧的流畅音视频通话。

如何实现音视频云服务在弱网环境下高可用

音视频云服务,核心是对音频/视频数据的处理和传输。但在实际应用场景中,除了音视频数据,还有一些非音视频数据需要同步处理,比如设备初始化、登录通信房间、发起推/拉流消息等服务,这些非音视频数据的处理通常由信令服务来支持。


因此音视频云服务的弱网高可用需要从音视频数据信令服务两方面入手。

音视频数据

在数据处理上,需要适应网络带宽的变化,动态调整音视频码率大小,通过牺牲一定的音视频质量来保证弱网环境下音视频服务的可用性和流畅度;


在数据传输上,传输信道要足够“智能”,能够视具体网络环境保证所需的音视频数据能够顺利传达。

信令服务

音视频信令服务需要在弱网环境下保证服务的高效稳定,实现信令的精准传达。


针对弱网处理的两个方面,我们的教程将分为上下两篇,本文为上篇,介绍的是对音视频数据的处理。


音视频数据的弱网高可用,我们可以从传输协议、信道 QoS 算法以及智能 QoS 策略来实现。

传输协议的选择

互联网的数据传输协议有 TCP UDP


TCP 可靠、稳定,但是建连需要经过 3 次握手,相对繁琐、效率低且占用系统资源高。


UDP 效率高、快、轻量、占用系统资源较少,但是存在不可靠、无序等缺点。


在网络环境好的情况下,只要音视频编解码器相同,TCP 和 UDP 的传输效率是相当的;而在网络环境较差的情况下,基于 UDP 的私有协议对端到端全链条可控,包括码率自适应、丢包重传和前向纠错等信道 QoS 策略,对抗恶劣网络环境会更有保障。


考虑到上述传输协议的特性,即构科技自研音视频引擎,使用基于 UDP 的私有协议来保证音视频数据的处理和传输。

信道 QoS 算法

常见的信道 QoS 算法有码率自适应、丢包重传、前向纠错、错误隐藏等,以下为不同算法的简单介绍:

码率自适应(ABC)

服务端和推流端协作控制码率来自动适应网络环境变化的技术。在网络好的情况下,适当提高码率,提高语音视频的质量;在网络差的情况下,适当降低码率(帧率和分辨也可能会降低),保障音视频通话的可用性和流畅性。

丢包重传(ARQ)

通过重传关键数据包来纠错的信道保护算法。具体地来说,发送端给每一个数据包都植入序列号和时间戳,序列号代表被发送数据包的顺序,允许接收端通过监测顺序号码来发现是否丢包;时间戳代表语音视频数据包采集的时间点。

前向纠错(FEC)

通过增加冗余数据对丢失数据包进行恢复的信道编码算法。具体地说,由发送端对原始数据进行 FEC 编码,生成冗余奇偶校验数据包,原始数据和冗余数据包合并称作 FEC 数据块,发送端发送 FEC 数据块,接收端接收到 FEC 数据块后,通过冗余数据包和原始数据包来恢复出丢失或者出错的数据包。

错误隐藏(PLC)

应用于实时语音通话的场景。为了减少语音数据包丢失造成对语音通话质量的伤害,错误隐藏 PLC 算法通过前一个语音数据包和后一个语音数据包的相关性来“推测出”当前丢失的语音数据包,从而“隐藏”了信道传输所造成的错误。

即构推出智能 QoS 策略

上面介绍了信道保护的各种 QoS 算法,然而单纯依靠某一种算法无法解决所有问题。即构科技推出一套智能 QoS 策略,既保持媒体数据传输的实时性,又具有优良的网络抗性。以下为即构智能 QoS 策略的介绍:

混合 FEC&ARQ


FEC 和 ARQ 各有优缺点。即构的做法是把 FEC 和 ARQ 通过智能策略混合使用,即混合型 HARQ(Hybrid ARQ)。


混合型 HARQ 的智能策略要充分考虑网络情况,需要根据 RTT 和 PLR(丢包率)的数值来智能地决定使用 FEC 还是 ARQ,以及两者都使用的比例。以下为参考值:


带宽估算

无论是 ABC、FEC 还是 ARQ,都要依赖带宽估算算法来工作。ABC 根据带宽估算的结果来自动调节码率;FEC 和 ARQ 根据带宽估算的结果来分配冗余数据所占的带宽。


发送端和服务端协同对网络带宽进行检测和估算,发送端把网络带宽的统计信息上报给服务端,服务端把网络带宽的估算结果反馈给发送端。当然,也可以完全在发送端进行带宽估算。

带宽分配

码率自适应 ABC 模块估算出带宽以后,发送端把带宽分配给原始数据包、FEC 校验包和 ARQ 重传包,这里需要智能的带宽分配策略。带宽分配策略是根据网络情况,包括 RTT 和 PLR 等因素,为原始数据包和冗余数据包分配带宽。


冗余数据包的带宽分配得越多,QoS 信道保护算法的纠错能力就越强,然而原始数据包就相应分配得越少,语音视频的质量也就相对降低。


冗余数据包的带宽分配得越少,QoS 信道保护算法的纠错能力就越弱,但原始数据包的带宽分配得越多,语音视频的质量也就相对得到保障。


因此,智能的带宽分配策略是要在语音视频的质量和 QoS 信道保护算法的纠错能力之间寻找平衡点。


以下为智能的带宽分配策略示例(仅作为参考):




基于 UDP 协议自研音视频引擎卓越的性能,配以针对性调校的信道 QoS 策略,即构科技在音视频数据的处理和传输上具有优秀的网络抗性,在复杂环境下依然可实现稳定高质的低延时多路音视频通话。


2019-12-19 10:273684

评论 1 条评论

发布
用户头像
即构的音视频解决方案可以看看
2020-01-06 17:35
回复
没有更多了
发现更多内容

YashanDB数据库如何支持多样化数据类型存储

数据库砖家

AI收入提升45%,天润云领跑Agent时代|一图读懂天润云2025H1业绩

天润融通

A股再创十年新高,CloudQuery助力金融数据库安全大考!

BinTools图尔兹

YashanDB数据库如何促进高效的数据共享

数据库砖家

YashanDB数据库如何助力企业高效的数据共享

数据库砖家

YashanDB数据库入门教程:搭建与优化的实用指南

数据库砖家

七夕,画个动态星空送给Ta

Comate编码助手

七夕 AI 编程 文心快码 文心快码Zulu

KubeBlocks AI:AI时代的云原生数据库运维探索

小猿姐

KubeBlocks K8s Operator MCP

理想汽车智驾方案介绍 3|MoE+Sparse Attention 高效结构解析

地平线开发者

自动驾驶 算法工具链 地平线征程6

如何规范你的Git commit?

雄鹿 @

git command

YashanDB数据库如何助力企业数字化转型

数据库砖家

YashanDB数据库入门指南:快速搭建与配置流程

数据库砖家

YashanDB数据库设计最佳实践分享

数据库砖家

YashanDB数据库如何满足不同规模企业需求

数据库砖家

YashanDB数据库如何支持企业的多样化需求

数据库砖家

如何在线绘制用户旅程图?产研协作常用的绘图工具盘点

职场工具箱

产品 产品经理 在线白板 绘图软件 用户旅程图

YashanDB数据库生命周期管理全攻略

数据库砖家

YashanDB数据库如何支持多种数据类型的存储

数据库砖家

YashanDB数据库升级过程中的数据兼容性处理方法

数据库砖家

如何配置密码策略 - 概述和指南

运维有小邓

通过 KafkaMQ 接入Skywalking 数据最佳实践

观测云

kafka Skywalking

YashanDB数据库入门教程:轻松掌握核心功能

数据库砖家

YashanDB数据库升级流程及风险控制

数据库砖家

YashanDB数据库如何支持海量用户的高并发访问

数据库砖家

YashanDB数据库如何助力大数据时代企业数字化转型

数据库砖家

早期人类奴役AI实录:用Comate Zulu 10min做一款Chrome插件

Comate编码助手

#AI编程 AI辅助编程 文心快码 文心快码Zulu

技术分析+案例拆解:看ESA如何帮助零售企业在全球化竞争中突围

阿里云CloudImagine

云计算 大数据 边缘计算 ESA 安全加速

喜临门的第二成长曲线:以脑机接口技术叩开万亿健康产业大门

北京中暄互动广告传媒有限公司

YashanDB数据库如何支持灵活的数据查询

数据库砖家

智能体走进家居生活,COLMO AI Agent破壁前行

脑极体

AI

ManageEngine卓豪-帮助台应跟踪指标-MTBF

ServiceDesk_Plus

ManageEngine卓豪

如何实现70%丢包下音视频的高可用之数据篇_架构_即构_InfoQ精选文章