BRTC WTN(WebRTC Transmission Network)服务是运行的基础是WebRTC标准中的 WHIP / WHEP 协议, 在此基础上我们加入了可控的业务参数,方便用户较为轻松的使用本服务。
WHIP/WHEP是基于HTTP的协议,该协议将允许基于WebRTC的查看器观看来自流媒体服务和/或内容分发网络(CDN)或WebRTC传输网络(WTN)的内容
WHEP 可以用过协议播放WTN网络的中的流
+-------------+ +---------------+ +--------------+ +---------------+ | WHEP Player | | WHEP Endpoint | | Media Server | | WHEP Resource | +--+----------+ +---------+-----+ +------+-------+ +--------|------+ | | | | | | | | |HTTP POST (SDP Offer) | | | +------------------------>+ | | |201 Created (SDP answer) | | | +<------------------------+ | | | ICE REQUEST | | +--------------------------------------->+ | | ICE RESPONSE | | |<---------------------------------------+ | | DTLS SETUP | | |<======================================>| | | RTP/RTCP FLOW | | +<-------------------------------------->+ | | HTTP DELETE | +---------------------------------------------------------->+ | 200 OK | <-----------------------------------------------------------x
WHIP 可以通过协议向WTN网络中推流
+-------------+ +---------------+ +--------------+ +---------------+ | WHIP client | | WHIP endpoint | | Media Server | | WHIP session | +--+----------+ +---------+-----+ +------+-------+ +--------|------+ | | | | | | | | |HTTP POST (SDP Offer) | | | +------------------------>+ | | |201 Created (SDP answer) | | | +<------------------------+ | | | ICE REQUEST | | +--------------------------------------->+ | | ICE RESPONSE | | |<---------------------------------------+ | | DTLS SETUP | | |<======================================>| | | RTP/RTCP FLOW | | +<-------------------------------------->+ | | HTTP DELETE | +---------------------------------------------------------->+ | 200 OK | <-----------------------------------------------------------x
Pusher
SDP Offer
/whip/{appid}/{stream}
POST
BRTCWTN
401
201
/resources/${resourceId}
SDP Answer
SDP
Player
409
Client
PeerConnection
服务设计
设计
BRTC WTN(WebRTC Transmission Network)服务是运行的基础是WebRTC标准中的 WHIP / WHEP 协议, 在此基础上我们加入了可控的业务参数,方便用户较为轻松的使用本服务。
1. WHEP 工作流
2. WHIP 工作流
发布流
Pusher
在本端生成SDP Offer
Pusher
携带上一步生成的SDP Offer
向/whip/{appid}/{stream}
发起POST
请求BRTCWTN
接受到请求后对请求进行鉴权, 如果鉴权失败响应状态码401
, 如果鉴权成功,会自动申请媒体资源,并且创建 资源缓存BRTCWTN
响应Pusher
状态码201
, 响应头中标识/resources/${resourceId}
, 响应体为SDP Answer
Pusher
需要缓存此次推流响应的/resources/${resourceId}
, 方便后续的控制工作, 同时Pusher
完成SDP
交换流程订阅流
Player
在本端生成SDP Offer
Player
携带上一步生成的SDP Offer
向/whip/{appid}/{stream}
发起POST
请求BRTCWTN
接受到请求后查询是否存在资源, 如果资源不存在则响应状态码409
; 如果资源存在,需要检查资源是否需要鉴权, 如果需要鉴权,鉴权失败响应状态码401
;BRTCWTN
响应Player
状态码201
, 响应头中标识/resources/${resourceId}
, 响应体为SDP Answer
Player
需要缓存此次推流响应的/resources/${resourceId}
, 方便后续的控制工作, 同时Player
完成SDP
交换流程Player
发送流数据,Player
可以播放流资源控制流
Client
需要控制流的时候,向推拉流时缓存的/resources/${resourceId}
发起POST请求, 可以变更视频和音频状态BRTCWTN
如果资源存在且处理成功,响应状态码 200; 如果资源不存在则响应状态码 404销毁流
Client
需要取消的时候,向推拉流时缓存的/resources/${resourceId}
发起DELETE请求, 可以销毁流资源; 另外可以通过停止本端的PeerConnection
,服务端会被动认为资源销毁BRTCWTN
响应状态码 200 [!] 注意 此处响应码始终为200