WebRTC 优化延迟的策略

在使用 WebRTC 进行多服务器对话时，原生的 WebRTC 统计信息仅提供第一个跳数（即从客户端到第一个服务器）的延迟数据。这种统计信息无法全面反映实际延迟情况。为了获得更准确的端到端延迟测量，需要考虑以下几个方面：

从第一个客户端到第一个服务器的延迟。

每个服务器之间的延迟。

从最后一个服务器到目标客户端的延迟。

这样可以更全面地了解整个通信链路的延迟情况。

测量端到端延迟要困难得多，因为它不是由 WebRTC 堆栈自动提供的。

要测量整个延迟（包括捕获和渲染端引入的延迟），可以在计算中包含 WebRTC getStats API 提供的一些附加指标，例如：

jitterBufferDelay：抖动缓冲区的延迟。

playoutDelay：播放延迟。

packetSendDelay：数据包发送延迟。

这些指标能够帮助更全面地评估从捕获到最终渲染的整个延迟链路。

有的场景中前置媒体处理部分也会带来额外延迟，比如：

美颜、滤镜：采集视频后美化画面，增加特效，需要额外的计算，增加处理时间，常用于直播场景

虚拟背景：采集画面后对画面进行虚化背景，常用于视频会议场景

合流融屏：将多个采集画面进行拼接，合流为单幅画面，也会一定程度上造成延时

AI 和 CV 处理：人脸识别、姿态识别、物体识别等计算机视觉算法会显著增加延迟。

音频相关：回声消除、噪声抑制等处理也会带来一定的音频延迟

除了上述的延迟外，可能还需要考虑执行捕获和渲染的软件也会带来延迟。

在大多数情况下，测量的是往返时间（RTT），然后将其除以二以作为单向延迟的良好估计。这个方法在实际应用中常用于估算从一个点到另一个点的延迟。

捕获延迟（Capture Delay）：

从输入设备（如摄像头或麦克风）捕获数据开始，到数据被传输到应用程序的时间。
编码延迟（Encoding Delay）：

数据被编码成压缩格式的时间。这包括视频或音频流的编码过程。
传输延迟（Transmission Delay）：

数据从发送端到接收端的传输时间。这包括网络传输时间以及中间服务器的处理时间。
抖动缓冲区延迟（Jitter Buffer Delay）：

在接收端，抖动缓冲区用于平滑网络抖动引起的延迟变化，其所引入的延迟时间。
播放延迟（Playout Delay）：

从接收端接收到数据到开始播放的时间。这包括接收和解码过程中的延迟。
解码延迟（Decoding Delay）：

数据从编码格式解码为可播放格式的时间。
渲染延迟（Rendering Delay）：

从解码到数据实际被渲染或显示的时间。这包括屏幕刷新和图像渲染的时间。
往返时间（Round-Trip Time, RTT）：

从发送端发送数据到接收端接收，并且从接收端返回到发送端的总时间。通常用于估算单向延迟的一半。

针对这些因素，提出一系列相关优化措施如下：

1. 分布式服务部署

目标：优化全球服务器布局，减少网络延迟，提高服务可用性和性能

就近接入和分发：在全球范围内部署区域服务器，减少跨国连接带来的延迟

减少服务间路由跳数

选择最佳服务器路径

实现负载均衡：合理分配用户请求，避免单点服务器压力过大

2. 网络层面优化

目标：提高网络传输质量和效率

动态监测链路质量

识别并规避低质量链路

优化接入服务

3. 应用层面优化

目标：提高应用程序处理效率，减少延迟

3.1 性能优化

减少数据拷贝

减少不必要的计算和处理时间

使用汇编或多媒体汇编指令提高数据串行并发处理能力

3.2 抖动缓冲区优化

目标：平衡网络抖动和播放流畅度

动态调整抖动缓冲区大小：根据当前网络抖动情况调整，减少网络波动引起的延迟

最小化缓冲时间：在保证流畅播放的前提下，尽量缩短抖动缓冲时间

4. 媒体处理优化

目标：提高媒体处理效率，适应不同网络环境

硬件加速：使用 GPU、FPGA 或专用硬件加速器（硬编解码）进行媒体编解码和处理，减少 CPU 负担

自适应比特率：根据网络条件动态调整视频质量（分辨率 / 帧率）和比特率

智能编码：使用更高效的编码算法（ROI 编码）或编码器，如 AV1、VP9 或 H.265，在保证质量的同时减少数据量

5. 传输优化

目标：提高数据传输效率和安全性

SRTP 加密优化：使用更高效的加密算法或优化加密实现，减少加解密引入的延迟

减少打包大小：适当减少数据包大小，降低网络传输中的延迟

6. P2P 优化

目标：减少服务器负担，提高点对点通信效率

直连路径：尽量采用 P2P（点对点）连接，避免经过服务器中转

ICE 候选优选：在 ICE 候选协商中优先选择延迟最低的路径

7. 用户体验优化

目标：提高用户满意度，减少感知延迟

延迟隐藏技术：实施各种延迟隐藏技术，如插值、预测等，改善用户体验

优化 UI/UX：设计响应迅速的用户界面，减少感知延迟

网络接入：尽量使用有线网络，相对 WIFI 和 4/5G 有更高的稳定性

8. 网络安全优化

目标：在保证安全的同时最小化性能影响

优化防火墙规则：确保安全措施不会过度影响网络性能

使用高效的加密算法：选择能够快速加解密的算法，减少安全处理带来的延迟