技术分享| 快对讲-5G对讲

5G的时代的到来,增强的移动宽带、高可靠低时延以及大连接的特性,对传输通信协议技术产生了非常大的影响。各大行业都进行了技术迭代、产业升级, 快对讲就是在这个风口下快速成长,让5G技术在对讲和指挥调度行业迅速落地。

快对讲的业务中很大一部分需要音视频通信技术,现在市场上通信技术非常多,有开源的有商业的;但是这些都无法满足我们的业务需求,开源的功能太单一,而商业版场景虽然很丰富,但是可定制化比较困难,有些特殊的需求不能得到很及时的反馈。于是我们自研了一套商业版的音视频传输库:RAST。

在这里插入图片描述

RAST传输库是专门为音视频打造的,音视频传输不像文件传输,对实时性要求非常高,而且真实的客户场景中情况更为复杂;同时5G相比与4G基站采用的频段更高,由于高频段在链路上损耗更多,使得单个基站的覆盖范围更小,因此也更容易出现信号覆盖空洞的问题;下面我们来详细介绍一下我们的设计如何应对这些复杂多变的情况:

一,支持Loss模式和非Loss模式

RAST采用ARQ来保证数据的到达,同时业务可以根据自己需求配置是否需要丢帧操作来保证实时性。

A, Loss模式:允许丢帧,但是要求容器格式必须有错误恢复resync机制

B, 非Loss模式:不会丢弃帧,保证按序到达

在这里插入图片描述

二,单通道多码流,多路复用

A, 单通道多码流:单路流支持大中小流模式,这样当观看者在全屏时可以选择大流,非全屏 时可以选择小流进行播放。

B, 采用多路复用技术能把多个信号组合起来在一条信道上进行传输,可有效减少每路信号创建的时间成本和维护成本。

三,支持FEC

FEC的选择对于长路径传输来说效果非常明显,以卫星通信为例,通信链路的单次往返时延即RTT约为540ms,并且噪声都为高斯白噪声,这种情况下使用ARQ效率就很低,也会造成非常大的延时,FEC就成为了最合适的选择。同时我们针对传输的数据类型不同,也会采用不同的FEC编码方式:

A, 音频采用信源FEC ,包可以多发几遍,对于音频来说一秒可以发25个包,信源FEC就发两倍50个包,同样大小多发一遍,来实现抗丢包。

B, 视频采用信道FEC ,比如当前的丢包率25%,我们可以加50%的抗丢包。那么原始有10个包,经过处理生成15个包,这15个包到达任意的10个包,都可以实现准确解码。

四,支持Pacing

Pacing是根据最大发送带宽来计算发包的时间间隔。最大发送带宽由三种策略确定:

A, 手动配置最大发送带宽max_bw;

B, 根据输入码率和overhead,计算max_bw = input_bw * (1 + overhead);

C, 配置overhead,自动估计输入带宽,max_bw = input_bw_estimate * (1+ overhead)。

几种配置有优先级,例如配置了max_bw,则忽略input_bw,overhead等配置,组合关系见下图:

在这里插入图片描述

五,支持MultiPath

多通道(Multipath)技术就是在于通过多条(物理)链路来保障网络通信的可靠性和稳定速率。

在快对讲手机端APP或嵌入式设备等手持终端上,我们主要考虑的场景还是复用Wi-Fi和Cellular双通道或者多运营商通道,同时在单边信号强度弱的情况下,通过其他通道进行补偿,并保障整体的通信质量和带宽。过去在TCP基础上也有Multipath TCP的协议,以及内核态实现。Apple等手机厂商也将MPTCP应用于Siri / APNS消息推送 / Apple Music等场景下,用来优化体验。但是这些都不太适合音视频的数据传输。

RAST的多路径设计完成参照了QUIC的多路径设计标准,如下图:

在这里插入图片描述

六,支持单端口

单端口的设计我们参考了anyRTC的sfu的单端口模式:

1)SDP offer和answer里配置的ice-ufrag字段里面内容,STUN Binding Request里面的USERNAME字段就是由上Offer和answer的ice-ufrag内容拼接而成,这是用来作为stun数据包的鉴权的,因此可以作为一个标识为我们所用。

2)发送STUN Binding Request的客户端本地udp socket,与ice建连成功后发送媒体数据的udp socket是同一个,那么对于服务端来说,客户端的ip port是同一个。

在这里插入图片描述

七,标准化

A, 传输打包格式标准化:使用RTP/RTCP协议进行传输,在路由上有更好的通过性,在以往的项目中有些私有的数据包会被一些安全网关拦截掉。

B, 传输通道标准化:支持Turn,Stun,支持P2P穿透;这样标准的Turn服务器都可以使用,降低兼容风险。

八,自定义Mtu

对于UDP来说最大单包传输大小为1500,但是很多情况下并达不到这个值。在一些特殊环境中Mtu值非常小,如果协议中采用固定的Mtu就会导致数据被路由器阻拦而无法到达,因此支持自定义Mtu或者动态探测Mtu就非常必要。

同时RAST还支持小包保护,对于一些家用无线路由器在高峰时段来说非常有效。

九,支持udp回退tcp

在一些特殊的网络下,udp的包可能会被封杀,此时如果单纯的使用udp传输就会造成业务终端不可用。RAST传输库中支持udp回退tcp,当udp不通时就会启用tcp通道,保证数据的到达。

十,支持音频优先

在音视频通话过程中,往往时音频的优先级高于视频,也就是说,视频卡顿一下往往人眼并不是很敏感,但是如果声音卡一下,人就会很难受。因此RAST增加了音频优先模式,在网络遇到情况时,优先保证音频的送到。

十一,丰富的状态统计

RAST库提供了丰富的统计信息,应用层可以根据统计数据调整音视频采集和编码,以适配适合自己的应用场景需求。

在这里插入图片描述

以上就是RAST传输库的概述,RAST传输库是经历了2G到5G几个时代的跨越,积累了非常丰富的经验,从而保证了RAST在音视频传输方面考虑的更加周全,针对某些特殊的场景均有应对方案,快对讲能够达到这么好的对讲效果,RAST的贡献值非常高。

在这里插入图片描述

posted @ 2022-07-14 15:07  anyRTC  阅读(121)  评论(0编辑  收藏  举报