摘要
延时高是实时互动技术中常见的问题之一,解决延时高问题须要综合思考网络、设施、编解码算法等多个因素。解决方案包含优化设施端延时、优化网络传输延时和应用 UDP 进行音视频传输等。在抉择音视频传输协定时,须要综合思考理论需要和网络条件,抉择最适宜的协定。
本文介绍了延时高的起因和解决方案,心愿对音视频开发者可能有所帮忙。
前言
对于音视频开发者来说,把握排查问题的技术技巧办法是十分必要的,排查问题的技术办法也可能帮忙开发者更好地理解音视频技术的原理和工作机制,从而更加深刻地了解音视频开发中遇到的各种问题。
即构基于多年实时互动畛域技术的积淀和客户服务保障,咱们将推出《音视频技术 FAQ》系列文章,将音视频技术畛域的常见问题和教训分享进去,同时会针对具体问题附上业务通识和罕用解决方案以及案例教训,心愿本系列能成为你手边的音视频通识册子,帮忙到开发者们疾速定位问题并找到适合的解决方案。
本系列将不定期更新,目前已整顿了以下常见问题:
- 视频卡顿
- 延时高
- 音画不同步
- 视频花屏、绿屏
- 视频黑屏
- 视频放大或黑边
- 首开慢
- 音视频流控
- 视频含糊
- 无奈关上摄像头
- 音频回声
- 音量太小
- 音频噪声
- 无声
- 高低麦音量变动
本文是 《音视频技术 FAQ》系列 的第二篇文章。在这篇文章中,咱们将具体探讨如何解决和排查 “延时高” 的问题,这是实时互动技术中最常见的问题之一。
咱们将首先介绍什么是“延时高”,而后列举可能导致问题的起因,最初提供一些解决方案和倡议,同时也会介绍一些第三方音视频 SDK 例 即构实时音视频 RTC,咱们置信这些信息对于那些正在寻找解决办法的开发者来说将十分有用。
一、延时高的定义
视频通话和直播是两种不同的利用场景,对于时延的容忍度也存在显著差别,次要起因在于它们的利用场景和用户冀望不同。视频通话谋求实时交互的流畅性,而直播更重视内容的连续性和宽泛散发。
- 视频通话(实时通信):视频通话谋求实时交互的流畅性,最大可容忍时延:通常认为,150 毫秒至 300 毫秒内的提早是能够承受的,因为在这个范畴内,人类通常不会显著感触到通话的提早。在商务会议、近程医疗或远程教育等场景中,高提早可能会重大影响成果和用户体验。
- 直播:最大可容忍时延:直播的提早要求会依据具体的利用场景和需要而有所不同。观众在观看直播时,更加关注内容的连续性和清晰度,一般来说,提早在 3 秒至 30 秒之间都能够被认为是可承受的。相较于实时通信,直播对时延的容忍度更高。但这并不是固定的,某些对实时性要求更高的场景可能须要更低的提早。例秀场直播、电子竞技直播等对实时性要求更高的场景。
二、延时高的问题体现
延时高指的是在实时互动中,因为网络传输、设施性能等因素,导致音视频数据在传输过程中的提早过高,从而影响到用户的观看和体验。在音视频开发中,延时高个别指音频和视频的延时。
具体场景的影响:
- 通信过程中呈现显著的滞后,如音频或视频的播放与理论产生的工夫不同步。
- 在游戏中,玩家的操作与游戏反馈之间存在显著的距离。
- 在直播中,主播与观众的互动呈现显著的时间差。
三、延时高的产生和起因
音视频传输全流程:音视频采集 - 编码解决 - 网络传输 - 服务器解决 - 解码解决 - 音视频播放。
音视频传输流程能够被划分为以下三个次要模块,这些模块都有可能产生延时:
1. 设施端上的延时:包含采集延时、解决延时、编码延时、播放延时。
- 采集延时:音视频源数据从硬件设施(如麦克风、摄像头)被采集并转换为数字信号的过程中产生的延时。
- 解决延时:音视频数据在进行各种解决(如降噪、增益管制、回声打消等)的过程中产生的延时。
- 编解码延时:音视频数据在进行编码(转换为能够传输的格局)和解码(转换为能够播放的格局)的过程中产生的延时。
- 播放延时:音视频数据在最初播放的过程中产生的延时,包含视频渲染延时和音频播放延时。
2. 网络传输延时:音视频数据从发送端通过网络传输到接收端的过程中产生的延时,包含以下几个局部:
- 客户端到服务器的延时:音视频数据从客户端发送到服务器的延时,取决于网络情况、带宽、物理间隔等。
- 服务器外部解决延时:服务器接管、解决、转发数据的过程中产生的延时。
- 服务器到客户端的延时:服务器将数据发送到客户端的延时,同样取决于网络情况、带宽、物理间隔等。
3. 服务器间的延时:在多服务器或者边缘计算的环境下,音视频数据在服务器之间传输的过程中也会产生延时。
五、延时高的解决方案
在音视频传输全流程中,解决延时高问题是一个综合性的工作,须要从各个环节进行优化和改良。上面我将给出一些倡议来解决延时高的问题。
解决音视频传输全流程中的延时高问题,须要从设施端、网络传输、技术栈配置等多个方面进行优化。对于实时性要求较高的音视频传输场景,倡议应用 UDP 协定进行传输,并在设计和抉择技术栈时,思考到预期的延时和理论体现之间的匹配。解决步骤如下:
1. 排查是否是网络问题
2. 优化设施端上的延时
3. 优化网络传输延时
4. 核实技术栈预期延时
5. 应用 UDP 进行音视频传输
上面咱们将逐个具体阐明每个步骤,并提供相干示例以帮忙读者更好地了解和利用这些步骤。咱们还将深入探讨这些步骤的理论利用场景,以帮忙开发者更好地了解如何将这些步骤利用于理论问题中。
六、排查是否是网络问题
在解决音视频延时问题时,第一步是确定问题是否源于网络。网络品质、物理间隔、以及网络拥塞都能够造成显著的延时。能够应用 Ping、Traceroute、iPerf、Wireshark 等各种网络测试工具来测试网络延时和丢包率,以确定是否存在网络问题。
网络起因是导致延时高的次要起因之一,解决方案包含以下几个方面:
- 网络品质:在网络条件不好的状况下,能够采纳一些技术来改善网络品质,如应用 QoS(Quality of Service)、加强网络连接的稳定性等。
- 物理间隔:尽可能抉择离用户近的服务器,缩小物理间隔带来的延时,加强网络连接的稳定性。
- 网络拥塞 :在网络拥塞的状况下,能够采纳拥塞控制算法,如 TCP 中的拥塞管制,或者应用 CDN 等技术来扩散网络流量。
同时,监控网络带宽应用状况,确保带宽短缺,防止网络拥挤导致延时减少。
七、核实技术栈预期延时
如果咱们确定网络状况良好,下一步须要验证你在理论应用的音视频传输过程中的延时,与你应用的技术(例如特定的音视频编解码计划、网络传输协定、服务器配置等)在实践上预期的延时是否匹配。
在验证音视频传输延时与技术预期是否匹配时,有几个步骤能够参考:
- 获取技术栈预期延时:通过浏览相干的技术文档、白皮书或者钻研报告,获取你正在应用的编解码计划、网络传输协定等技术的预期延时。这通常会有一个范畴,而非准确的数值,因为理论延时会受到很多因素(比方网络情况、设施性能等)的影响。
- 测量理论延时:应用业余的音视频剖析工具,例如 Wireshark, FFmpeg, OBS 等来获取理论音视频传输的延时。这些工具能够提供音视频流的详细信息,如数据包的工夫戳、发送和接管工夫等,从而能够用于计算音视频传输的理论延时。
- 比拟和剖析:将理论测量的延时与技术预期的延时进行比拟。如果理论延时显著高于预期延时,那么可能存在问题。剖析可能的起因,可能是网络状况不佳,导致了数据包的失落或者提早;也可能是编解码设置不当,比方编码级别太高,超出了设施的解决能力;又或者是服务器配置问题,比方服务器的网络带宽有余,不能满足音视频数据的传输需要。
- 调整和优化:依据剖析的后果,对可能的问题进行调整和优化。如果是网络问题,能够思考优化网络环境,或者应用更弱小的网络设备;如果是编解码问题,能够调整编解码设置,升高编码级别,或者换用更高效的编解码计划;如果是服务器问题,能够减少服务器的网络带宽,或者优化服务器的配置。
以上步骤 1 和步骤 2 比较简单,只需相干的技术文档和应用测量工具即可,在此不赘述。步骤 3 和步骤 4 是本环节的外围要点,咱们将开展陈说。
八、预期延时的比照和剖析
让咱们以一个具体的例子来解释这个过程。假如你在实现一个实时音视频通信零碎,你抉择了应用 H.264 视频编码和 Opus 音频编码,以及 RTP/UDP 网络传输协定。
在你浏览这些技术的相干文档和材料时,你可能会发现一些对于它们在不同网络和硬件条件下的预期延时的数据。例如,H.264 编码可能有 50 毫秒的编解码延时,Opus 编码可能有 20 毫秒的编解码延时,RTP/UDP 网络传输可能有 50 毫秒的网络延时。那么,你能够预期,在现实的网络和硬件条件下,你的音视频通信零碎的总延时应该在 100 毫秒左右。
而后,你能够应用一些测试工具和办法,例如以上提到的 Ping、iPerf、Wireshark 等,来测量你的零碎在理论运行中的延时。如果你的理论延时与预期的 100 毫秒延时相差不大,那么能够认为你的音视频通信零碎的性能与应用的技术栈的预期性能统一。反之,如果你的理论延时远大于预期的 100 毫秒,那么你可能须要进一步剖析和优化你的零碎,例如,查看你的网络环境、优化你的编解码设置、调整你的网络传输参数等,以升高延时。
九、延时的调整和优化
音视频传输的预期延时,一般来说,取决于所选的技术栈,包含编解码器、传输协定、网络架构等。不同的技术栈对延时的影响水平不同,因而在解决延时问题时,理解并核实所应用的技术栈的预期延时是十分重要的。
- 编解码器:音视频编解码器的性能会间接影响到编解码延时。例如,一些简单的编解码器,如 AV1,尽管能够提供高质量的视频,但其编解码过程可能会引入更大的延时。相同,一些更为简略的编解码器,如 H.264 可能会有更低的编解码延时。因而,核实编解码器的预期延时,有助于了解以后的延时情况是否合乎预期。
- 传输协定:如上文所述,TCP 和 UDP 是两种罕用的网络传输协定,它们对延时的影响水平也不同。TCP 提供了牢靠的数据传输,但可能会引入较大的延时,因为它须要确保所有数据包的按序达到和谬误检测。而 UDP 则不保障数据包的按序达到或牢靠传输,因而通常有更低的延时。如果您正在应用的技术栈包含 TCP,那么可能须要承受比 UDP 更高的预期延时。
- 网络架构:音视频传输的网络架构,如点对点传输、云服务器直达等,也会对延时有影响。点对点传输个别能够提供较低的延时,但可能受到各种网络条件的影响。而通过云服务器直达的数据,尽管能够提供更稳固的传输,但可能会减少延时。核实这部分的预期延时,能够帮忙您了解是否须要调整网络架构来优化延时。
十、优化设施端上的延时
设施端的延时在音视频传输的全流程中,次要产生在音视频传输的开始(采集、编码)和完结阶段(解码、播放)。设施端的延时通常受设施性能、编解码效率、播放器性能等因素影响。
设施起因也是导致延时高的一个重要起因,针对设施上的延时,能够优化硬件和软件性能。包含以下几个方面:
- 采集设施性能:优化硬件设施或者采纳更高性能的设施来缩小采集延时。
- 编解码性能:采纳更高效的编解码算法,或者应用硬件加速来缩小编解码延时。
- 解决性能:优化解决算法,如应用更高效的降噪算法,优化增益控制算法等,以减小解决延时。或者应用更好的硬件设施来缩小解决延时。
- 播放设施性能:采纳更高性能的设施,或者优化播放算法和软件来缩小播放延时。
总的来说,设施端延时问题是影响音视频传输成果的重要因素,须要进行粗疏的排查和优化。通过优化硬件设施、编解码器、解决算法和播放器,能够无效地升高设施端延时,进步音视频传输的成果。
十一、优化网络传输延时
服务器解决延时:在服务器端,音视频数据的接管、缓冲、解决、转发等过程都可能产生延时。服务器的缓冲策略、转发策略等也会影响服务器解决音视频数据的速度,从而影响延时。
服务器间的延时有以下几个方面:客户端到服务器的延时、服务器外部解决延时、服务器到客户端的延时、服务器间的延时。
优化方法如下:
- 服务器性能:服务器间的延时问题,可通过进步服务器的硬件性能,或者优化服务器的软件和算法来升高解决延时。
- 服务器策略:服务器外部解决的延时问题,可通过优化服务器的策略,包含缓冲策略、负载平衡策略、转发策略等,以进步解决和传输效率,升高延时。
- 优化服务器的物理地位:客户端到服务器或服务器到客户端的的延时问题,应用边缘计算将计算工作散布到离用户更近的边缘服务器上,或者应用内容散发网络(CDN)等技术,将数据尽可能地靠近用户散发,以减小服务器之间的物理间隔,缩小数据在网络中的传输间隔,从而减小延时。
在音视频传输中,服务器延时能够通过优化网络门路、服务器性能、应用 CDN 和 UDP 协定、利用边缘计算、服务器负载平衡、采纳更高效的编解码技术以及进步服务器并发解决能力等多种策略进行无效治理和升高。
在以上策略中,很难指定一个繁多的最要害策略,因为每个策略都在特定的场景和问题上施展着重要的作用。抉择最要害的策略取决于理论状况和需要。然而,应用 UDP 进行音视频传输被认为是在音视频传输中最无效的策略之一。
十二、应用 UDP 进行音视频传输
UDP(User Datagram Protocol): UDP 是一种无连贯的协定,在发送数据时,不须要建设连贯,能够间接发送。这种形式在解决实时数据传输,如音视频数据时,往往更加高效。
音视频传输场景通常对实时性和低提早有严格要求,而 UDP(用户数据报协定)在满足这些要求上具备显著劣势,特地在低提早方面体现优异。UDP 具备以下劣势:
- 实时性:在音视频传输中,实时性是十分重要的,特地是在实时通信场景下,如视频会议、实时直播、在线游戏等。UDP 作为无连贯的传输协定,能够间接发送数据包,而无需在传输前进行握手和连贯建设,这样能够缩小传输的时延,保障音视频数据的及时达到,从而实现更好的实时性。
- 低延时:音视频传输对延时的要求十分高,尤其是在交互性强的利用中。TCP 作为面向连贯的传输协定,在数据传输前须要建设连贯、进行数据确认和重传等机制,这些额定的操作会导致传输延时减少。而 UDP 不须要这些额定操作,可能更快地传输数据,从而升高延时,确保音视频数据的及时传输。
- 带宽传输 / 效率:UDP 头部绝对较小,没有 TCP 简单的连贯治理和拥塞管制机制,这使得 UDP 在传输效率上更高。在音视频传输中,通常须要高效地传输大量的数据,UDP 的传输效率能够更好地满足这一需要。
- 灵活性:UDP 协定绝对简略,没有 TCP 简单的连贯管理机制,使得开发者能够更自在地管制音视频数据的传输过程,依据理论需要进行优化和定制。
- 抗丢包性:在实时通信中,偶然失落少数几个数据包对用户体验的影响通常是能够容忍的。UDP 是不牢靠的传输协定,它没有数据重传机制。一旦数据包失落,UDP 不会从新发送,而是间接抛弃。因为在实时通信中,适度的重传可能导致更大的延时,而且在间断的音视频流中,失落少数几个数据包不会对整体体验造成太大影响。
尽管 UDP 在实时性和低延时方面具备劣势,但也有一些毛病须要留神。UDP 是不牢靠的传输协定,会导致数据包失落和程序错乱。
因而,在应用 UDP 进行音视频传输时,须要开发者本人实现一些额定的机制,如前向纠错、重传策略、丢包复原等,来保障传输的可靠性和数据完整性。
另外,UDP 传输对网络的稳定性要求较高,如果网络环境较差或者存在重大的丢包问题,可能会影响音视频传输的品质。
因而,在抉择 UDP 作为音视频传输协定时,须要综合思考理论需要和网络条件,做出适合的决策。
在抉择音视频传输协定时,须要综合思考理论需要和网络条件。如果实时性和低延时是首要思考因素,而数据传输的可靠性能够通过应用层的伎俩解决,那么应用 UDP 是一个较好的抉择。
但如果对数据的完整性和可靠性要求较高,而能够容忍略微减少的延时,那么 TCP 也是一个可行的抉择。最终的决策应该依据具体场景和需要来做出。
音视频传输的延时问题是一个简单的问题,须要依据具体情况抉择适合的优化策略。音视频厂商针对延时高都有一套成熟的解决方案,若应用第三方音视频 SDK 服务,可间接应用他们的优化服务。以即构为例,他们的延时高解决方案是基于对音视频解决流程的深刻优化,以及对网络传输协定和服务器资源的无效治理。
十三、第三方音视频 SDK —“延时高”解决方案
应用第三方音视频 SDK 能够大大简化开发流程,升高开发难度。并且这些 SDK 通常都通过了大规模的理论环境测试,可能提供更为牢靠的性能。即构 SDK 是音视频行业的出名产品,能够为开发者提供实时音视频、实时音讯、互动白板等服务,其外部蕴含了优化的音视频编解码技术、网络传输协定、QoS 品质管制等模块。
即构科技官网)(https://www.zego.im/)
当你遇到音视频传输延时高的问题时,能够从以下几个角度应用 即构 SDK来解决:
- 利用即构 SDK 的 QoS 模块:即构 SDK 内置了 QoS(Quality of Service)模块,能够依据网络情况动静调整传输参数,包含码率、帧率、分辨率等,以保障音视频传输的流畅性和低延时。
- 应用即构 SDK 的网络传输优化性能:即构 SDK 采纳了优化的 UDP 协定进行音视频传输,包含丢包复原、网络拥塞管制等性能,能够在保障传输品质的同时,升高音视频传输的延时。
- 优化编解码过程:即构 SDK 内置了优化的音视频编解码算法,能够在保障音视频品质的同时,尽可能地减小编解码过程中的延时。
- 应用即构的服务器资源:即构提供了寰球多节点的服务器资源,能够保障音视频数据在服务器间的疾速传输,从而升高服务器间的延时。
以上的所有优化措施,都能够通过 即构实时音视频 RTC(https://www.zego.im/product/realtime-video)
的接口进行管制和配置,你能够依据你的利用场景和需要,灵便地抉择应用哪些性能和策略。
通过上述的各种优化措施,即构等音视频 SDK 可能在大部分状况下实现低提早的音视频传输。当然,如果在应用过程中遇到了非凡的问题,他们通常也会提供业余的技术支持来帮忙解决。总的来说,通过应用 即构 SDK(https://www.zego.im),你能够更专一于你的业务逻辑,而将音视频传输的优化交给业余的 SDK 来实现。
上述提供了音视频厂商和一般性的解决方案,具体实施时可能须要联合具体情况进行调整。针对以上步骤,上面咱们来逐个阐明。
结语
本文探讨了音视频传输中的高提早问题,并提供了解决方案。为了优化设施端和网络传输提早,倡议改良硬件设施、编码解码器、解决算法和播放器,并思考优化服务器解决和物理地位策略。在音视频传输中,应用 UDP 协定能够无效地升高服务器提早,但须要留神其不可靠性。因而,在抉择音视频传输协定时,须要综合思考理论需要和网络条件。