当前位置: 首页 > news >正文

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)示例交互

Client WHIP Server POST SDP Offer (HTTP) 201 Created (SDP Answer) UDP/SRTP 媒体流 Client WHIP 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 配置指南

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

http://www.lryc.cn/news/582573.html

相关文章:

  • 装修水电改造需要注意什么?水电改造有哪些注意事项?
  • 力扣-287.寻找重复数
  • 容器技术入门与Docker环境部署
  • 【佳易王娱乐场儿童乐园会员多项目管理系统软件】从 “手工记账” 到 “智能管理”:儿童乐园会员系统的转型价值
  • Docker实用命令
  • 脚本检测 自启 关闭 重启等 tomcat 可修改成其他程序 结合crontab 每天凌晨1点执行
  • LocalStorage和SessionStorage的区别和应用
  • UI前端与数字孪生结合实践案例:智慧零售的库存管理优化系统
  • 车载HMI革命:从物理按键到智能表面的交互逻辑重构
  • 高版本的MacOS如何降级?
  • 250708-Debian系统安装Edge浏览器并配置最小中文输入法
  • KTM5910,24bit 绝对角度磁性编码器,在轴应用,- 内部集成超高性能双 16bit 2M SAR ADC
  • VMware克隆虚拟机,模板机已提前设置了固定IP,克隆机需要修改的事项
  • ECS由浅入深第三节:进阶?System 的行为与复杂交互模式
  • 【openGLES】安卓端EGL的使用
  • GitOps实践指南:GitLab CI/CD + ArgoCD 实现 Kubernetes 自动化部署
  • 如何开发第一个你的dapp项目?
  • 闲庭信步使用图像验证平台加速FPGA的开发:第四课——RGB转HSV的FPGA实现
  • 利用外部Postgresql及zookeeper,启动Apache Dolphinscheduler3.1.9
  • 进阶向:Python音频录制与分析系统详解,从原理到实践
  • 3.直面分布式核心挑战:厘清概念、破解雪崩与熔断之道
  • 采煤机:技术革新驱动下的全球市场格局与未来趋势
  • 2025年前端面试题
  • C++ 选择排序、冒泡排序、插入排序
  • 云原生安全观察:零信任架构与动态防御的下一代免疫体系
  • 小红书APP品牌升级,启用新品牌口号“你的生活兴趣社区”
  • Axure-9高级教程:Axure函数使用手册-免费
  • Menu:菜单控件应用实例
  • Python入门Day5
  • 【华为昇腾|CUDA】服务器A6000显卡部署LLM实战记录