Files
Hightube/README.md
2026-06-27 14:38:00 +08:00

73 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`
最新版本服务端已经支持命令行参数修改指定端口,例如`-api-port 8081 -rtmp-port 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**: 数据库集成、用户鉴权与推流密钥校验。
- [x] **Phase 3**: Flutter 客户端基础架构与直播列表展示。
- [x] **Phase 4**: 实时评论系统 (WebSocket) 与弹幕功能。
- [x] **Phase 5**: 客户端原生推流支持与 UI/UX 优化。
## 测试说明
[Hightube项目网站](https://hightube.nudt.space)
我们提供[在线试用](https://stream.nudt.space)以及release里预构建的多种客户端和服务端发行试用时可在设置处将服务器地址设置为`https://stream.nudt.space`
## 📜 许可证
本项目采用 MIT 许可证开源。