抖音直播弹幕互动游戏
目录
最近一直在研究抖音直播,因为平时没有多少空余时间,于是想着做一个无人直播的弹幕互动给游戏来直播,没想到效果还不错。
这是一个知识问答类的抖音直播弹幕互动游戏。观众在直播间弹幕中打出 ABCD 参与答题,答对累积积分提升段位。通过点赞排除错误选项、送礼直接通关等互动机制,引导观众互动消费。支持无人值守的自动语音播报。

因为直播的时候很多观众问我这个怎么实现的,所以我把这个游戏打包挂在闲鱼上了。
闲鱼分发包说明
这是优化版本的可运行分发包。Windows 用户直接双击 douyin_quiz_server.exe,浏览器访问 http://localhost:8080。
本包中包含了游戏文件、题库文件、配置文件以及弹幕服务。douyinLive-v2.0.24 与 WssBarrageServer 外部弹幕服务已随包提供:不开直播测试时,可将 configs/config.yaml 中的 barrage.mode 改为 mock;接入真实直播时,请另行准备外部弹幕服务并按下文配置。
快速开始(使用预编译二进制)
这是给没有编程环境的用户准备的。只需要下载一个文件夹,双击就能运行。
下载与运行
分发目录结构(拿到手就是这样的):
douyin_quiz_game/
├── douyin_quiz_server.exe ← Windows 可执行文件(双击运行)
├── douyin_quiz_tool.exe ← AI生成题库工具(双击运行)
├── douyin_quiz_merge.exe ← 题库合并工具(双击运行)
├── start_danmu.bat ← 一键启动弹幕服务(双击运行)
├── configs/
│ ├── douyin_gifts_under_100.json ← 抖音礼物清单
│ └── config.yaml ← 配置文件(用记事本改)
├── question_bank/
│ ├── test.json ← 测试题库
│ ├── 题库.json ← 默认题库
│ └── ... ← 用工具生成的其他题库
├── static/dist/ ← 前端界面(不要动)
├── douyinLive-v2.0.24/ ← 主弹幕服务及其独立配置
├── WssBarrageServer/ ← 备用弹幕服务
├── data/ ← 运行后自动生成(用户数据)
├── audio_cache/ ← 运行后自动生成(语音缓存)
└── README.md
Windows 一键运行
- 打开
弹幕知识王文件夹 - 真实直播先进入
douyinLive-v2.0.24,按需在config.yaml填 Cookie

- 打开
.\configs\config.yaml填写直播间的 roomid (其他配置不用修改,后续可以自定义)

- 双击
start_danmu.bat启动弹幕服务 - 双击
douyin_quiz_server.exe - 看到如下输出即启动成功:
弹幕知识王服务已启动,访问 http://localhost:18080
题库已加载: 历史, 共 50 题
[GameEngine] 游戏引擎已启动
⚠️ 如果杀毒软件拦截,请在杀毒软件中添加信任。这是正常的,因为程序会连接网络进行语音合成。
OBS 配置游戏画面
不要用浏览器打开页面后再用 OBS 窗口采集! 游戏界面是 1080×1920 竖屏设计,在横屏显示器上缩放会严重降低画质。
正确做法是让 OBS 直接渲染竖屏页面,无需经过显示器缩放。
在 OBS Studio 中操作:
- 在 OBS 的场景中,点击「来源」框下方的 + 按钮
- 选择 浏览器
- 在弹窗中填写:
- URL:
http://localhost:18080 - 宽度:
1080 - 高度:
1920 - 自定义 CSS:
rgba(0, 0, 0, 255)
- URL:
- 点击确定后,OBS 中即可看到完整的竖屏游戏画面
- 右键点击该浏览器源 → 「互动」 可以实时调试(可选)

✅ OBS 浏览器源会在内部以 1080×1920 分辨率渲染,不经过显示器缩放,画质无损。
推流到抖音直播(关键步骤)
OBS 画面不能直接推送到抖音,需要通过「虚拟摄像头」桥接到抖音直播伴侣。完整链路:
OBS → 浏览器源(游戏画面)→ 虚拟摄像头 → 抖音直播伴侣 → 推送到抖音
1️⃣ 启动 OBS 虚拟摄像头
OBS Studio 30.0 以上版本已内置虚拟摄像头:
- 菜单栏 → 工具 → 虚拟摄像头
- 点击 启动
- 记住摄像头名称:
OBS Virtual Camera
如果用的是旧版本 OBS,需要先安装
obs-virtualcam插件。

