自托管的直播录制、媒体处理与 B 站投稿流水线。
快速开始 · 能力范围 · 系统架构 · 运维 · 部署文档
StreamerHelper 持续检查配置的直播间,在开播后创建录制任务,并通过队列完成分片存储、转写、媒体处理和投稿。系统由 Web 控制台、后端任务服务、浏览器自动化运行时以及 PostgreSQL、Redis、MinIO 组成。
直播平台 -> 开播检测 -> 录制与分片 -> 对象存储 -> 转写/处理 -> B 站投稿
| 领域 | 当前能力 |
|---|---|
| 直播源 | B 站、虎牙、斗鱼、抖音 |
| 录制 | 自动开播检测、分片录制、断线恢复、任务状态追踪 |
| 存储 | S3 兼容对象存储、MinIO 内置部署、受投稿状态保护的自动清理 |
| 媒体处理 | FFmpeg 合并与转码、弹幕归档、阿里云 ASR、字幕烧录 |
| 投稿 | B 站自动投稿、分 P、合集、投稿恢复与状态追踪 |
| 认证 | B 站扫码登录、抖音浏览器登录与二次验证代理 |
| 运维 | Web 控制台、BullMQ 队列、健康检查、结构化日志、Server酱通知 |
投稿目标目前仅为 B 站。不同直播平台的可用画质和鉴权要求由平台接口决定。
| 依赖 | 最低要求 |
|---|---|
| Docker Engine | 20.10 |
| Docker Compose | v2 |
| Node.js | 18 |
| jq | 任意受支持版本 |
| 可用内存 | 4 GB |
git clone https://github.com/StreamerHelper/infra.git
cd infra
npm ci
./bin/configure init
./bin/control upconfigure init 会生成本地配置;control up 会启动基础设施、执行数据库迁移并启动应用服务。
| 服务 | 默认地址 |
|---|---|
| Web 控制台 | http://localhost:7080 |
| 队列管理 | http://localhost:7080/ui |
| MinIO 控制台 | http://localhost:7091 |
首次启动后,在 Web 控制台中配置主播、录制策略、平台登录和投稿参数。
运行时配置保存在:
~/.streamer-helper/settings.json
使用配置工具查看或修改:
./bin/configure show
./bin/configure editshow 会隐藏密码和密钥。修改配置后,重新启动应用服务:
./bin/control app down
./bin/control app up完整配置项、端口覆盖和外部 S3 接入方式见 部署文档。
flowchart LR
User["Browser"] --> Nginx
Nginx --> Web["Web / Next.js"]
Nginx --> Backend["Backend / MidwayJS"]
Backend --> PostgreSQL
Backend --> Redis["Redis / BullMQ"]
Backend --> MinIO["MinIO / S3"]
Backend --> Browser["Browser Runtime"]
Backend --> Platforms["Live Platforms"]
Backend --> Bilibili["Bilibili Submission"]
| 组件 | 职责 |
|---|---|
web |
管理主播、任务、内容、投稿和系统设置 |
web-server |
平台适配、录制生命周期、队列处理和 API |
browser |
抖音 Web 登录与二次验证所需的隔离浏览器 |
| PostgreSQL | 主播、任务、凭据和投稿状态 |
| Redis / BullMQ | 轮询、录制、转写、上传和清理队列 |
| MinIO / S3 | 视频分片、弹幕、转写结果和封面 |
| Nginx | Web、API 和队列管理入口 |
# 服务状态
./bin/control status
# 后端日志
./bin/control logs backend
# 更新应用镜像并执行迁移
./bin/control update app
# 停止应用,保留数据库和对象存储
./bin/control app down数据库、对象存储和配置文件需要分别备份。备份与恢复命令见 数据备份。
| 仓库 | 内容 |
|---|---|
| StreamerHelper/infra | Docker Compose、配置工具、部署和升级 |
| StreamerHelper/web-server | 后端 API、任务处理器和平台适配器 |
| StreamerHelper/web | Next.js 管理控制台 |
| StreamerHelper/StreamerHelper | 项目入口、Issue、贡献与安全策略 |
开发环境需要分别检出 infra、web-server 和 web:
# 基础设施
cd infra
./bin/control infra up
# 后端
cd ../web-server
npm ci
npm run dev
# 前端
cd ../web
pnpm install
pnpm dev提交代码前运行对应仓库的构建、测试和 lint。具体约定见 CONTRIBUTING.md。
settings.json、平台 Cookie、API Key、数据库和对象存储凭据均属于敏感信息:
- 不要提交运行时配置或登录凭据。
- 不要将管理端口直接暴露到公网。
- 生产部署应配置 HTTPS、访问控制和定期备份。
- 安全漏洞请按 SECURITY.md 私下报告,不要创建公开 Issue。