在上一篇文章中,我们介绍了5G远程操控的应用场景、三大技术和总体架构。从这一篇文章开始,笔者将会依次展开介绍远程操控中的三大技术并分享一些优化经验,其中本篇文章将会从实时音视频通信技术开始。
远程操控,实时音视频的指标挑战
在远程操控中,实时音视频技术主要被用于解决远程操控中被操控设备或车辆周边环境画面和声音向远处控制端的实时传输,方便远程驾驶员或操控员能够清晰地了解被控设备周遭情况,从而进行针对性操控。比如车辆前进中前方和侧后方的画面,挖掘机作业过程中的抓臂画面都需要通过实时音视频技术进行远程传输。
为保证操控的实时性和流畅性,相比声音的传输,远程操控主要对画面的传输有非常高的要求,针对画面时延、卡顿率和抗弱网能力等核心指标更是如此。以低速远程驾驶场景为例,时延需要小于200ms, 尽量能接近100ms,卡顿率最好低于千分之2,能够抵抗极端情况下与平均RTT时延相当的网络波动和20%-30%左右的丢包率。这些指标的要求往往明显高于此前的远程会议、直播、监控等应用场景,而对于实时音视频技术来讲,降低时延,与降低卡顿率、提高抗弱网能力往往是相互矛盾的,因此这是一个非常大的挑战。
远程操控与其他应用场景的指标对比
远程会议 | 直播(连麦) | 监控 | 远程操控 | |
---|---|---|---|---|
时延要求 | <300-500ms | < 300-500ms | < 1-2秒 | < 100-200ms |
卡顿率 | <1% | < 1% | — | < 0.2% |
抗丢包 | 40%-60% | 40%-60% | — | 20%-30% |
抗时延抖动 | >200ms | >200ms | — | >50ms-100ms |
按图循迹,探索链路优化重点
下图是一个典型视频传输链路的示意,主要由采集、编码、发送、传输、接收、解码、渲染等模块构成。
—采集:从相机中采集出原始的图像帧数据
—编码:对采集的原始图像帧进行编码
—发送:对编码后的视频帧进行打包发送
—传输:将打包后的数据从网络中传输
—接收:接收打包数据并恢复出视频帧
—解码:对视频帧进行解码恢复出原始图像帧数据
—渲染:对原始图像帧数据进行渲染输出到屏幕
实时音视频通信中,主要承担抵抗网络波动、降低卡顿率责任的是接收模块中的jitterbuffer,同时它也是时延的主要贡献者之一。不同项目中jitterbuffer的实现略有区别,但基本上都会有乱序排列、帧检测、帧缓存等功能。jitterbuffer主要负责正确接收视频帧并适当缓存,在确认达到可解码条件后,根据预估的帧间延迟(两帧接收时间差-两帧发送时间差)平滑后,送入到后续的解码和渲染模块。这样即使网络有一定波动,由于jitterbuffer的平滑,相邻的视频帧仍可以接近期望时间间隔渲染,从而流畅播放。通常为应对丢包、乱序和时延抖动,网络RTT和时延抖动越大,需要的jitterbuffer也越大,这时由于缓存的增大,视频时延也会相应增大。这就是三大指标之间矛盾的根本由来。
除了接收模块外,我们再看看其他模块的情况。随着芯片计算能力日益提升,编码、解码、渲染等模块的时延已经很小,基本都在10ms以内,甚至可以做到5ms左右,可优化空间不大,对三大核心指标影响较小。采集和传输模块的时延,主要受外部客观条件影响,前者取决于相机,后者取决于网络。发送模块会对数据传输的丢包、时延和抖动产生影响,从影响接收效果。因此为达到三大核心指标,需要做出针对性优化地主要是发送和接收模块。通过发送模块的优化,在保证卡顿率和抗弱网能力的基础上,尽量降低接收端jitterbuffer的大小,从而降低时延。
有的放矢,设计收发优化方案
对于发送和接收模块的联合优化,不同项目的实现不尽一致,复杂程度和效果相差也较大。下面是一个实时音视频通信架构中较为复杂的发送和接收模块实现示意。 腾讯远程操控产品中实时音视频通信也是使用了这样的构成。
—发送模块主要由封包协议、拥塞控制、发送窗口、差错编码等构成,其中为提高传输的效率和抗弱网能力,封包协议通常都是基于标准RTP协议,底层采用UDP协议。拥塞控制主要是对网络状态进行估计,为发送pacing窗口和码率提出建议。差错编码,主要是为了抵抗RTP包的丢包,提高前向纠错能力,这样部分丢包可以通过差错解码进行恢复而不依赖重传。
—接收模块中jitterbuffer涉及的乱序缓存、帧检测缓存和帧缓存外,还有拆包、差错解码、链路状态估计反馈等模块;其中链路状态估计反馈,主要是用来估计链路的丢包、时延和时延抖动等情况,用来指导jitterbuffer大小设计,并给发送端拥塞控制提供参考。
上面提到,优化的目的是降低jitterbuffer大小,而帧间时延波动是影响jitterbuffer大小的核心因素。除网络自身波动外,丢包重传是时延波动峰值的主要贡献者。因此发送和接收联合优化首先要考虑的是降低丢包重传。腾讯的5G远程实时操控产品腾讯云无界主要是在拥塞控制、差错编码上,针对5G远控场景做了更好的优化,降低了丢包重传的概率,减少了帧间时延波动。
下面先简单介绍下实时音视频中拥塞控制和差错编码的概念,在下一章将具体展开介绍针对5G的优化经验。
- 拥塞控制:目前常见的用于实时音视频的拥塞控制方法中,较好的有BBR、GCC等。
—BBR主要是基于网络的时延带宽积,分别探测网络的最大带宽和最小时延,并认为两者乘积是网络上能够承载是数据最大容量,其优点在于可以抵抗随机的网络时延和丢包波动噪声,缺点在于最小时延测量时会降低吞吐,对于突发的网络恶化,需要更长的时间才能降到实际带宽。而且BBR最初不是针对视频传输设计,在实时音视频中的应用经验比较有限。
—GCC是同时基于时延拥塞控制和丢包拥塞控制,并取两者最小值。在时延拥塞控制中,为平滑网络波动噪声对延迟梯度估计的影响,GCC中使用了卡尔曼滤波器来进行处理。GCC优点在于可以同时兼顾时延和丢包,并且有较好的实际应用经验。
- 差错编码:在网络传输中,丢包模型可以理解为是一个删除信道,数据包在传输中会被随机删除。因此可以使用适用删除信道的前向纠错编码(FEC),通过增加包传输时的冗余数量来恢复丢包。 考虑纠错性能和计算复杂度,音视频传输主要使用线性分组码,常用的有异或编码、RS码等。 由于FEC在设计时,主要是面向随机错误,在较短的编码长度(编码包数量)下, 这种方式可以抵抗一定程度的随机丢包。但对于拥塞或网络质量下降导致的突发丢包,较短编码长度仍无法抵抗,这时传统会通过增加包之间的时间间隔,并且增加编码长度,来抵抗突发丢包。
因地制宜,基于5G空口的优化增强
在5G远控场景中,网络时延中5G空口的时延和波动占比较大,而5G空口的网络模型与传统路由器有一定区别。 传统路由以拥塞丢包为主,自身不带重传; 5G空口差错丢包和拥塞丢包都有,自带一定重传;传统路由时延上升主要由拥塞导致, 5G空口由于资源调度周期,也会出现一定程度时延波动,特别是针对上行数据传输。5G空口的带宽跟信噪比和空口负载有关,会随时间变化;传统路由的带宽相对固定,主要受网络负载影响。
路由器与5G空口网络特点对比
路由器 | 5G空口 | |
---|---|---|
丢包 | 拥塞丢包 | 差错丢包 拥塞丢包 |
时延抖动 | 拥塞 | 拥塞 资源调度周期 |
带宽 | 受负载影响 | 受信号质量、负载影响 |
重传 | 不带重传 | 自身带重传 |
拥塞控制的优化
可以看出5G空口网络与传统路由存在较大区别,面对资源调度周期引起的时延抖动和信号质量带来的带宽波动时, BBR拥塞控制适用性有限。考虑到5G空口中信号质量会导致网络带宽变化较大,因此可以在GCC时延、丢包拥塞控制的基础上,增加基于空口信干噪比和网络负载估计的拥塞控制,这样对于5G空口网络变化具有更快地反应速度。同时可以修改GCC中时延梯度估计用到的卡尔曼滤波算法,更好平滑资源调度周期带来的时延梯度抖动。
差错编码的优化
基于5G空口网络特点,可以看出 5G空口由于自身带重传,丢包发生概率较少,可以使用较短的编码长度抵抗随机发生的丢包。 5G空口中突发丢包的产生往往是由于5G空口信号质量下突然下降导致,这种深衰落的周期通常跟移动性有一定关系,移动速度越快,周期越短,低速移动时在10ms左右。传统的通过简单引入更长包间隔和增加编码长度的方式无法有效应对,而且会增加发送数据量,导致丢包恶化。配合基于空口信干噪比的拥塞控制估计,可以即时预知这种突发丢包,通过降低码率,延长发送时间,而不增加编码长度,减少突发丢包概率。同时可以引入分组交织的方式,将编码进行交织,一定程度抵抗突发的丢包。
总体上,5G远控场景对音视频的时延要求是非常高的,虽然通过结合5G网络特点,在发送和接收进行了一些联合优化,可以满足一些中低速行业场景的远控需求,但是离行业理想的100ms指标还是会有一些挑战,特别是在跨区域的远控场景。未来还需要更多地引入结合网络的一些联合优化的手段,另外也可以考虑在相机采集、编码上进行更多的挖掘,以尽量提升端到端效果。