Hightube - 开源跨平台个人直播平台
Hightube 是一个为网络应用开发课程设计的开源直播平台大作业。它支持用户注册登录、拥有个人专属直播间、推流鉴权以及多端同步观看功能。
🚀 项目特性
- 跨平台支持: 基于 Flutter 实现,支持 Windows, Linux, Android 和 Web。
- 高性能后端: 使用 Go 语言编写,利用 Goroutine 处理高并发流媒体连接。
- 推拉流分离:
- 主播使用私密
Stream Key进行 RTMP 推流。 - 观众通过公开
Room ID进行拉流观看,保护主播隐私。
- 主播使用私密
- 轻量级存储: 使用 SQLite 数据库,无需复杂的环境配置。
- 安全鉴权: 基于 JWT (JSON Web Token) 的用户认证系统。
🏗 项目架构
项目采用前后端分离的工程结构:
/backend: Go 实现的流媒体服务器与业务 API。/frontend: Flutter 实现的跨平台客户端。/docs: 项目设计文档与开发进度记录。
技术栈
| 模块 | 技术选型 |
|---|---|
| 前端 | Flutter (Dart) |
| 后端 | Go (Golang), Gin, GORM |
| 流媒体 | RTMP 协议 (基于 joy4 库) |
| 数据库 | SQLite |
| 认证 | JWT, Bcrypt |
🛠 快速开始 (后端)
1. 环境准备
- Go 1.20+
- 如果你在受限网络环境下,请确保配置好代理。
2. 运行服务端
cd backend
go run cmd/server/main.go
服务端将同时启动:
- API 服务:
http://localhost:8080 - RTMP 服务:
rtmp://localhost:1935
3. 测试推流
- 调用
/api/register注册账号。 - 调用
/api/login获取 Token。 - 调用
/api/room/my获取你的stream_key。 - 在 OBS 中设置服务器为
rtmp://localhost:1935/live,推流码填入你的stream_key。 - 使用 VLC 播放
rtmp://localhost:1935/live/{your_room_id}观看直播。
📅 开发路线图 (Roadmap)
- Phase 1: 基础 RTMP 推拉流功能实现。
- Phase 2: 数据库集成、用户鉴权与推流密钥校验。
- Phase 3: Flutter 客户端基础架构与直播列表展示。
- Phase 4: 实时评论系统 (WebSocket) 与弹幕功能。
- Phase 5: 客户端原生推流支持与 UI/UX 优化。
📜 许可证
本项目采用 MIT 许可证开源。
Description
Languages
Dart
39.6%
C++
24%
CMake
17.7%
Go
17.5%
C
1.1%
Other
0.1%