ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

WebRTC低延迟直播:Monibuca WHIP/WHEP 5分钟接入完全指南

WebRTC低延迟直播:Monibuca WHIP/WHEP 5分钟接入完全指南 WebRTC低延迟直播Monibuca WHIP/WHEP 5分钟接入完全指南【免费下载链接】monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器框架其内置的 WebRTC 插件原生支持WHIP 推流与WHEP 拉流两大标准协议无需复杂信令开发浏览器 5 分钟即可跑通毫秒级低延迟直播。为什么选择 Monibuca 做 WebRTC 低延迟直播传统直播方案在延迟上有明显短板WebRTC 正好补上这一环方案典型延迟适用场景HLS10s~30s点播、大并发分发RTMP3s~5s推流上行WebRTCWHIP/WHEP200ms~1s低延迟直播、互动连麦、云监考、远程运维Monibuca 的 WebRTC 插件基于 Pion 实现开箱即用的能力包括✅WHIP/WHEP 标准协议一个 HTTP POST 完成 SDP 协商天然穿透防火墙✅多编解码支持H.264、H.265、AV1、VP9 视频 Opus、PCMA、PCMU 音频✅TCP/UDP 双传输Docker 与严格防火墙环境下也能稳定建连✅内置测试页面推流、拉流、屏幕共享、多路流一应俱全✅DataChannel 兜底浏览器不支持的编码格式自动降级传输插件源码位于 plugin/webrtc/完整协议说明可参考 README_CN.md。5 分钟接入快速开始三步走第 1 步克隆并配置git clone https://gitcode.com/langhuihui/monibuca在config.yaml中启用 WebRTC 插件核心配置如下webrtc: port: tcp:9000 # 媒体传输端口也支持 udp:9000 或 udp:10000-20000 pli: 2s # 视频丢包后请求关键帧的间隔 enabledc: false # 是否启用 DataChannel 备用传输 iceservers: [] # 公网直连场景可留空 服务器部署在 NAT/Docker 后时务必额外配置公网 IPpublicip: 1.2.3.4否则客户端无法建立 ICE 连接。第 2 步启动服务启动 Monibuca 后插件自动注册以下 HTTP 端点POST /webrtc/push/{streamPath}—— WHIP 推流POST /webrtc/play/{streamPath}—— WHEP 拉流GET /webrtc/test/{name}—— 内置测试页面第 3 步用测试页面验证浏览器打开以下地址即可验证整条链路页面地址用途推流/webrtc/test/publish摄像头麦克风 WHIP 推流拉流/webrtc/test/subscribe?streamPathlive/testWHEP 拉流播放屏幕共享/webrtc/test/screenshare桌面推流多路流/webrtc/test/batchv2单连接同时订阅多路流页面源码在 publish.html 与 subscribe.html可以直接抄作业。WHIP 推流实战一个 POST 请求搞定WHIPWebRTC-HTTP Ingestion Protocol把繁琐的信令压缩成一次 HTTP 往返客户端将 SDP Offer 以application/sdp格式 POST 到服务器服务器返回 SDP Answer随后自动交换 ICE 候选并开启 SRTP 媒体传输。浏览器端核心代码只有 10 行左右const pc new RTCPeerConnection(); const stream await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); stream.getTracks().forEach(t pc.addTrack(t, stream)); const offer await pc.createOffer(); await pc.setLocalDescription(offer); const res await fetch(/webrtc/push/live/myroom, { method: POST, headers: { Content-Type: application/sdp }, body: offer.sdp }); await pc.setRemoteDescription(new RTCSessionDescription({ type: answer, sdp: await res.text() }));拿到201 Created后画面就以毫秒级延迟进入 Monibuca 流媒体核心同一路流可被 RTMP、HLS、FLV 等所有下游协议消费——这正是WebRTC 入口 多协议分发架构的威力。服务端推流处理实现在 index.go 的servePush流路径支持?bearertoken参数做鉴权。WHEP 拉流实战浏览器低延迟播放WHEPWebRTC HTTP Egress Protocol与推流几乎镜像对称区别在于客户端要添加recvonly轨道并监听ontrack事件把远端流挂到video上const pc new RTCPeerConnection(); pc.ontrack e { video.srcObject e.streams[0]; video.play(); }; pc.addTransceiver(video, { direction: recvonly }); pc.addTransceiver(audio, { direction: recvonly }); const offer await pc.createOffer(); await pc.setLocalDescription(offer); const res await fetch(/webrtc/play/live/myroom, { method: POST, headers: { Content-Type: application/sdp }, body: offer.sdp }); await pc.setRemoteDescription(new RTCSessionDescription({ type: answer, sdp: await res.text() }));流不存在时服务器返回404可作为流是否就绪的探测手段。拉流端实现可参考 whep_client.goMonibuca 也能反过来作为 WHEP 客户端从外部服务器拉流。关键配置port、publicip 与 iceservers这三个参数决定了 WebRTC 连接能否打得穿网络1. port —— 传输协议选择port: tcp:9000 # TCPDocker/严格防火墙下最稳推荐 port: udp:9000 # UDP延迟更低 port: udp:10000-20000 # UDP 端口池每连接独立端口高并发首选2. publicip —— NAT 穿透的钥匙服务器位于 Docker 或内网时ICE 候选中只会带内网地址客户端永远连不进来。配置publicip后Monibuca 会通过 NAT 1:1 映射机制把公网 IP 写进 SDP Answer实现见 index.go 的initSettingEnginepublicip: 203.0.113.1 # 实际对外的公网 IPv4 publicipv6: 2001:db8::1 # 可选 IPv63. iceservers —— STUN/TURN 兜底公网直连场景可留空企业网、对称 NAT 建议配置 TURN 中继webrtc: iceservers: - urls: - stun:stun.l.google.com:19302 - urls: - turn:turn.example.com:3478 username: user credential: passwordDocker 部署推荐--network host模式彻底规避端口映射与 PublicIP 问题bridge 模式则需精确映射对应协议的端口如-p 9000:9000/udp。常见问题速查连不上先查这 5 处现象可能原因解决建议ICE 一直卡在 checkingNAT 后未配publicip配置正确公网 IP 或换 host 网络模式企业网/手机连不上对称 NAT 无法打洞部署 TURN 中继服务器兜底连接成功但无画面编码不被支持如 H.265开启enabledc: true走 DataChannel音频无声AAC 源流WebRTC 仅支持 Opus/PCMA/PCMU编码端改 Opus或启用 DataChannel跨域 fetch 被拦截前端与服务器不同源同源部署或配置 CORS更多细节连接状态监听、BatchV2 多路流、H.265 推流技巧完整收录在 plugin/webrtc/README_CN.md。总结把低延迟直播变成一次 POSTMonibuca 的 WebRTC 插件把 WHIP/WHEP 的标准能力做成了零信令开发体验配置 1 分钟webrtc段几个字段搞定端口与 NAT 设置验证 1 分钟内置测试页面点选即推即播集成 3 分钟10 行 JS 接入自己的业务依托 Monibuca 的插件化核心环缓冲、任务系统、发布订阅一路 WebRTC 低延迟直播流可以同时分发给 RTMP、HLS、FLV、GB28181 等协议用户是构建实时音视频业务的理想底座。【免费下载链接】monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibuca创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表