diff --git a/presentation.md b/presentation.md index 5e947d4..4616966 100644 --- a/presentation.md +++ b/presentation.md @@ -4,7 +4,7 @@ theme: default size: 16:9 paginate: true header: "Hightube 开源跨平台个人直播平台最终汇报" -footer: "Highground-Soft | 最终汇报 (v1.0.0-Release) | 2026.06.27" +footer: "Highground-Soft | 验收汇报 (v1.0.1-Release) | 2026.06.29" style: | :root { --ink: #0f172a; @@ -129,14 +129,14 @@ style: |
已实现从高并发流引擎、后端性能优化到多端自适应拉流与公网部署的完整闭环。
- OBS / 移动端推流 → RTMP Server → FFmpeg 转码管线 → Go 业务后端 → Flutter / Web 播放端 -
+| 推流监听 | RTMP 协议 (端口 1935) |
| 推流监听 | RTMP 协议 (端口 1935) |
| 流鉴权 | URL 路径 stream_key 数据库实时匹配 |
| 转码引擎 | FFmpeg 子进程异步管线 (原始/720p/480p) |
| Web 分发 | HTTP-FLV (低延迟 chunked 长连接) |
| Web 框架 | Gin — 路由控制、CORS 过滤、健康监测 |
| Web 框架 | Gin — 路由控制、CORS 过滤、健康监测 | ||
| ORM / 数据库 | GORM + SQLite (嵌入式轻量级持久化) | ||
| 安全体系 | JWT 访问令牌 + Bcrypt 密码单向哈希 | ||
| 互动接口 | Gorilla WebSocket Hub 模式弹幕服务器 |
| 并发客户端数 | 普通模式 | WAL 调优模式 | 提升幅度 |
|---|---|---|---|
| 1 客户端 | 85 tps | 125 tps | + 47.1% |
| 5 并发 | 18 tps | 240 tps | + 1,233.3% |
| 10 并发 | 9 tps (大量超时) | 380 tps | + 4,122.2% |
| 10 并发 | 9 tps (超时) | 380 tps | + 4,122.2% |
* WAL 配合同步 NORMAL 与内存 temp_store,彻底消除了写锁定错误。
+* WAL 配合同步 NORMAL 与内存 temp_store,彻底消除锁表冲突。
| 测试链路 | 追帧关闭 | 追帧开启 | 分析结论 |
|---|---|---|---|
| 同网直连 RTMP | 800 ms | 800 ms | 局域网直连物理延迟极低 |
| 公网 FRP RTMP | 1250 ms | 1250 ms | 穿透引入约 450ms 网络延迟 |
| Web HTTP-FLV | 2600 ms | 1650 ms | 追帧开启后降低 1 秒延迟 |
| 网络抖动积压 | 6200 ms | 1700 ms | 15秒内快速收敛至正常水平 |
| 同网直连 RTMP | 800 ms | 800 ms | 局域网物理延迟极低 |
| 公网 FRP RTMP | 1250 ms | 1250 ms | 中转引入约 450ms 开销 |
| Web HTTP-FLV | 2600 ms | 1650 ms | 算法介入后降低约 1 秒 |
| 网络抖动积压 | 6200 ms | 1700 ms | 15秒内快速平滑收敛 |
+
利用 FRP 内网穿透 与 Caddy 反向代理,实现零公网 IP 本地服务器的公网安全暴露。
+利用 FRP 内网穿透 与 Caddy 反向代理,实现零公网 IP 本地服务器的公网安全暴露。
--- -# 公网部署方案:隧道穿透与反向代理 (重点) +# 公网部署方案:隧道穿透与反向代理HtmlElementView 动态注册 iframe 播放页面 flv_player.html。flv.min.js 本地化部署到项目内,摆脱对外部 CDN 网络连通性的依赖。postMessage 通道,实现 Flutter 主框架到 iframe 播放页面的跨域音量/状态控制。video 元素的 timeupdate 事件,实时计算当前缓冲区延迟。video.currentTime = end - 1.0。
- 图1:Web 浏览器平台主页(活跃房间列表)
+ 展示活跃直播间列表与 12s 定期封面图轮询
- 图2:OBS 直播推送与 Web 端低延迟拉流及实时弹幕互动
-
- 图3:自研后端管理控制台及系统健康指标
-
- 图4:Android 手机客户端直播与聊天室界面
+ flv.js 自适应追帧播放与 WebSocket 弹幕互动
+ 实时监控系统健康指标、当前并发数与 SSE 异步日志流
+
+ Flutter 自绘引擎渲染与低延迟硬解拉流
+gofmt;Flutter 引入 analysis_options.yaml 开启严苛的静态类型检查与垃圾变量扫描。gofmt 格式化;前端配置严格 analysis_options.yaml 检查。| 成员 | 职责与主要交付成果 | ||
|---|---|---|---|
| 程景愉 | 后端框架搭建、流媒体解封装、FFmpeg 实时转码通道 | ||
| 舒钰权 | RESTful 业务逻辑编写、JWT Token 中间件与用户系统 | ||
| 李俊友 | Flutter 原生播放器对接、WebSocket 实时聊天室、弹幕渲染 | ||
| 张钊源\n(本人) | 流媒体底座与推流鉴权、Web 端嵌入式 flv.js 播放器与自适应追帧、公网 FRP + Caddy 反向隧道部署 |
| 成员 | +核心职责与主要交付成果 | +
|---|---|
| 程景愉 (本人) |
+ 项目总体管理,前后端核心基础版本设计开发,系统公网隧道穿透与Caddy反向代理分布式部署。 | +
| 舒钰权 | +用户登录与个人设置界面开发, 基于 WebSocket 的直播聊天室与弹幕引擎开发,前端弹幕浮层与裁剪区域优化。 | +
| 张钊源 | +后端管理面板、服务器运行状态监控(Metrics)、日志收集与历史审计功能等功能开发。 | +
| 李俊友 | +后端核心流媒体与业务API架构设计及实现、前端音视频播放与Web适配, 项目介绍网站设计部署。 | +
| 挑战 | +问题描述 | +最终解决方案 | +结果 | +
|---|---|---|---|
| 推流安全 | +RTMP 默认无校验,极易被恶意盗播 | +路径剥离 stream_key 并引入数据库实时鉴权拦截 |
+ ✅ | +
| 僵尸转码进程 | +直播中断后后台 FFmpeg 挂载无法回收 | +树状 context.Context 传导 + 资源 defer cancel() |
+ ✅ | +
| Web 直连失败 | +浏览器沙箱环境不支持 RTMP 协议 | +引入 HTTP-FLV 分块传输流,Web 侧调用 flv.js 解码 |
+ ✅ | +
| 缓存延迟累积 | +浏览器播放器积压缓冲,延迟越来越高 | +编写基于 timeupdate 的 1.15x 倍速追帧及强跳帧算法 |
+ ✅ | +
| 轻量数据库锁死 | +大量弹幕持久化写入引发 SQLite 独占锁 | +开启 WAL 日志模式,调优 synchronous、temp_store |
+ ✅ | +
| 公网资源发布 | +本地测试机处于内网且无公网 IP | +建立 FRP 穿透,配合公网 Caddy 证书自动化路由 | +✅ | +
Hightube — 开源跨平台个人直播系统项目最终汇报
欢迎老师指正,Q & A
+项目介绍地址:https://hightube.nudt.space
公网体验地址:https://stream.nudt.space
-开源地址:https://github.com/Highground-Soft/Hightube
+开源仓库地址:https://github.com/Highground-Soft/Hightube