ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

WHIP(WebRTC HTTP Ingestion Protocol)详解

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)基本流程

  1. 客户端(如浏览器)通过 RTCPeerConnection 生成 SDP Offer。
  2. HTTP POST 请求 将 SDP Offer 发送到 WHIP 服务器端点(如 http://server:1985/rtc/v1/whip)。
  3. 服务器 返回 SDP Answer 和 ICE 候选地址。
  4. 建立 WebRTC 连接,客户端开始推送媒体流(SRTP)。

(2)示例交互

ClientWHIP ServerPOST SDP Offer (HTTP)201 Created (SDP Answer)UDP/SRTP 媒体流ClientWHIP Server

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 配置指南

如果有具体实现问题,欢迎讨论!

返回列表