直播延迟从哪里来?RTMP、HLS、LL-HLS、WebRTC 低延迟方案全解析

从采集、编码、推流、转码、分发到播放,逐段拆解直播延迟的来源,并对比 RTMP、HLS、LL-HLS、WebRTC、SRT 等协议的典型延迟与适用场景,给出降低延迟的实操清单。

夜晚城市道路上的车流光轨,象征高速传输的数据流
封面图片:Rich Lock richlock · CC0

TL;DR 要点速览

  • 直播延迟是采集、编码、推流、转码、CDN 分发、播放缓冲各环节延迟的叠加,其中“切片+播放缓冲”往往占大头。
  • 传统 HLS 一般在十秒级,LL-HLS 可做到数秒,WebRTC 可做到亚秒级,但成本与并发扩展难度依次上升。
  • 选协议先看业务:大规模单向观看可用 HLS/LL-HLS,连麦、互动答题、竞拍等强实时场景才需要 WebRTC。
  • 降延迟的通用手段:缩短 GOP 和分片时长、减少转码层级、调小播放器缓冲,并做好弱网兜底。

做企业直播时,“为什么我这边说完话,观众要过好几秒才听到”是最常见的问题之一。要解决延迟,首先要知道延迟是从哪里来的。

优化延迟时,先从“分片等待 + 播放缓冲”入手,而不是一味升级带宽。

一、直播链路上的六段延迟

一条典型的直播链路可以拆成六个环节,每个环节都会贡献一部分延迟:

  1. 采集与前处理:摄像头、采集卡、美颜或画面合成,通常是几十到上百毫秒。
  2. 编码:编码器需要缓存若干帧做运动估计。开启 B 帧、使用较慢的编码预设会增加延迟。
  3. 推流(第一公里):主播端到接入节点的网络传输,受上行带宽和网络抖动影响。
  4. 转码与封装:服务端转出多种清晰度,再封装成 HLS、FLV 等格式。转码层级越多,延迟越大。
  5. CDN 分发:边缘节点回源、逐级缓存,一般不是主要瓶颈,但回源慢时会放大首屏时间。
  6. 播放缓冲:播放器为了抗抖动会预先缓存一段内容,这往往是延迟的“大头”。

经验上,切片协议的分片等待 + 播放器缓冲是延迟最主要的来源。优化时应先从这里入手,而不是一味升级带宽。

架设在三脚架上的专业摄像机与监视器
直播链路从采集端开始,每个环节都会叠加延迟图片:rawpixel 公共领域图库 · rawpixel 公共领域图库 · CC0

二、主流协议的延迟与适用场景

协议典型延迟(量级)优势局限适用场景
RTMP / HTTP-FLV数秒推流生态成熟,延迟较低浏览器原生不支持 FLV,需借助 JS 播放器;iOS 浏览器兼容性差推流上行、PC 端播放
HLS十秒级及以上兼容性最好,CDN 友好,易扩展需等待分片生成,延迟高大规模单向观看、回放
LL-HLS数秒保留 HLS 兼容性与 CDN 扩展性需要服务端、CDN、播放器全链路支持互动要求中等的大型直播
WebRTC亚秒级实时性最好,浏览器原生支持大规模分发成本高,需 SFU 与边缘部署连麦、互动课堂、竞拍
SRT可配置,通常数百毫秒到数秒抗丢包能力强,适合公网远距离传输主要用于贡献链路,不直接面向观众外场信号回传、跨地区推流

上表的数值是常见量级,实际表现取决于参数配置和网络状况,并非任何厂商的承诺值。

HLS 为什么慢

HLS 把直播流切成一个个 TS 或 fMP4 分片,播放器下载播放列表(m3u8)后才开始拉取分片。按照 RFC 8216 的建议,客户端一般不会从最后一个分片开始播放,而是从倒数第三个分片附近开始。若分片时长 6 秒,仅这一项就可能带来十几秒的延迟。

LL-HLS 怎样提速

Apple 提出的低延迟 HLS 引入了“部分分片(Partial Segment)”、阻塞式播放列表刷新和预加载提示等机制,播放器不必等待完整分片生成,就能拉取更小的数据块,从而把延迟压到数秒。它的前提是源站、CDN 和播放器都要支持这些扩展。

WebRTC 的取舍

WebRTC 基于 UDP 传输,并内置拥塞控制和抗丢包机制,能做到亚秒级互动。随着 WHIP(WebRTC-HTTP 推流协议)标准化,推流侧的接入也更简单了。但每个观众都需要与服务器保持实时连接,大规模分发要靠 SFU 级联,成本明显高于 CDN 分发。

三、降低延迟的实操清单

  • 对齐 GOP 与分片:GOP 设为 1~2 秒,分片时长为 GOP 的整数倍,避免分片里关键帧错位导致首屏变慢。
  • 减少 B 帧或关闭 B 帧:对互动要求高的场景,编码器可以使用 zerolatency 一类的低延迟调优参数。
  • 缩短分片时长:HLS 分片可以从 6 秒降到 2 秒左右,但请求数会增多,需要评估 CDN 成本。
  • 调小播放器缓冲:在弱网用户比例不高时,可以适当降低起播缓冲和最大缓冲,并配合追帧策略(缓冲过大时加速播放)。
  • 按场景混合架构:主讲人与连麦嘉宾走 WebRTC,普通观众走 CDN 低延迟协议,兼顾体验与成本。
  • 监控端到端延迟:在画面中叠加时间戳,或通过 SEI 携带推流时间,在播放端计算真实延迟,用数据驱动优化。
机房配线架上密集排布的网线
CDN 分发与回源链路同样影响首屏与延迟图片:rawpixel 公共领域图库 · rawpixel 公共领域图库 · CC0

四、如何选择

如果你的直播以单向观看为主(发布会、讲座、年会),把延迟控制在数秒以内通常就足够了,优先保证稳定性与覆盖面;如果是在线课堂连麦、互动答题、直播竞拍,就需要 WebRTC 级别的实时性。

对于不想自建全链路的团队,也可以直接使用成熟的企业直播平台。不少平台提供低延迟直播与多人连麦能力,建议挑选几家,在自己的网络环境里实测延迟后再决定架构。

常见问题(FAQ)

直播延迟多少秒算正常?

取决于协议和业务。基于传统 HLS 的直播延迟通常在十秒以上,基于 RTMP/HTTP-FLV 的播放一般为数秒,LL-HLS 可以做到数秒,WebRTC 可以做到 1 秒以内。没有统一标准,关键是满足业务的互动需求。

为什么手机浏览器上直播延迟更高?

很多移动端浏览器不支持 FLV 播放,通常回退到 HLS,而 HLS 需要先生成若干分片再开始播放,因此延迟更高。可以考虑 LL-HLS 或 WebRTC 播放方案。

把 GOP 调得越小越好吗?

不是。GOP 越小,关键帧越多,同等码率下画质会下降或码率会上升。直播中常见做法是 GOP 设为 1 到 2 秒,并与分片时长对齐。

WebRTC 能支撑大规模观看吗?

可以,但通常需要部署 SFU 级联与边缘节点,成本和运维复杂度高于 HLS。很多平台采用“主讲与连麦用 WebRTC,大规模观众用 CDN 低延迟协议”的混合架构。

参考资料

  1. RFC 8216 - HTTP Live Streaming
  2. Apple Developer - Enabling Low-Latency HTTP Live Streaming (HLS)
  3. W3C - WebRTC: Real-Time Communication in Browsers
  4. RFC 9725 - WebRTC-HTTP Ingestion Protocol (WHIP)
  5. Haivision SRT 开源项目