SRS 携手 OBS WHIP 实现 200ms 超低延迟直播推流实战
2026/9/10 8:27:04 网站建设 项目流程

SRS 携手 OBS WHIP 实现 200ms 超低延迟直播推流实战

【免费下载链接】srsSRS is a simple, high-performance, AI-driven real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.项目地址: https://gitcode.com/GitHub_Trending/sr/srs

本篇技术指南以 SRS 实时媒体服务器的 WHIP 推流能力为核心,讲解如何通过 OBS Studio 的 WHIP 协议将直播延迟从传统 RTMP 的约 1 秒压缩到 200 毫秒级别,涵盖 SRS 服务启动、OBS 推流配置、浏览器 WHEP 拉流播放三步完整链路,并结合仓库源码剖析 WHIP 在 SRS 中的实现原理与低延迟编码参数调优。读完本文,你将能独立搭建一套"OBS → SRS(WHIP) → 浏览器(WHEP)"的超低延迟直播方案。

WHIP 为何能把延迟降到 200ms

OBS 官方已正式合并 WHIP 支持补丁(预计随 OBS 30 发布),这为直播推流打开了全新的可能。对比三种典型直播链路的端到端延迟:

方案推流协议拉流协议典型延迟
传统 RTMPRTMPRTMP/HTTP-FLV/HLS约 1000ms(1 秒)
RTMP + WebRTC 转推RTMP 进、WebRTC 出WebRTC约 500ms
OBS WHIPWHIP(WebRTC 封装)WHEP(WebRTC 播放)约 200ms

WHIP(WebRTC-HTTP Ingestion Protocol)将 WebRTC 的推流信令封装为标准 HTTP 交互,OBS 直接以 WebRTC 的 UDP/SRTP/DTLS 通道把音视频流推进服务器,全程无 RTMP 中转,因此延迟可降至 200ms 左右;即使在网络状况不佳或跨公网推流时,OBS WHIP 也能维持稳定且持续的低延迟表现。

SRS 已完整实现 WHIP 推流与 WHEP 拉流两种 WebRTC 信令端点,本文演示的正是这条"OBS WHIP 推流 + SRS 服务 + 浏览器 WHEP 播放"的完整闭环。

前置准备

开始前请安装以下软件:

  • OBS Studio:官方下载页面获取最新版本。需要注意的是,WHIP 支持已合并进 OBS 的 master 分支,将于 OBS 30 正式发布;若使用旧版本,可从 OBS 30.0.0-rc1 预发布版本获取带 WHIP 支持的构建。

第一步:启动 SRS 并开启 WHIP 能力

SRS 通过rtmp2rtc模式同时启用 RTMP 与 WebRTC 双通道,使 WHIP 推流、RTMP 推流与 WHEP 播放可以互通。使用 Docker 一键启动:

CANDIDATE="192.168.1.10" docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \ --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \ ossrs/srs:5 ./objs/srs -c conf/rtmp2rtc.conf

请务必将CANDIDATE设置为你自己的服务器 IP。CANDIDATE 是 SRS WebRTC 模块对外通告的 ICE 候选地址,浏览器端需要靠它完成 UDP 媒体通道的连通,配置错误将导致推流/播放无法建立。

对照仓库中的 rtmp2rtc.conf,上述命令各端口与配置的对应关系如下:

端口/配置作用配置文件对应项
1935 (TCP)RTMP 推流/拉流入口rtmp { listen 1935; }
1985 (TCP)HTTP API(WHIP/WHEP 信令挂载点)http_api { listen 1985; }
8080 (TCP)HTTP 服务,托管播放器页面http_server { listen 8080; }
8000 (UDP)WebRTC 媒体传输端口rtc_server { listen 8000; }
$CANDIDATEICE 候选地址,从环境变量注入rtc_server { candidate $CANDIDATE; }

