WebRTC 音频抗弱网技术

实时音视频通话一直是我们通信行业必不可少的一门技术,并且近今年音视频边缘设备产品涌现出很多设备,然而,在当今网络环境中,网络传输质量确常常无法得到有效的保障,那么,在当今弱网环境下,如何提升音视频传输的通话质量就显得尤为重要,即便是音视频技术发展到今天,音视频弱网处理仍然是一个不小的技术挑战,本文重点介绍下一种针对弱网环境下的音频处理策略,我们的目标是:

在弱网环境下:丢包率30%、延迟300ms、抖动150ms情况下,仍然可以提供流畅的高音频质量通信,做到让用户通话无感。丢包率达60%的情况下,仍可正常语音沟通,听清语义。

一、弱网是如何形成的

现在你了解了音频是怎么传输的,接下来我们来看看弱网是如何形成的。其实弱网状态中有三个常见的问题:丢包(Packet Loss)、延迟(Latency)和抖动(Jitter)。我们挨个来看看它们分别是怎么产生的。

丢包

我们还是以物流小车为例。"丢包"指的是有的车无法在有效时间内到达终点,甚至可能永远也到不了终点。比如有的小车发生了车祸,或者小车司机罢工了。如果 100 辆车里有10 辆无法到达终点,那么我们就把它叫做丢包率为 10%。

是的,在网络传输中,数据包会经过很多复杂的路径,有的是在物理传输中发生了丢失,有的是在服务器、路由转发时由于拥堵或等待时间过长被抛弃。可以说,互联网传输并不是百分百可靠的,总有数据无法按时传输到目的地。

延迟和抖动

在网络这条公路上,从起点到终点我们有很多不同的路径可以选择。你可以选择走高速但也可能走了乡村小道,这样就会导致包裹到达终点所经历的时间发生变化。而这个从发送到接收经过的时间我们把它叫做延迟。

那么很显然,音频在发送的时候是按照时间顺序等间隔发送的,但是由于每个数据包经过的路径不同,从而到达目的地的延迟也不一样。这就导致有的时候很长时间都没有一个数据包到达,而有的时候几乎是同时来了好几个数据包。这就是我们常说的抖动。如果我们按照数据包到达的顺序去播放音频,那么音频播放可能是乱序的而发生杂音,也可能是没有数据可以播放,导致卡顿。

此外,还有一些其他网络特定原因,比如:

1、带宽限制:很多网络情况,由于各种条件限制,带宽并不是高,很难保障正常情况下的高质量音视频传输。

2、比如卫星通信网络,网络延迟大多都在1秒以上,这种情况下如果不做弱网处理,基本上是无法进行正常的音视频通信。

针对以上网络问题,我们做如下具体分析:

1、当网络环境只有延迟、没有抖动时,这种情况只会造成声音延迟播放而不会出现声音卡顿现象,因此在这种情况下我们只需根据抖动的计算评估,自动调整jettebuffer缓冲大小即可;

2、当网络环境仅有延时和抖动时,那么就相对比较复杂,会出现数据包乱序,导致声音卡顿。因此需自动调整jettebuffer缓冲大小,对音频数据包重新排序,使音频包顺序调整正确。

3、当网络环境仅有网络丢包时,会造成音频数据包的丢失,导致声音卡顿。

抖动包处理

二、弱网处理策略

预处理:

1、带宽估计:实时检测网络可用带宽值以及带宽变化趋势,计算出网络可用带宽情况。

2、网络监测:实时检测网络延时均值、网络丢包以及网络抖动的变化趋势。

策略:

1、jettebuffer队列根据网络检测情况自动调整大小,做到网络环境好时,既不会影响正常通话网络延迟,而网络环境差时,可以做到最大容错处理,牺牲延迟换取音频质量。

2、当丢包严重时,使用PLC、FEC等音频处理算法技术,可以恢复丢失的数据包,当然如何使用、何时使用时重中之重。

3、采用高频处理音频编码,比如opus,内部处理相对较好,对抗网络弱网环境也是有不错的体验。

综上所诉,其实可以对抗音频弱网的算法和技术还是有很多,但是难点是如何用,何时用才是最难的,如果用的不好,可能会适得其反,这个就需要多年的经验积累了

为了使用方便,我自己把所有音频处理算法都独立抽像出来小模块,比如像FEC、PLC等等这小小算法,直接就可以调用,就一两个接口使用比较方便,有需要技术沟通交流的可以跟我联系。

联系方式:

vx:unique_no_1

tel:18108010758

相关推荐
芯橦4 小时前
【瑞昱RTL8763E】音频
单片机·嵌入式硬件·mcu·物联网·音视频·visual studio code·智能手表
9527华安5 小时前
FPGA实现PCIE视频采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持
fpga开发·音视频·pcie·xdma·ov5640·hdmi
speop9 小时前
【笔记】I/O总结王道强化视频笔记
笔记·音视频
北城青11 小时前
WebRTC Connection Negotiate解决
运维·服务器·webrtc
cuijiecheng201814 小时前
音视频入门基础:FLV专题(13)——FFmpeg源码中,解析任意Type值的SCRIPTDATAVALUE类型的实现
ffmpeg·音视频
Envyᥫᩣ15 小时前
《ASP.NET Web Forms 实现视频点赞功能的完整示例》
前端·asp.net·音视频·视频点赞
天天讯通16 小时前
网页WebRTC电话和软电话哪个好用?
webrtc
弱冠少年16 小时前
WebRTC入门
webrtc
HJ_SDK1 天前
探索私有化聊天软件:即时通讯与音视频技术的结合
音视频
jndingxin1 天前
OpenCV视频I/O(8)视频采集类VideoCapture之从视频源中读取一帧图像函数read()的使用
人工智能·opencv·音视频