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. 测试推流

  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)

  • Phase 1: 基础 RTMP 推拉流功能实现。
  • Phase 2: 数据库集成、用户鉴权与推流密钥校验。
  • Phase 3: Flutter 客户端基础架构与直播列表展示。
  • Phase 4: 实时评论系统 (WebSocket) 与弹幕功能。
  • Phase 5: 客户端原生推流支持与 UI/UX 优化。

📜 许可证

本项目采用 MIT 许可证开源。

Description
开源跨平台个人直播平台
Readme 145 KiB
Languages
Dart 39.6%
C++ 24%
CMake 17.7%
Go 17.5%
C 1.1%
Other 0.1%