vhost __defaultVhost__中,rtc { rtmp_to_rtc on; rtc_to_rtmp on; }开启了 RTMP 与 WebRTC 流的双向互转:这意味着即使没有 WHIP 推流端,也能用 RTMP 推流、WebRTC 拉流(反之亦然)。而 WHIP 信令本身由 HTTP API 进程承载,其服务端点实现位于 srs_app_rtc_api.cpp 中的SrsGoApiRtcWhip类——SRS 收到 WHIP 的 HTTP POST 请求后解析 SDP Offer,创建 RTC 会话并回传 SDP Answer 与 201 状态码,同时在该类中实现了基于token校验的会话删除(DELETE 请求)逻辑。

第二步:在 OBS 中配置 WHIP 推流

启动 OBS 后按如下步骤配置:

  1. 打开 OBS,点击设置(Settings)
  2. 在左侧边栏点击推流(Stream)
  3. 服务(Service)下拉框中选择WHIP
  4. 服务器(Server)设置为:http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream
    • 该地址即 SRS 的 WHIP 信令端点/rtc/v1/whip/app=livestream=livestream指定了推流目标的应用名与流名,可按需修改。
  5. 点击确定(OK)保存设置。
  6. 点击开始推流(Start Streaming)开始推流。

如果实测延迟仍然偏大,请按低延迟方向调整 OBS 的输出编码设置:编码器选择x264,在高级设置中将GOP(关键帧间隔)设为 1 秒,Preset 选择fast,Profile 选择baseline,Tune 选择zerolatency

这里的关键在于GOP 设为 1s:WebRTC 播放端需要等到关键帧才能开始解码,1 秒的关键帧间隔保证了播放器加入时能快速出画;而zerolatency调优参数则要求编码器放弃缓冲、逐帧即时输出,从编码端进一步压缩延迟。这些参数组合在一起,是 OBS WHIP 达到 200ms 级延迟的最后一环。

第三步:浏览器播放(WHEP)

推流建立后,在浏览器中打开以下地址即可实时观看:

http://localhost:8080/players/whep.html

该播放器是仓库自带的 WHEP 拉流页面,源码位于 whep.html。WHEP(WebRTC-HTTP Egress Protocol)与 WHIP 一一对应,负责以同样的 WebRTC 通道从 SRS 拉取音视频流。从源码可见,SRS 将/whep//whip-play/两种路径统一解析为 WebRTC 播放会话(见 srs_app_rtc_api.cpp 中对路径后缀"/whip-play/""/whep/"的判断),因此该页面既可作为 WHIP 推流后的验证工具,也可作为常规 WebRTC 播放器使用。

端到端延迟链路回顾

整条超低延迟链路中,延迟的削减来自三个环节的协同:

  1. 推流侧:OBS 以 WHIP 直推 WebRTC,省去 RTMP 的 TCP 累积缓冲与转封装环节;
  2. 服务侧:SRS 的rtmp_to_rtc/rtc_to_rtmp保持 RTMP 兼容性的同时,对 WebRTC 会话走原生的 RTC 通道(UDP/SRTP/DTLS),不引入额外转码延迟;
  3. 播放侧:WHEP 以 WebRTC 拉流,播放器可即时解码 1s GOP 的关键帧,配合zerolatency编码,实现从摄像头到屏幕约 200ms 的端到端体验。

结语

通过以上三步——启动 SRS(rtmp2rtc.conf)、配置 OBS WHIP 推流、用 WHEP 播放器拉流——即可获得约 200ms 的稳定超低延迟直播体验,相比传统 RTMP 的 1 秒延迟有质的提升,非常适合互动直播、远程协作等对实时性敏感的场景。若需在公网快速搭建 WHIP 服务,也可参考 SRS 生态中 Oryx 的一键 WHIP 服务能力(见同仓库博客 Oryx OBS WHIP 服务)。SRS 的 WHIP 能力全部开源,配置与实现均可直接查阅仓库源码与 rtmp2rtc.conf 示例进行二次验证与定制。

【免费下载链接】srsSRS is a simple, high-performance, AI-driven real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.项目地址: https://gitcode.com/GitHub_Trending/sr/srs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询