WHIP(WebRTC HTTP Ingestion Protocol)详解
WHIP(WebRTC HTTP Ingestion Protocol)详解
WHIP(WebRTC HTTP Ingestion Protocol)是一种基于 HTTP 的协议,用于将 WebRTC 媒体流推送到媒体服务器(如 SRS、Janus、LiveKit)。它是为简化 WebRTC 推流流程而设计的开放标准,旨在替代传统的 SDP 信令交换 和 ICE 协商 的复杂性。
1. WHIP 的核心作用
WHIP 主要用于 WebRTC 推流,典型场景包括:
- 直播推流(低延迟直播、数字人交互)。
- 视频会议(将本地音视频发送到 SFU/MCU)。
- 远程控制(如无人机视频回传)。
与传统 WebRTC 相比,WHIP 的优势在于:
- 简化信令:用 HTTP POST 交换 SDP,无需自定义信令服务器。
- 标准化接口:兼容不同厂商的 WebRTC 服务器。
- 低延迟:仍基于 WebRTC 的 UDP 传输(RTP/RTCP)。
2. WHIP 的工作原理
(1)基本流程
- 客户端(如浏览器)通过
RTCPeerConnection
生成 SDP Offer。 - HTTP POST 请求 将 SDP Offer 发送到 WHIP 服务器端点(如
http://server:1985/rtc/v1/whip
)。 - 服务器 返回 SDP Answer 和 ICE 候选地址。
- 建立 WebRTC 连接,客户端开始推送媒体流(SRTP)。
(2)示例交互
3. WHIP vs. 传统 WebRTC 推流
对比项 | WHIP | 传统 WebRTC |
---|---|---|
信令协议 | HTTP(标准化) | 自定义(WebSocket/SIP等) |
ICE 协商 | 服务器返回 ICE 候选 | 需额外信令交换 ICE 信息 |
适用场景 | 单向推流(直播、监控) | 双向通信(视频会议) |
服务器支持 | SRS、Janus、LiveKit | 所有 WebRTC 服务器 |
复杂度 | 低(客户端只需 HTTP 请求) | 高(需实现完整信令逻辑) |
4. WHIP 的典型使用场景
(1)低延迟直播推流
- 推流端:OBS(通过 WHIP 插件)、浏览器(JavaScript)。
- 服务器:SRS 或 Janus 接收 WHIP 流并转 RTMP/HLS。
- 播放端:WebRTC(超低延迟)或 HTTP-FLV(1-3秒延迟)。
示例代码(浏览器推流):
const pc = new RTCPeerConnection();
const whipUrl = "http://server:1985/rtc/v1/whip?app=live&stream=test";// 添加本地音视频轨道
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(stream => {stream.getTracks().forEach(track => pc.addTrack(track, stream));return pc.createOffer();}).then(offer => pc.setLocalDescription(offer)).then(() => {// 发送 SDP Offer 到 WHIP 服务器return fetch(whipUrl, {method: "POST",body: pc.localDescription.sdp,headers: { "Content-Type": "application/sdp" }});}).then(response => response.text()).then(sdpAnswer => {pc.setRemoteDescription({ type: "answer", sdp: sdpAnswer });});
(2)SRS 服务器的 WHIP 配置
# SRS 配置文件 srs.conf
rtc_server {enabled on;listen 8000; # UDP 端口用于 WebRTC
}
http_api {enabled on;listen 1985; # WHIP 的 HTTP 端点
}
5. WHIP 的优缺点
✅ 优点
- 标准化:IETF 草案(draft-ietf-wish-whip),兼容性强。
- 简单易用:无需实现复杂的信令服务器。
- 低延迟:基于 WebRTC,延迟可低至 500ms。
❌ 缺点
- 仅支持推流:不支持拉流(拉流需用 WHEP 协议)。
- 依赖 HTTP:对部分嵌入式设备不友好(需 HTTP 库支持)。
6. 相关协议
- WHEP(WebRTC HTTP Egress Protocol):用于从服务器拉取 WebRTC 流,与 WHIP 互补。
- RTMP:高延迟推流协议,正逐渐被 WHIP 替代。
- SRT:类似场景,但基于 UDP 而非 WebRTC。
7. 总结
WHIP 是 WebRTC 推流的未来标准,适合需要 低延迟、标准化、易集成 的场景。结合 SRS 等服务器,可轻松实现:
- 浏览器无插件直播推流
- 数字人实时交互
- 监控视频回传
进一步阅读:
- WHIP 官方草案
- SRS WHIP/WHEP 配置指南
如果有具体实现问题,欢迎讨论!