写点什么

如何实现 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:273546

评论 1 条评论

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

对比 Apache Kafka 和 Apache Pulsar 创建工作队列

Apache Pulsar

kafka 分布式 中间件 Apache Pulsar 工作队列

回收与价值赋能:动力电池的“退休”之旅

脑极体

Apache Pulsar 与 Kafka 性能比较:延迟性(测试过程)

Apache Pulsar

kafka 分布式 云原生 消息中间件 Apache Pulsar 消息系统

[Pulsar] 使用Proxy进行认证和鉴权

Zike Yang

Apache Pulsar 11月日更

零拷贝原理的文章网上满天飞,但你知道如何使用零拷贝吗?

中间件兴趣圈

Netty 零拷贝 11月日更

去安定医院看失眠,有必要吗?

脑极体

2021最新Apache漏洞分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

AlmaLinux安装OpenVINO

IT蜗壳-Tango

IT蜗壳 OpenVINO 11月日更

Mysql事务的实现原理之Redo Log的分析

卢卡多多

Redo Log 11月日更

从消息到数据湖:看 Apache RocketMQ、Hudi、Kyuubi 最新进展

阿里巴巴云原生

数据湖 Meetup Apache RocketMQ Apache Hudi Apache Kyuubi

【LeetCode】K 个一组翻转链表Java题解

Albert

算法 LeetCode 11月日更

元宇宙和当今最活跃的三家元宇宙平台

devpoint

以太坊 元宇宙 11月日更

如何优雅的获取 Mac OS 系统 IP 地址?

liuzhen007

11月日更

云迹科技林小俊:商业服务机器人如何破局“低价+同质化”?

朋湖网

.NET6新东西--隐式命名空间引用

喵叔

11月日更

助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?

王吉伟频道

华为 RPA WeAutomate 政企 超自动化

NodeJs深入浅出之旅:文件系统

空城机

大前端 Node 11月日更

OceanBase 监控工具 OBAgent

OceanBase 数据库

数据库 开源 学习方法 分布式 oceanbase

ARP欺骗与防范

喀拉峻

网络安全 安全 信息安全

Android C++系列:Linux文件IO操作(一)

轻口味

c++ android jni 11月日更

Kafka 已落伍,转角遇见 Pulsar!

Apache Pulsar

kafka 架构 分布式 Apache Pulsar 消息系统

一个基于PoS共识算法的区块链实例解析(升级版)

Regan Yue

区块链 共识算法 Go 语言 11月日更

Apache Pulsar 与 Kafka 性能比较:延迟性(测试结果)

Apache Pulsar

kafka 云原生 Apache Pulsar 消息 延迟性

javaScript基础篇之数组是怎样锻炼你的逻辑能力

你好bk

JavaScript 大前端 数组 数组合并

模块三-架构详细文档

小麦🌾

架构实战营

选择 Pulsar 而不是 Kafka 的 7 大理由

Apache Pulsar

kafka 架构 云原生 中间件 Apache Pulsar

大数据训练营一期1017作业

朱磊

飞桨中国行——企业服务专场

百度大脑

人工智能

当AI能够在15分钟内部署,世界距离大变革不远了

百度大脑

人工智能

Go语言,语法糖规则,可别掉入陷阱

微客鸟窝

Go 语言 11月日更

开源数据库OceanBase源码解读(九):tableAPI和OB多模型

OceanBase 数据库

数据库 开源 oceanbase

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