什么是 WHIP 协议?
WHIP (WebRTC-HTTP Ingestion Protocol)是一种基于 HTTP 的标准协议,该协议允许使用 HTML5 和不同的客户端向流媒体服务器或 CDN 推送/拉取 WebRTC 实时流。
WHIP 使软件和硬件编码器能够支持 WebRTC 流,而无需自定义信令实现。它无需额外实现,并为广播接收提供了一种替代实时消息协议 (RTMP)的现代化方案。
与之对应的 WHEP(WebRTC-HTTP Egress Protocol)协议,可从流媒体服务器拉取视频流到客户端,类似 HLS 或 DASH 的 WebRTC 替代方案。
WHIP 协议对直播的好处
超低延迟
WebRTC 可实现毫秒级(通常为数百毫秒)延迟的直播传输,远低于传统协议。通过采用 WHIP 技术,内容发布者能实现实时流媒体传输,从而在游戏和实时问答等对延迟零容忍的场景中提供交互式体验(相对 RTMP 可降低 150 ms 左右)。
高质量自适应流媒体
WHIP 支持现代编解码器和自适应码率流媒体技术,以维持高质量的视频/音频传输。虽然同步广播通过SDP 协议协商实现,但可扩展视频编码(SVC)可通过编解码器或应用层配置,WHIP 允许您在采集过程中使用这些功能。
广播商可发送多层画质,由媒体服务器或客户端根据网络状况自动适配。WebRTC 内置的带宽估算与拥塞控制功能可动态调整画质,避免播放卡顿。
安全
WHIP 非常安全,因为它提供端到端加密。这可以防止流媒体被篡改,从而为所有参与方创造更高质量的体验。
开源
WHIP 是开源的,开发者可以免费使用它来构建直播应用程序。此外,任何兼容 WHIP 的编码器都可以与任何兼容 WHIP 的服务器通信,从而避免了厂商锁定。
开发者可以随时使用 WebRTC 和 WHIP,通过 GStreamer 或 OBS 等开源软件发布内容。
OBS 如何使用 WHIP 协议推流
OBS Studio 内置了 WHIP 支持(OBS V30.0 之后版本),使创作者能够使用简单的服务器 URL 和持有者令牌,将毫秒级、安全的流媒体发布到兼容的平台。
ZEGO实时音视频SDK已支持 OBS 使用 WHIP 协议推流,下面我们来看看怎么设置。
准备工作
- 联系 ZEGO 技术支持,开通工具推流到 ZEGO 服务器的相关权限,申请并配置 WHIP 域名。
- 准备第三方推流工具 OBS。
使用步骤
1. 生成推流地址
申请 WHIP 域名后,推流地址按以下格式拼接。
https://i-whip{appid}.whip.zegotech.cn/whip/v1/{appid}/{streamId}?userId={userId}&zgVer=v1&zgExpired={expire}&zgNonce={nonce}
参数说明
| 参数名 | 描述 |
|---|---|
| appid | 用户的 appid,与域名申请时的一致。 |
| streamId | 音视频流的 ID,由用户自定义。 |
| userId | 推流用户的 ID。 |
| expire | Token 的过期时间,参考 Token 生成小节。 |
| nonce | 随机字符串,参考 Token 生成小节。 |
2. 生成TOKEN
以下为鉴权 Token 的计算参数列表,参数名区分大小写。
| 参数名 | 值类型 | 必填 | 描述 |
|---|---|---|---|
| appid | string | 是 | ZEGO 分配给客户的 appid ,仅用于参与计算 Token。 |
| streamId | string | 是 | 流名,仅用于参与计算 Token。 |
| zgExpired | int64 | 是 | Token 过期时间。值取 unix 秒级时间戳,即从 1970-01-01 00:00:00 UTC 到现在的秒数,参与计算 Token 与组成鉴权参数。 |
| zgNonce | string | 是 | 即 Number once,避免 Token 重放,预留实现。建议长度不超过15个字节可以取当前毫秒数,参与计算 Token 与组成鉴权参数。 |
| zgPrivilege | string | 是 | 表示鉴权权限0: 表示仅拉流权限1: 表示推拉流权限仅用于参与计算 Token 。 |
| key | string | 是 | 鉴权密钥。ServerSecret 需要根据是推流鉴权还是拉流鉴权来指定对应的密钥。 |
- 将除 key 以外的所有需要参与 Token 计算的参数按从小到大的顺序进行排序拼接,最后再拼接 key。
let str = "appid=176xxxx14&streamId=stream_1xxxxx4&zgExpired=86400&zgNonce=1760511934298&zgPrivilege=1&key=e0xxxxxxxxxxd";
- 对
str进行 sha256 加密,得到的字符串即为 Token。
b0f8c8e4c6f5b3a8xxxxxxxxxxxxxxxxxxxxx0d9e8f7a6b5c4d3e2f1a0b9
OBS 推流
1. 打开 OBS,设置采集源后进入设置选项。

2. 单击直播进入推流地址设置界面。
- 选择服务类型为:WHIP。
- 在服务器中填写直播推流 URL。
- 在 Bearer 令牌中填写 Token。

3. 开启直播。

总结
WHIP 是 WebRTC 技术的未来方向,ZEGO 一直致力于打造更好的实时互动体验。我们诚邀您尝试 RTC 技术,在未来的流媒体项目中收获显著效益。借助 WHIP、WebRTC 及其他强大技术实现实时互动,能助您全面提升流媒体体验。立即注册开始免费体验,深入了解我们的实时音视频解决方案如何为您打造更丰富的观众体验。
常见问题
Q1. WHIP 代表什么?
它代表 WebRTC-HTTP Ingestion Protocol,这是一项 IETF 定义的标准,规定了简易的 HTTP 握手过程。该握手过程包括一个用于获取 SDP offer 的 POST 请求和一个响应,使编码器无需自定义信令即可通过 WebRTC 发布实时音频/视频。
Q2. WHIP 与 WHEP 是什么?
简单来说,WHIP 和 WHEP 是两种基于 WebRTC 的协议,分别用于视频推流(直播)和视频拉流(播放),旨在简化 WebRTC 与媒体服务器的集成。
Q3. 软件中的 WHIP 是什么?
在软件层面,WHIP 协议定义了客户端与服务端的角色。WHIP 客户端是广播软件(例如 OBS Studio)、硬件编码器或自定义 Web 应用程序中的一个功能,用于发送媒体流。WHIP 端点是媒体服务器上用于接收该媒体流的特定 URL。
原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/2969/