即时通讯系统的视频通话延迟如何降低

视频通话卡顿延时?聊聊怎么让视频通话更流畅

不知道你有没有遇到过这种情况:跟远方的家人视频聊天,画面突然卡住,声音像机器人一样断断续续,或者点击接通后要等好几秒才能看到对方的脸。说实话,这种情况确实挺让人烦躁的。

我自己就深有体会。以前在国外读书的时候,每次跟父母视频都要挑网络最好的时候,不然的话,那体验真的是一言难尽。后来我开始研究这背后的技术原理,发现视频通话的流畅度其实是一门挺有意思的学问。

为什么视频通话会产生延迟?

要解决问题,首先得搞清楚问题出在哪里。视频通话听起来简单,无非就是两边互相传传画面和声音,但实际上整个过程远比我们想象的要复杂得多。

想象一下,你对着手机说一句话,这句话要经过几个步骤才能到达对方那里:首先你的声音被手机麦克风采集下来,然后经过编码压缩,通过网络传输到对方设备,对方设备接收后再解码播放出来。视频也是类似的道理,只不过数据量更大,处理起来更麻烦。

这中间每一个环节都可能产生延迟。采集要时间,编码要时间,网络传输要时间,解码要时间,渲染显示还要时间。任何一个环节拖后腿,最终的体验就会打折扣。

网络传输是最大的不确定性因素

在整个链条里,网络传输是最难控制的一环。因为数据要经过各种路由器、交换机,跨越不同的网络环境才能到达目的地。这中间的路径可能很长,也可能很短,可能很畅通,也可能拥堵不堪。

举个简单的例子,如果你在北京给上海的朋友打电话,数据可能只需要经过几个路由器就能到达。但如果你是给国外的朋友打,那数据就要跨洋过海,经过更多的网络节点,延迟自然就上去了。这就好比开车去隔壁小区和开车去另一个城市,路上花的时间肯定不一样。

除了距离,网络拥塞也是个大问题。就像早晚高峰的马路一样,当同一时间有太多数据抢着通过某个网络节点时,就会发生排队等待的情况,视频画面自然就卡住了。

编解码器的工作原理

视频通话需要把摄像头采集到的原始视频数据压缩以后再传输,不然光是一秒钟的视频可能就有好几十兆的大小,根本传不动。这个压缩和解压的过程就靠编解码器来完成。

编解码器的选择和参数设置对延迟影响很大。高效的编解码器能够用更少的比特率传输更好的画质,但代价是计算复杂度更高,需要更多的处理时间。有些编解码器追求极致压缩率,可能会引入较大的延迟,这对实时通话来说就不太友好了。

降低延迟的几大核心技术

了解了问题的根源,接下来我们来看看业界是怎么解决这些问题的。其实围绕降低视频通话延迟,已经发展出一整套成熟的技术体系。

智能路由选择

前面提到,网络传输的距离和路径对延迟影响很大。那有没有办法让数据走一条更近、更快的路呢?答案是肯定的,这就是智能路由技术。

简单来说,智能路由就是在全球各地部署很多服务器节点,当你要进行视频通话时,系统会自动评估所有可能的传输路径,然后选择一条延迟最低、稳定性最好的路线。这就好比导航软件,你从A地到B地,它会给你推荐几条路,但最终选择权还在你手里。智能路由系统则是自动帮你做出最优选择。

声网在这方面投入很大,他们在全球部署了大量的实时传输网络节点,据说覆盖了200多个国家和地区。这样一来,不管你在世界的哪个角落,都能找到相对较近的接入点,数据就不用绕太远的路了。

自适应码率技术

网络状况是动态变化的,有时候好,有时候差。如果视频通话的码率固定不变,当网络变差时就容易出现卡顿甚至断线;而当网络变好时,又没有充分利用带宽,画质没有达到最优。

自适应码率技术就是为了解决这个问题。它会实时监测当前的网络状况,然后动态调整视频的码率和分辨率。网络好的时候,用高码率高清画质;网络差的时候,自动降低码率保证流畅度。虽然画质会稍微下降一些,但至少能保证通话不断,这对于用户体验来说往往更加重要。

这项技术的难点在于响应的及时性和调整的平滑性。如果网络变差了,系统要能快速做出反应;如果调整太频繁,画质忽高忽低,用户也会很不舒服。好的自适应算法能够在这些因素之间找到一个恰当的平衡点。

抗丢包技术

网络传输过程中数据包丢失是常有的事,特别是在无线网络环境下。丢包会导致视频出现马赛克、音频出现断续,严重影响通话体验。

为了应对丢包,工程师们想出了各种办法。前向纠错(FEC)是一种常见的技术,它在发送数据的时候会额外加一些冗余信息,这样即使有一部分数据包丢失,接收端也能根据冗余信息把丢失的数据恢复出来。另外还有重传机制,当检测到丢包时可以让发送端重新发送丢失的数据包。

不过这两种方法各有各的问题。FEC会增加带宽消耗,重传会增加延迟。所以现在的抗丢包技术往往是多种方法结合使用,根据实际情况灵活选择最优策略。

编解码器优化

在编解码器层面,降低延迟的思路主要是两个:一是选择延迟特性本身就比较好的编解码器,二是针对实时通话场景对编解码器进行优化。

