WebRTC 超低延迟直播:WHEP 播放实战

秀场直播里的「主播念观众ID」永远慢半拍、监控画面比现场晚十几秒、拍卖出价镜头滞后——这些场景里,HLS 的 5~30 秒延迟是硬伤。要亚秒级端到端,业界答案只有一个:WebRTC。本文讲 ZWPlayer 的 WebRTC 播放接入——标准 WHEP 信令 + 三家私有云协议支持,rtc:// 地址粘上就播。

延迟阶梯:为什么必须是 WebRTC

延迟阶梯与 WHEP 链路 图 1:主流直播协议延迟对比与 WHEP 播放链路

  • HLS/DASH(5~30 秒):切片 + 清单机制为稳定而生,延迟是结构性的——切片越长延迟越高,压不动;
  • LL-HLS(2~5 秒):部分切片 + 阻塞请求换延迟,复杂度陡增,天花板仍在秒级;
  • WebRTC(亚秒级):为实时通信设计的传输(SRTP + 拥塞控制 + jitter buffer),端到端延迟天然在几百毫秒量级。

一句话选型:能容忍 5 秒延迟的选 HLS(稳定、可 CDN 扩容);不能容忍的选 WebRTC

WHEP:把 WebRTC 拉流标准化了

WebRTC 播放过去贵在信令——每家流媒体服务器一套 SDP 交换接口,播放端各写各的。WHEP(WebRTC-HTTP Egress Protocol) 把「播放端拉流信令」标准化为简单的 HTTP 交互,SRS、ZLMediaKit、mediamtx 等主流服务器均已支持。

ZWPlayer 内置 WHEP 客户端,播放只需给地址:

new ZWPlayer({
  playerElm: 'player',
  url: 'rtc://your-server.com:1985/rtc/v1/whep/?app=live&stream=lesson01',
  // 或直接给含 /whep/ 的 HTTP 地址
});

推流端(OBS、无人机、会议系统)经 WHIP 推到服务器,观众侧 ZWPlayer 经 WHEP 拉流——全链路标准化,换服务器厂商零改动

私有云协议:ARTC / TRTC / BRTC

国内云厂商的超低延迟直播走各自的私有协议。ZWPlayer 直接支持三种:

协议 厂商 地址前缀
ARTC 阿里云 artc://
TRTC 腾讯云 trtc://
BRTC 百度智能云 brtc://

已在云厂商侧开通超低延迟直播的团队,把播放地址的前缀换成对应 xxx:// 交给 ZWPlayer 即可——不需要在网页里引入任何厂商 SDK,播放器内部完成信令与传输。这意味着:

  • 页面体积不因厂商 SDK 膨胀(省掉几百 KB 到数 MB);
  • 换云厂商只改 URL 前缀,播放层代码零改动;
  • 多厂商混用(华东走 A 家、华南走 B 家)在一个页面里天然可行。

实战场景

  • 电商直播:主播喊「三二一上链接」,观众端必须同刻看到——亚秒级延迟直接关联转化;
  • 远程鉴赏/拍卖:出价画面滞后等于流程灾难;
  • 监控慢直播:景区/工地画面配 WebRTC,观众「实时感」即卖点(配 VR 全景更佳——全景直播);
  • 连麦互动:低延迟是连麦体验的下限。

部署要点

  • 服务器选型:自建选 SRS 或 ZLMediaKit(都支持 WHIP/WHEP);云上直接用厂商超低延迟产品;
  • HTTPS:浏览器要求安全上下文才开放 WebRTC 的完整能力(采集、自动播放策略同理);
  • CDN 与扩容:WebRTC 的分发成本高于 HLS——大流量场景常见架构是「WebRTC 主流 + HLS 降级流」,ZWPlayer 的 multiStreams 可以做延迟档位切换;
  • 自动播放:带声音的自动播放会被浏览器拦截——ZWPlayer 内置静音自动播放探测与微信内降级,但仍建议直播页首帧静音起播。

相关文章