2️⃣ 在抖音直播伴侣中接入
- 打开 抖音直播伴侣
- 添加来源 → 摄像头
- 设备选择
OBS Virtual Camera - 画面比例选择 竖屏 9:16
- 调整画面位置,使游戏界面填满直播画面
3️⃣ 开始直播
- 确认 OBS 中游戏画面正常运行
- 在抖音直播伴侣中点击 开始直播
- 选择 竖屏模式
- 观众即可看到游戏画面
💡 如果你还需要真人出镜:可以在 OBS 中先搭建好场景(游戏画面 + 摄像头人像 + 字幕等),再通过虚拟摄像头整体输出到抖音直播伴侣。
4️⃣ 同时启动弹幕捕获
游戏画面推流后,还需要让程序收到真实弹幕才能互动。推荐顺序是:
- 双击
start_danmu.bat启动弹幕服务 - 最后启动游戏服务;
auto会先用 douyinLive,连续失败后回退到 WSS
详细配置见下方的「关于弹幕捕获」章节。
测试模式(不开直播也能用)
不开直播时,将 configs/config.yaml 的 barrage.mode 改为 mock,即可看到模拟弹幕、点赞和礼物。仓库配置默认使用 auto 接入真实服务。
后续整体启动顺序
- 打开直播伴侣
- 打开 OBS ,启动虚拟摄像头
- 双击
start_danmu.bat - 双击
douyin_quiz_server.exe - 开始直播
界面说明
游戏界面为 1080×1920 竖屏布局,从上到下依次为:

游戏规则
答题
- 观众在直播间弹幕中发送
A、B、C、D即可参与答题(大小写都可以) - 也支持"选 A"、“A."、“a” 等形式,系统会自动识别
- 每人每题首次作答有效,不能改答案
- 每题答题时间 60 秒(可在配置中修改)
段位(按累计答对题数)
| 段位 | 需要答对题数 |
|---|---|
| 🟫 新手 | 0 |
| ⚪ 学徒 | 5 |
| 🟢 达人 | 15 |
| 🔵 专家 | 30 |
| 🟣 大师 | 50 |
| 🟡 宗师 | 80 |
| 🔴 知识王 | 120 |
点赞效果(每题独立计数)
| 点赞数 | 效果 |
|---|---|
| 500 赞 | 随机排除一个错误选项 |
| 1000 赞 | 增加答题时间 +10 秒 |
送礼效果
| 礼物价值 | 效果 |
|---|---|
| ≤10 抖币(小心心、玫瑰、爱心、棒棒糖、鲜花等) | 送礼者该题直接答对 |
| >10 抖币(加油鸭、快乐水、墨镜、跑车等) | 直接通关结束本题,送礼者获胜 |
抖音礼物与抖币价格对照:1 抖币 ≈ 0.1 元人民币
AI 题库生成工具
项目附带一个 AI 题库生成工具,只需输入主题,即可自动调用 AI 生成成百上千道高质量中文知识问答题,无需手动编写 JSON。
准备工作
注册 DeepSeek 账号并获取 API Key
- 打开 https://platform.deepseek.com/api_keys
- 登录后点击"创建 API key”,复制保存
设置环境变量(只需设置一次)
Windows 命令提示符:
set DEEPSEEK_API_KEY=sk-你的keyWindows PowerShell:
$env:DEEPSEEK_API_KEY="sk-你的key"
运行工具
双击 douyin_quiz_tool.exe
交互式使用
运行后按提示操作即可:
🎯 弹幕知识王 - 题库生成工具
═══════════════════════════════════
请输入题目主题 (回车默认 "常识"):
> 科学 ← 输入想要的主题
请输入题目数量 (回车默认 500):
> ← 回车使用默认值
═══════════════════════════════════
[1/10] 正在生成第 1 批 (50题)... ✅ 获得 49 题
[2/10] 正在生成第 2 批 (50题)... ✅ 获得 50 题
...
═══════════════════════════════════
✅ 已保存: question_bank/科学.json
按回车键退出...
生成的题库文件在 question_bank/ 目录下,文件名就是主题名(如 科学.json)。
生成的文件怎么用
将生成的
.json文件放到question_bank/目录下修改
configs/config.yaml中的question_bank_path指向新文件:question_bank_path: ./question_bank/科学.json重启服务后生效
小技巧
- 每次生成的题都不相同,可以反复生成多个版本
- 支持生成任意主题:常识、科学、历史、地理、文学、体育、娱乐……
- 生成 500 题大约需要 1~2 分钟,费用不到 0.1 元
- 最后将生成的不同主题题库,通过
douyin_quiz_merge.exe工具合并为一个大题库
如何配置
所有配置都在 configs/config.yaml 文件中,用记事本打开即可修改。
也可以在启动游戏后,访问 http://localhost:18080/config,通过可视化图形界面进行配置。

