Skip to content

WHIP 协议

TiRTC WHIP 基于 IETF RFC 9725。当前接入使用非 Trickle ICE 流程:设备通过一次 HTTP POST 交换完整 SDP,随后通过 WebRTC 传输媒体。

HTTP 交互

创建资源:POST <service-endpoint>

http
POST /whip HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/sdp

<SDP Offer>

成功响应:

http
HTTP/1.1 201 Created
Content-Type: application/sdp
Location: /resource/4f57...

<SDP Answer>

Location 必须唯一标识本次会话。建议返回相对 URI,使入口代理可以保持对外域名和协议。

删除资源:DELETE <Location>

http
DELETE /resource/4f57... HTTP/1.1

DELETE 不需要 AuthorizationLocation 中的 session-id 必须使用至少 128 位密码学随机值,不能包含设备 ID 或其他可预测信息。无论资源刚被删除还是已经不存在,均返回 204 No Content

随机 ID 属于 Bearer 能力,不得写入普通访问日志。入口按设备能力使用 HTTP 或 HTTPS,并应限制请求速率。使用 HTTP 时,Token 和随机 ID 不受传输加密保护,只应在设备确有需要且网络路径受控时启用。即使设备未发送 DELETE,服务端也必须在 TiRTC 连接断开时清理资源。

当前支持范围

能力支持情况
SDP Offer/Answer over HTTP POST支持
Location 会话资源支持
DELETE 结束会话服务端应实现
Trickle ICE / PATCH暂不支持
ICE、DTLS、SRTP由 TiRTC SDK 处理

HTTP 状态码

状态码含义
201 Created已接受 Offer 并返回 Answer
400 Bad RequestSDP 或请求参数无效
401 Unauthorized缺少 Bearer Token
403 ForbiddenToken 验证失败
405 Method Not Allowed端点不支持该方法
415 Unsupported Media TypeContent-Type 不是 application/sdp
500 Internal Server Error服务内部错误

WHIP Service 返回的错误正文不应包含密钥、Token、内部地址或堆栈信息。

TiRTC WHIP 开发文档