写点什么

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

作者:anyRTC开发者
  • 2022 年 7 月 14 日
  • 本文字数:2139 字

    阅读完需:约 7 分钟

技术分享| 快对讲-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 的贡献值非常高。



发布于: 刚刚阅读数: 3
用户头像

实时交互,万物互联! 2020.08.10 加入

实时交互,万物互联,全球实时互动云服务商领跑者!

评论

发布
暂无评论
技术分享| 快对讲-5G对讲_音视频_anyRTC开发者_InfoQ写作社区