前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日均超30亿分钟!腾讯实时音视频技术低延时的秘密

日均超30亿分钟!腾讯实时音视频技术低延时的秘密

作者头像
smiling
修改2020-04-08 14:24:52
1.1K0
修改2020-04-08 14:24:52
举报
文章被收录于专栏:TRTC团队TRTC团队

新冠肺炎疫情的突发,让全球远程办公、在线教育、在线协作、远程面试等领域需求急剧增加,这也让支撑远程通信的实时音视频技术成为焦点。由腾讯实时音视频(Tencent Real-Time Communication,TRTC)为基础支撑的腾讯内外众多产品业务如腾讯会议、企业微信群直播、腾讯课堂、VIPKID等均出现爆发式增长。 随着各地有序复工复产,TRTC 也为包括金融行业远程面审、保险远程业务、法院视频庭审、人社局远程面试、长三角教师云招聘、上海市重大产业项目云签约等重要项目发挥了重要作用。数据显示,目前TRTC 平台的客户端上行时长超过 30 亿分钟/天,每天并发在线达到千万级。 本文主要针对 TRTC 技术解读系列中低延时实现技术的解析。

腾讯实时音视频(Tencent Real-Time Communication,TRTC)将腾讯 21 年来在网络及音视频技术上的深度积累,以多人音视频通话、低延时互动直播两大场景化 PaaS 方案,通过全平台覆盖的 SDK 及云 REST API 的方式,在腾讯云上向开发者提供开放服务,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案

实时即端到端 1 秒以内延时,TRTC 实现了全球的平均端到端延时300ms,其核心的技术也是围绕着降低延时这一点来进行。在音视频系统之中,延时主要来自于以下几个部分:

  • 网络层,是指设备端到服务端的网络传输延时。设备端到服务端的网络层的传输链路,也就是常说的“最后一公里”。传输延时中有一些是客观存在的时间消耗,也有一部分可以从技术上做好优化。
  • 设备端,主要指设备端内部处理延时。从推流侧的采集、前处理、编码、打包发送,到播放侧的收包解包、解码、渲染播放,每一个环节的耗时都需要控制,播放侧是关键。
  • 服务端,即服务端内部处理延时。针对跨运营商、跨国、跨地域的调度处理以及并发高峰的负载调度,在服务上都需要做好耗时优化。

网络层

先从网络层开始,现实情况下的网络总是会存在或多或少的丢包、不稳定的延时以及有限的带宽。为了适应实际的网络,在一般的互联网音视频应用例如在线点播、在线直播场景里,通常使用的都是基于TCP 的传输协议,例如 HTTP 和RTMP。但在延时要求高的实时音视频场景,我们会选择使用 UDP 而不是 TCP 来作为传输层的协议,原因主要在于 TCP 的拥塞控制策略。

TCP的拥塞控制策略

TCP 的拥塞控制是将丢包视为网络出现拥塞的信号,下图即为TCP的拥塞控制示意。一旦出现丢包(超时或收到 3 个相同的 ACK 时),TCP 就认为网络出现拥塞,进而降低一半发包阈值,之后如果没有再出现抖动,TCP 的发包会线性增加恢复,这种策略也就是我们常说的“加法增大,乘法减小”。

当出现网络抖动时,TCP 的发包速率会受到很大影响,为了吸收网络中的流量抖动,在 TCP 协议栈中,会设置一定的缓冲区。在 TCP 基于丢包设计的拥塞控制策略下,倾向于填满缓冲区以抵抗网络抖动;当遇到链路瓶颈的缓冲区很大时,需要很长的时间才能将缓冲区的数据包发送出去,造成很大的网络延时,这种情况称之为 TCP 的“缓冲区膨胀”。

播放器的抗抖动策略

网络的抖动在所难免,比如前一次 RTT 还是 50ms,下一次 RTT 可能就是 500ms 了。客户端的播放器为了做好对抗网络抖动的处理,避免这类不均匀的抖动空口时引起播放的卡顿,播放器中会设置一个Jitter Buffer 区用于做本地缓冲,减缓网络抖动对于解码的影响。Jitter Buffer 减少了网络抖动带来的卡顿,但 Jitter Buffer 越大时,播放端的延时也随之增大了。

Jitter Buffer 就像是一个蓄水池,将来自网络的不均匀的数据包先进行一次缓冲,再均匀地交给解码器进行解码。水池的水位越高,要灌满的时间越久,同样的排空的时间也越久。

为了减少延时,在TRTC 中,我们在传输层的使用了 UDP 协议,不过 UDP不像 TCP 协议原本就有 ACK 机制来做好可靠性,需要从协议上做一些处理。

ARQ 与 FEC

ARQ 即自动重传请求,TCP 的 ACK 机制是 ARQ 的一种方式。除了 ACK 以外,有一种机制为 NACK。不同于 ACK 是用来做接收确认,NACK 是没有收到数据包的确认。例如在同样存在丢包的场景下,发送方发出 5 个数据包,接收方接收到的数据丢失了第 3 个数据包:

  • 在 ACK 机制下,接收方会回复给发送方已确认收到第 1 个和第 2 个数据包,发送方需要将第 3、4、5 个数据包重传;
  • 在 NACK 的机制下,接收方会回复给发送方第 3 个数据包没有收到,发送方需要将第 3 个数据包重传。

通过控制NACK 的响应耗时,可以将重传等待的时间缩减到 300ms 以内,保障了数据可靠性的同时,也降低了重传带来的延时。