传统的视频编解码器比如H.264、H.265功能强大,压缩效率高,但延迟相对较大。后来出现了一些专门为实时通信设计的编解码器,比如AV1的实时模式,在保证一定压缩效率的前提下,把延迟控制得更低。

另外,编解码器的参数配置也会影响延迟。比如帧缓冲的大小、参考帧的数量等参数,配置得当的话可以有效降低端到端延迟。

实际应用中的延迟表现

说了这么多技术原理,我们来看看实际应用中的表现。根据我了解到的信息,业界领先的音视频服务商在1V1视频通话场景下,已经能把端到端延迟控制在600毫秒以内。这个数字是什么概念呢?

研究表明,人类对声音和画面不同步的感知阈值大约在100毫秒左右。如果延迟控制在100毫秒以内,绝大多数人基本感觉不到延迟的存在。当延迟增加到200到300毫秒时,仔细体会可能还是会觉得有一点点不自然,但已经不太影响日常交流了。延迟到500毫秒左右时,对话会出现明显的迟滞感,需要双方有一点耐心。超过800毫秒的话,对话就会变得比较艰难了。

所以600毫秒以内的延迟,虽然不能说完全消除了延迟感,但已经能够保证比较顺畅的通话体验了。在这个基础上,配合前面提到的各种技术优化,实际使用中的感觉会更好。

延迟范围 用户体验
0-100ms 几乎感觉不到延迟,非常流畅
100-200ms 略有延迟,但对话自然
200-400ms 明显延迟,需要一定适应
400-600ms 对话有迟滞感,影响交流
600ms以上 通话困难,体验较差

不同场景的特殊需求

视频通话其实是一个很大的范畴,不同的使用场景对延迟的要求和优化重点其实是有差异的。

一对一社交场景

像1V1视频这种场景,用户最在意的是接通速度和通话清晰度。最好是刚一点击呼叫,对方几乎同时就能接起,然后看到清晰的画面。这种场景对延迟的要求是极致的,越快越好。

为了实现快速接通,系统需要在用户发起呼叫之前就做好各种准备工作。比如预先建立连接通道,预先了解双方的网络状况,这样一旦用户点击呼叫,就能以最快的速度把视频流打通。据说声网在这方面做了很多优化,可以实现全球范围内秒级接通,最佳情况下延迟能控制在600毫秒以内。

直播连麦场景

直播连麦涉及到主播和观众之间的互动,主播可能还需要同时和多个观众连麦。这种场景下,延迟不仅影响体验,还会影响互动性。比如主播问观众一个问题,观众如果过了两三秒才听到并做出回应,互动的感觉就完全没了。

另外,当多方连麦时,还需要处理音频混音、视频合流等问题,这些都是额外的计算开销,也会增加延迟。所以直播连麦场景需要在延迟和功能丰富度之间做更多的权衡。

在线教育场景

在线教育对视频通话的要求又有不同。一方面需要清晰的画面和声音,让学生能看清老师的板书、听清老师的讲解;另一方面也经常需要师生互动,比如老师提问学生回答。

特别值得一提的是外语口语练习这种场景,因为涉及到实时的语言交流,延迟过大的话会影响对话的自然流畅,学生和老师可能需要经常说"等等"、"我还没说完"之类的话,体验非常糟糕。所以在线教育场景对延迟同样有比较高的要求。

普通用户能做什么

说了这么多技术层面的东西,最后也聊聊作为普通用户,我们能做些什么来改善视频通话的体验。

首先肯定是网络环境。尽量选择稳定、带宽充足的网络,能用WiFi就别用移动数据,能用有线连接就别用无线。当然这个有时候不是我们能完全控制的,但至少可以尽量避免在网络高峰期进行重要的视频通话。

设备性能也很重要。视频通话需要设备进行编解码运算,如果手机或者电脑性能不太好,运行起来就会比较吃力,延迟也会增加。所以如果经常需要进行视频通话,不妨考虑换一台性能好一点的设备。

软件的更新也不要忽视。音视频技术一直在进步,软件更新通常会包含性能优化和bug修复,及时更新到最新版本往往能获得更好的体验。

写在最后

视频通话已经融入我们日常生活的方方面面,从跟家人朋友保持联系,到远程办公协作,再到在线教育医疗,它的应用场景越来越广泛。延迟作为影响通话体验的关键因素,一直是技术优化的重点方向。

虽然完全消除延迟在现有技术条件下还不太现实,但通过智能路由、自适应码率、抗丢包、编解码器优化等一系列技术的综合应用,我们已经能够把延迟控制在一个相当不错的水平。对于大多数日常使用场景来说,这样的延迟已经不会造成明显的困扰了。

技术总是在不断进步的。也许在不久的将来,随着网络基础设施的改善和算法技术的进一步优化,视频通话的体验会越来越接近面对面交流。那时候,我们或许真的可以打破地理的界限,实现更真实、更流畅的远程沟通。

上一篇即时通讯 SDK 的版本回滚操作步骤
下一篇 开发即时通讯系统时如何实现消息的优先级调整

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

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

微信扫一扫关注我们

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

手机扫一扫打开网站

返回顶部