-
Notifications
You must be signed in to change notification settings - Fork 12
Streaming Guide
johnjiamzhong-project edited this page Jun 6, 2026
·
1 revision
RambosPlayer 支持四种推流协议,根据使用场景选择:
| 协议 | 端口 | 适用场景 | 需要外部服务器 |
|---|---|---|---|
| HTTP-MPEG-TS | 8090(内置) | 低延迟,局域网浏览器 | 否 |
| HTTP-FLV | 8080(内置) | 局域网浏览器,无需安装客户端 | 否 |
| SRT | 9000 | 局域网 VLC / ffplay 拉流 | 否 |
| RTMP | 自定义 | 推送到 SRS / B站 / Twitch | 是 |
延迟 ≤ 600ms,基于 GPU 重编码(libx264/h264_nvenc)+ mpegts.js 追帧模式。
将 mpegts.min.js 放到 RambosPlayer.exe 同目录。
- 打开视频文件并播放
- 菜单 → 推流 → 勾选 HTTP-MPEG-TS(低延迟),点确定
- 日志出现
MpegTsServer: listening on port 8090 - 同局域网设备用 Chrome/Edge 打开
http://192.168.x.x:8090/player.html
| 环节 | 延迟 |
|---|---|
| 关键帧等待(GOP=0.5s) | ≤ 500ms |
| GPU 编码 | 5–15ms/帧 |
| 网络传输(局域网) | ~10ms |
| mpegts.js 追帧缓冲 | ≤ 500ms |
| 合计 | ≤ 600ms |
Seek 后不断开客户端,MpegTsServer 通过 PTS remap 保持流连续性,浏览器无需刷新。
- 打开视频文件并播放
- 菜单 → 推流 → 勾选 HTTP-FLV(内置),端口默认 8080,点确定
- 日志出现
HttpFlvServer: listening port=8080 - 同局域网设备用 Chrome/Edge 打开
http://192.168.x.x:8080/player.html
首次运行可能弹防火墙提示,点"允许";或以管理员身份运行程序。
- 打开页面无声音是正常的(autoplay 策略),点右上角 🔊 点击开声音 即可
- 仅支持 H.264 编码的视频(MKV/MPEG-4 等格式需先转码)
- Seek 后浏览器可能冻结约 6 秒,等待新关键帧到达后自动恢复;或刷新页面
点对点协议,无需中继服务器,PC 直接监听端口。
推流 URL 填写: srt://:9000
# PC 本机回环验证
ffplay -fflags nobuffer -flags low_delay srt://127.0.0.1:9000
# 另一台设备(换成 PC 局域网 IP)
ffplay srt://192.168.x.x:9000
VLC:媒体 → 打开网络串流 → 填写 srt://192.168.x.x:9000
操作顺序:先在 RambosPlayer 点确定开始推流(PC 进入监听),再在客户端连接。
延迟参考
┌─────────────────────────┬──────────┐
│ 客户端 │ 典型延迟 │
├─────────────────────────┼──────────┤
│ ffplay -fflags nobuffer │ ~50ms │
├─────────────────────────┼──────────┤
│ VLC 默认 │ 1–2s │
└─────────────────────────┴──────────┘
---
RTMP(推送到 SRS / 直播平台)
需要外部 RTMP 服务器(SRS、nginx-rtmp 或直播平台推流地址)。
本地 SRS 测试
1. 下载并启动 SRS 5.0:
cd D:\srs
.\srs-live.bat
2. RambosPlayer 推流 URL 填写:
rtmp://127.0.0.1/live/livestream
3. 验证拉流:
ffplay -fflags nobuffer -flags low_delay rtmp://127.0.0.1/live/livestream
浏览器播放页:http://127.0.0.1:8080/players/srs_player.html
Seek 后浏览器冻结说明
Seek 时 RTMP 连接保持不中断,冻结是 flv.js 对时间戳不连续的保护性暂停,重新点 Play 即可恢复。用 ffplay 拉流可避免此问题。
---
常见问题
┌───────────────────────────┬───────────────────────────────┬────────────────────────────────────────────────┐
│ 现象 │ 原因 │ 处理 │
├───────────────────────────┼───────────────────────────────┼────────────────────────────────────────────────┤
│ 局域网设备无法访问 │ 防火墙阻止入站 │ 以管理员身份运行,或手动放行对应端口 │
├───────────────────────────┼───────────────────────────────┼────────────────────────────────────────────────┤
│ SRT 报 Protocol not found │ vcpkg FFmpeg 未编译 SRT │ vcpkg install ffmpeg[srt] --recurse 后重新构建 │
├───────────────────────────┼───────────────────────────────┼────────────────────────────────────────────────┤
│ HTTP-FLV 无声音 │ autoplay 策略 │ 点击页面右上角"🔊 点击开声音" │
├───────────────────────────┼───────────────────────────────┼────────────────────────────────────────────────┤
│ mpegts.js 播放页打不开 │ mpegts.min.js 不在 exe 同目录 │ 将该文件复制到 exe 旁边 │
└───────────────────────────┴───────────────────────────────┴────────────────────────────────────────────────┘
---