即使如此,也只能在局域网使用。如果想广域网使用,还得拆分。将 srs 服务端部署到广域网,局域网拉取其他 rtmp 流,推送到服务端。广域网才能使用。 项目需要,还得将这个直播功能在其他广域网 web 中使用。
现在更狠,要求服务端拉前端的流,还不告诉地址。还得让服务端通过前端广播的 udp 消息来确定拉流地址,然后进行推流处理。
修改后,代码结构如下:
pico rtmp 推流/
├── .env # 部署配置(Pico 地址 + CANDIDATE)
├── .gitignore ← 新增:忽略缓存/IDE/OS 残留
├── docker-compose.yaml # srs + puller + controller 三服务
├── index.html # H5 播放页
├── srs.conf # SRS 配置
└── src/controller/
├── controller.py # UDP 监听 + 健康检查 + 写共享地址
├── puller-wrapper.sh # 监控地址变化、重启 ffmpeg
├── start-controller.ps1 # 原生启动脚本(备用)
└── test-broadcast.py # 广播模拟测试工具
现在是客户端不推流到服务端,反而是服务端拉取客户端的流,再分发出去。
上边这个链接客户端推流模式,这个简单,实用。但有时候,却说推不了流,只能被动拉流。 这个会增加复杂度,使用范围变成了局域网。
开始
文件目录:
├── .env # 配置文件
├── srs.conf # SRS 5.x:RTMP 接流 + HLS/HTTP-FLV/WebRTC 三协议输出
├── docker-compose.yaml # 一键启动,CANDIDATE 环境变量注入 WebRTC 候选 IP
└── index.html # H5 播放页:WebRTC 优先 → HLS 兜底,断线自动重试
客户端向服务端推流,前端 h5 播放流。
SRS(Simple Realtime Server)是一个简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。Oryx是一个一体化、开箱即用、开源的视频解决方案,可部署在云上或自建机房,以直播和WebRTC等能力赋能你的业务。
