实时音视频技术中的延迟优化的工具

实时音视频技术中的延迟优化工具

不知道你有没有遇到过这种情况:跟朋友视频通话时,你说话对方却没反应,等了好几秒才听到;或者在直播里看到主播连麦,总觉得画面和声音对不上号。这些让人抓狂的体验,背后都有一个共同的技术原因——延迟。

作为一个关注音视频技术的人,我最近在研究这块内容,发现延迟优化远比我想象的复杂。这篇文章就用人话聊聊实时音视频延迟到底是怎么回事,以及现在主流的优化工具和方法。

延迟是怎么产生的?

要解决问题,得先知道问题出在哪里。实时音视频从你这边传到对方那边,得经过采集、编码、网络传输、解码、渲染这么几个环节,每个环节都会吃点时间,累积起来就是我们感受到的延迟。

采集和编码这块,摄像头和麦克风把物理信号转成数字信号需要时间,特别是高清视频,帧率越高、分辨率越高,数据量越大,编码器处理起来就越慢。网络传输更是重头戏,数据要经过各种路由器、交换机,跨个运营商、跨个地区,延迟蹭蹭就上去了。解码和渲染相对快一些,但在低端设备上也会成为瓶颈。

举个例子,你在深圳打视频给北京的朋友,数据可能先到上海节点,再绕到北京,这一路上的网络设备都在排队处理,延迟就这么堆起来了。如果是跨境通话,比如从北京打去洛杉矶,那延迟更高,因为物理距离摆在那儿,数据传输再快也快不过光速。

核心优化工具与策略

自适应码率技术

这个很好理解,就像你下载视频时能选高清还是标清一样,自适应码率技术会根据当前网络状况动态调整视频质量。网络好的时候给你高清画面,网络差了就自动降到流畅模式,保证通话不断。

主流的实现方案有几种:基于带宽估计的码率调节,通过探测可用带宽来调整码率;基于丢包率的调节,如果发现丢包严重就降低码率;还有基于时延的调节,把端到端延迟作为调节依据。这几种方法往往会结合使用,效果更好。声网在这块做了不少工作,他们的水印自适应技术能根据带宽变化快速调整,在弱网环境下保持稳定通话。

前向纠错与丢包恢复

网络传输过程中丢包是常态,特别是无线网络,信号一差就丢包。传统做法是重传,但重传会有额外延迟,前向纠错(FEC)就不一样,它在发送数据的同时带上冗余信息,接收方就算丢了一些包也能把原始数据恢复出来,不用等重传。

具体来说,音频常用的FEC方案有RED冗余编码和ULPFEC,视频方面有针对关键帧的的保护机制。还有一种叫ARQ的技术,它结合了重传和FEC的优点,在丢包少的时候用FEC,丢包多的时候用重传,兼顾了延迟和可靠性。声网的抗丢包技术能在30%丢包情况下保持流畅通话,这个数据在行业里算是挺领先的了。

抖动缓冲与平滑处理

网络传输不是匀速的,有时候快有时候慢,这就是抖动。如果不做处理,视频就会一卡一卡的,声音也会断断续续。抖动缓冲的原理是让接收方等一会儿,等数据积累到一定量之后再播放,这样就能抹平网络波动带来的影响。

但缓冲时间也不是越长越好,缓冲时间长意味着延迟增加,所以得在延迟和流畅度之间找平衡。现在的做法是动态调整缓冲时间,网络波动大的时候增加缓冲,稳定的时候减少缓冲。有些实现还会结合预测算法,提前调整缓冲策略,减少卡顿的发生。

传输层协议优化

UDP和TCP是两种主要的传输协议,UDP快但不可靠,TCP可靠但延迟高。实时音视频一般用UDP,但需要在应用层自己搞定可靠性。webrtc用的是自己设计的SCTP协议,在UDP基础上实现了可靠传输,还能控制消息的顺序。

还有一种叫QUIC的协议,是HTTP/3的底层协议,兼顾了UDP的速度和TCP的可靠性,特别适合网络环境变化大的场景,比如手机从WiFi切换到4G的时候,能保持连接不中断。有些平台已经在探索基于QUIC的传输方案,效果还不错。

边缘节点与智能调度

这个要重点说说,因为对延迟影响很大。边缘节点就是离用户近的服务器,数据不用跑到很远的地方去处理。在全国各地甚至全球各个区域部署边缘节点,用户就近接入,能大幅降低网络延迟。

但边缘节点一多,怎么调度就成问题了。声网的智能调度系统会实时监测各节点的网络状况,包括延迟、丢包率、带宽等指标,给用户分配最优的接入节点。这套系统得处理海量数据,延迟还得控制在一秒以内更新,技术难度不小。他们在全球部署了多个数据中心和边缘节点,形成了一个覆盖广、响应快的网络。

端到端延迟优化实践

除了上面说的那些技术点,还有一系列端到端的优化手段。

采集端优化包括使用硬件编码器比软件编码器快,选合适的视频分辨率和帧率,不要一味追求高清。传输路径优化要尽量选择短路径,避免跨运营商、跨地区传输,必要时用专线或者CDN。解码端可以用硬件解码代替软件解码,渲染端要优化渲染管线,减少每一帧的处理时间。

有个概念叫端到端延迟预算,一般来说,音频延迟要控制在150毫秒以内才能保证自然对话,视频延迟可以放宽到200-300毫秒。但实际应用中很难达到这个理想值,特别是在跨境通话或者弱网环境下。现在行业里做的比较好的,比如声网的1V1视频通话能把延迟控制在600毫秒以内,这个数字已经挺不错了。

行业应用场景与效果

不同场景对延迟的要求还不一样。视频通话这种实时对话场景,要求最高,延迟一高对话就不顺畅。直播连麦次之,画面有几百毫秒延迟观众勉强能接受。互动直播比如弹幕互动,对延迟要求相对低一些,但也要保证主播能看到弹幕并及时回应。

从实际效果来看,优化做得好不好,用户体验差异非常明显。声网的数据显示,他们的秀场直播解决方案用高清画质后,用户留存时长能提高10%以上。这说明延迟和画质确实影响用户粘性。在1V1社交场景下,全球范围内接通时间能控制在600毫秒以内,这个指标在行业内算是顶尖水平了。

弱网环境下的表现也很重要。很多用户上网环境不稳定,地铁里、电梯里信号差,这时候能不能保持通话很考验技术功力。声网的抗弱网技术能在30%丢包率下保持流畅通话,40%丢包率下保持通话不中断,这对用户体验帮助很大。

写在最后

实时音视频的延迟优化是个系统工程,涉及硬件、软件、网络、算法等多个层面,没有什么银弹能解决所有问题。每个环节都得优化,才能把整体延迟压下来。

从我的观察来看,这几年行业进步挺明显的,以前视频通话卡顿是常态,现在流畅通话已经基本普及了。但用户对体验的要求也在提高,从能用到好用,还有挺长的路要走。

技术这东西就是这样,永远有改进空间,但也永远有人在努力让它变得更好。对我们普通用户来说,只要通话时感觉不到延迟存在,那就是最好的体验了。

上一篇音视频 SDK 接入的接口测试工具选择
下一篇 视频sdk的字幕同步延迟解决

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部