通过 NACK 的重传保障后,已经可以抵抗一定的网络丢包,但丢包后的重传仍然不可避免,重传即意味着延时,为了减少重传次数,我们通常还会将配合 FEC 策略。 FEC 即前向错误纠正,是通过增加网络层的校验数据包,增加数据冗余,抵抗传输过程中丢包带来的影响,遇到少量丢包时,接收方无须再通知发送方重传数据,可以直接在本地通过数据校验恢复原始数据,从而减少了延时。不过 FEC 添加冗余数据包也会带来更多的网络带宽占用,因此 FEC 的这种工作方式是“以带宽换延时”。

QoS

利用好 ARQ 和 FEC 机制的基础,是需要有准确的带宽预测,也就是 QoS 中最关键的一环。TRTC 依靠腾讯线上业务多年以来的技术积累,在 QoS 上有着众多专利技术,可以实现更为快速准确的带宽预测,通过及时地调整数据码率匹配网络带宽,可以减少客户端上的网络堆积,降低数据传输的耗时。同时,通过准确的带宽预测,ARQ 和 FEC 策略能够更加有效地发挥作用,带来更好的传输效能。

设备端

除了网络层以外,TRTC 在设备端的编解码层面也做了很多处理,其中最重要的是针对视频和音频编解码器的优化。用户对于音视频的播放效果是特别敏感的,尤其是遇到音视频卡顿的情况,用户体验会很差。卡顿的直接原因是播放器解码渲染时没有数据,通常是因为数据传输的过程中存在丢包,接收方没有收到数据。

RPS

我们在视频编解码器上做了一些改进,引入 RPS 帧参考关系来降低网络丢包对视频的损伤。H.264 中,标准的帧参考关系从一个 I 帧开始到下一个 I 帧之间的一组帧组成一个 GOP ,通常是 IPPPP…… 这样的序列形式,每一个 P 帧都参考前一帧,依赖于前一帧进行解码。假设在网络传输过程中发生了丢包导致了某一个帧丢失,如果丢失的是 I 帧,那整个 GOP 都无法解码,而如果丢的是某个 P 帧,那这个 P 帧后面的画面都没法解码出现画面了。

RPS 是在 H.265 中提出的一种参考帧关系,不同于标准 GOP,RPS 在的帧参考关系上并不要求严格地依赖前一帧,而是可以参考在这一帧之前的某一帧。通过控制好帧参考关系,在遇到网络丢包时引起某一帧丢失,那么只会在丢失的这一帧无法解码,而这一帧前后的数据都不受影响,表现在用户层面就是画面觉察不到卡顿,因为一帧的时间只有几十毫秒,人眼一般觉察不到。

PLC

音频质量是通话体验中最关键的影响因素,因为人耳对于声音的敏感程度很高,轻微的声音变化都能被人轻易地觉察,而音频数据丢包的话,很容易产生跳音、杂音、噪音的问题,影响用户感受。 PLC 全称是 Packets Loss Cancellation,即丢包隐藏技术,是通话处理中必不可少的一项技术。通过修改音频编解码器,在编解码器中对于音频帧状态进行记录,记录当前帧及其前后帧的状态,当遇到丢包导致的丢帧时,通过 PLC 将丢失的数据包重建出来,减少重传。 恢复出来的数据不一定效果很好,还需要对音频数据做好平滑处理,腾讯多媒体实验室研发的 TRAE 音频处理库,是领先行业的音频处理引擎,通过 TRAE 对音频数据进行处理,可以高度还原出原始数据。

音画同步

通过网络及编解码器中优化之后,还需要做好在音视频播放上的音画同步处理,确保部分丢包不影响到整体的效果,音画同步的关键在于抖动评估,通过对网络层面的抖动进行准确评估,合理调整音视频的变速,降低网络抖动影响,同时提升用户体验。

服务端

在服务端层面,跨运营商、跨国、跨地域的链路情况十分复杂,而遇到业务并发高峰,网络的抢占,资源的消耗都带来不少的挑战。 腾讯云目前在全球已开放 25 个地理区域,运营 53 个可用区,带宽储备超 100Tbps。TRTC 使用腾讯云 CVM、CAP 、GAAP等基础 IaaS 设施,在全球机房部署了音视频服务节点,搭建 TRTC SDN,为全球 196 个国家和地区提供一致的音视频接入体验。通过全球虚拟网络、跨国专线、智能选路、客户端优化等方法,TRTC 全球端到端平均延时小于 300ms。

TRTC是一整套覆盖从客户端到服务端,从硬件设备到高并发系统的音视频全链路技术,本文主要介绍 TRTC 在降低延时上所做的一些技术处理。通过这些技术的优化,不仅让腾讯内部的腾讯会议、企业微信群直播等业务的用户体验领先同行一步,也让腾讯云上众多的金融、政务、教育等行业场景下的实时音视频需求得到良好的解决。

后续,腾讯云音视频团队将继续不断打磨技术,为数百万开发者提供完善的开发体验。

了解更多关于TRTC的信息>>

了解畅享体验包:9.9元2万分钟通用套餐包>>

了解全民特惠包:实时音视频套餐包六折起>>

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯会议
腾讯会议(Tencent Meeting)为企业打造专属的会议能力,卓越的音视频性能,丰富的会议协作能力,坚实的会议安全保障,提升协作效率,满足大中小会议全场景需求。您可以使用腾讯会议进行远程音视频会议、在线协作、会管会控、会议录制、指定邀请、布局管理、同声传译等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档