基本配置
server:
port: 8080 # 服务端口,一般不用改
static_dir: ./static/dist # 前端文件目录
游戏配置
game:
countdown_seconds: 30 # 每题答题时间(秒)
reveal_seconds: 5 # 答案展示时间(秒)
break_seconds: 3 # 题间休息时间(秒)
弹幕捕获配置
barrage:
mode: auto # auto | wss | douyinlive | mock
retry_interval_seconds: 5
primary_connect_attempts: 3
douyinlive:
base_url: ws://127.0.0.1:1088
room_id: "813530927246"
connect_timeout_seconds: 10
heartbeat_interval_seconds: 30
read_timeout_seconds: 90
wss:
url: ws://127.0.0.1:8888
connect_timeout_seconds: 10
auto 在所有系统上均以外部 douyinLive 为主源;主源会话连续失败达到 primary_connect_attempts 后才连接 WssBarrageServer。备用源退出后,管理器等待 retry_interval_seconds,再从主源开始新一轮。显式 douyinlive 或 wss 模式只重试所选服务,不会静默换源。
Cookie 和签名不再属于游戏 YAML,也不会通过 /api/config 暴露。需要登录态或完整礼物事件时,只编辑 douyinLive-v2.0.24/config.example.yaml 的 cookie.douyin 或对应 cookie.rooms,并避免提交真实凭据。
语音播报配置
tts:
enabled: true # 是否启用语音播报
voice: zh-CN-XiaoxiaoNeural # 声音(晓晓,推荐)
rate: "+0%" # 语速(可调为"+20%"加快)
cleanup_interval: 30 # 音频缓存清理间隔(分钟)
cache_max_age: 60 # 缓存文件保留时间(分钟)
关于题库
题库文件位于 question_bank/ 目录下,默认使用 题库.json。
格式说明
{
"category": "历史",
"results": [
{
"type": "multiple",
"difficulty": "easy",
"category": "History",
"question": "题目内容?",
"correct_answer": "正确答案",
"incorrect_answers": ["错误答案1", "错误答案2", "错误答案3"]
}
]
}
难度说明
easy:简单(系数 ×1.0)medium:中等(系数 ×1.5)hard:困难(系数 ×2.0)
如何添加新题目
- 用记事本打开
question_bank/题库.json - 按上面的格式在
results数组中添加新题目 - 保存文件
- 重启服务后生效
- 你也可以创建多个题库文件(如
历史.json、科学.json),在配置中修改路径即可
💡 推荐使用 AI 题库生成工具(见上方说明),输入主题即可自动生成,比手动编写快得多。
关于弹幕捕获
游戏进程不再内嵌抖音协议库,也不会启动或停止外部可执行文件。它只连接本地 WebSocket,并把 douyinLive 的 method JSON 或 WSS 的数字类型 JSON 归一化为相同的游戏消息。任一时刻只有一个真实来源能够分发,避免切换时重复计分。
启动弹幕服务可以双击 start_danmu.bat 来一键启动两个弹幕服务:douyinLive v 2.0.24 和 WssBarrageServer. exe
- 主源:douyinLive v 2.0.24 外部服务
优点:稳定
缺点:需要填入 cookie 才能获取到礼物信息
- 备用源:WssBarrageServer. exe
优点:不需要登录 Cookie 就能收到所有弹幕消息(包括礼物)
缺点:长时间直播可能出现问题
常见问题
Q: 启动后浏览器访问 http://localhost:18080 显示空白或"前端未构建"
A: 需要在 web/ 目录下先构建前端:
cd web
npm install
npm run build
cd ..
然后重启服务。
Q: 如何测试?我没有开直播也能用吗?
A: 可以。在配置文件中将 barrage.mode 改为 mock(模拟模式),程序会自动生成模拟的弹幕、点赞和送礼数据,不需要真实直播环境。适合开发测试。
Q: 语音播报没有声音?
A: 语音合成需要网络连接(调用微软 Edge TTS 在线服务)。检查:
tts.enabled是否为true- 电脑是否能正常访问互联网
- 浏览器是否允许自动播放音频(浏览器地址栏左侧有锁/信息图标,确认音频权限为允许)
Q: 每道题时间太短/太长?
A: 修改 configs/config.yaml 中的 game.countdown_seconds 值,保存后重启服务。
Q: 题库里的题目用完了怎么办?
A: 题目是随机抽取的,每次抽题会从题库中随机选一道,用完也可以重复使用。也可以按上面"如何添加新题目"的方法持续扩充题库。
Q: 端口被占用怎么办?
A: 修改 configs/config.yaml 中的 server.port 值,如改为 8081,然后重启服务。浏览器访问时使用新的端口号。
Q: WssBarrageServer. exe 被杀毒软件拦截?
A: 这是正常的,因为弹幕抓取工具会设置系统代理。请在杀毒软件中添加信任/白名单。