# 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. 运行服务端 ```bash cd backend go run cmd/server/main.go ``` 服务端将同时启动: - **API 服务**: `http://localhost:8080` - **RTMP 服务**: `rtmp://localhost:1935` ### 3. 测试推流 1. 调用 `/api/register` 注册账号。 2. 调用 `/api/login` 获取 Token。 3. 调用 `/api/room/my` 获取你的 `stream_key`。 4. 在 OBS 中设置服务器为 `rtmp://localhost:1935/live`,推流码填入你的 `stream_key`。 5. 使用 VLC 播放 `rtmp://localhost:1935/live/{your_room_id}` 观看直播。 ## 📅 开发路线图 (Roadmap) - [x] **Phase 1**: 基础 RTMP 推拉流功能实现。 - [x] **Phase 2**: 数据库集成、用户鉴权与推流密钥校验。 - [ ] **Phase 3**: Flutter 客户端基础架构与直播列表展示。 - [ ] **Phase 4**: 实时评论系统 (WebSocket) 与弹幕功能。 - [ ] **Phase 5**: 客户端原生推流支持与 UI/UX 优化。 ## 📜 许可证 本项目采用 MIT 许可证开源。