StreamerHelper 是一个功能强大的直播录制自动化系统,支持多个主流直播平台:
- 🎥 多平台支持 - 支持 B站直播、虎牙、斗鱼三大平台
- 🔄 自动录制 - 检测到开播自动开始录制,支持断线重连
- 📦 智能分片 - 自动将录制内容分片存储,便于管理和上传
- ⬆️ 自动上传 - 录制完成后自动上传到对象存储
- 📝 B站投稿 - 支持一键投稿到B站,自动填写视频信息
- 🎛️ Web管理 - 直观的Web界面,管理主播、任务和内容
- 📊 系统监控 - 实时查看录制状态、队列情况和系统资源
- 🗄️ 数据持久化 - PostgreSQL存储所有录制记录和主播信息
- Node.js >= 16.0.0
- Docker & Docker Compose
- pnpm (推荐) 或 npm
# 克隆仓库
git clone https://github.com/StreamerHelper/infra StreamerHelper/infra
cd StreamerHelper/infra
# 安装依赖并初始化配置
npm install
./bin/configure init
# 启动所有服务
./bin/control up服务启动后访问:
- Web界面: http://localhost
- Bull Board: http://localhost/ui
- MinIO控制台: http://localhost:9001
如果你想自己部署各个组件,请参考各子仓库:
- infra - Docker部署配置
- web-server - 后端服务
- web - 前端界面
# 1. 启动基础设施(数据库、缓存、存储)
cd infra && ./bin/control infra up
# 2. 运行数据库迁移
./bin/control migrate
# 3. 启动应用服务
./bin/control app up配置文件位于 ~/.streamer-helper/settings.json,主要包含:
| 配置项 | 说明 |
|---|---|
app.keys |
应用加密密钥 |
database |
PostgreSQL 连接信息 |
redis |
Redis 连接信息 |
s3 |
对象存储配置(MinIO/S3) |
recorder.segmentDuration |
录制分片时长(秒) |
poller.checkInterval |
开播检测间隔(秒) |
# 构建镜像
./build-and-push.sh v2.0.0
# 使用生产配置启动
docker-compose -f docker-compose.app.yml up -d ┌─────────────┐
│ Nginx │ :80/:443
│ (反向代理) │
└──────┬──────┘
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Frontend │ │ Backend │ │ Bull │
│(Next.js) │ │(MidwayJS)│ │ Board │
│ :3000 │ │ :7001 │ │ /ui/ │
└──────────┘ └────┬─────┘ └──────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│PostgreSQL│ │ Redis │ │ MinIO │
│ :5432 │ │ :6379 │ │:9000/9001│
└──────────┘ └──────────┘ └──────────┘
- 开播检测 - 定期检查主播是否开播
- 自动录制 - 检测到开播后自动开始录制
- 分片存储 - 录制内容按设定时长分片上传到对象存储
- 自动处理 - 录制结束后进行视频处理
- B站投稿 - 支持手动或自动投稿到B站
| 组件 | 技术 |
|---|---|
| 前端 | Next.js 16, React 19, Tailwind CSS |
| 后端 | MidwayJS 3, Koa, TypeORM |
| 数据库 | PostgreSQL |
| 缓存 | Redis, BullMQ |
| 存储 | MinIO (S3兼容) |
| 反向代理 | Nginx |
StreamerHelper/
├── infra/ # Docker部署配置和管理工具
│ ├── bin/ # 配置和管理脚本
│ ├── nginx/ # Nginx配置
│ └── docker-*.yml # Docker Compose文件
├── web-server/ # 后端服务 (MidwayJS)
│ ├── src/
│ │ ├── controller/ # API控制器
│ │ ├── service/ # 业务逻辑
│ │ ├── entity/ # 数据模型
│ │ └── processor/ # 任务处理器
│ └── package.json
└── web/ # 前端界面 (Next.js)
├── app/ # 页面路由
├── components/ # UI组件
└── package.json
我们欢迎所有形式的贡献!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 后端遵循 mwts 规范
- 前端使用 ESLint + Prettier
- 提交信息遵循 Conventional Commits
本项目基于 MIT License 开源。
感谢所有为本项目做出贡献的开发者!
- GitHub Issues: https://github.com/StreamerHelper/StreamerHelper/issues
- Discussions: https://github.com/StreamerHelper/StreamerHelper/discussions
Built with ❤️ by the StreamerHelper community
