抖音直播弹幕互动游戏

标签: #技术 #生活 #直播 #游戏
发布于: 2026-08-18
目录

最近一直在研究抖音直播,因为平时没有多少空余时间,于是想着做一个无人直播的弹幕互动给游戏来直播,没想到效果还不错。

这是一个知识问答类的抖音直播弹幕互动游戏。观众在直播间弹幕中打出 ABCD 参与答题,答对累积积分提升段位。通过点赞排除错误选项、送礼直接通关等互动机制,引导观众互动消费。支持无人值守的自动语音播报。

image-20260807122407669.png

因为直播的时候很多观众问我这个怎么实现的,所以我把这个游戏打包挂在闲鱼上了。

闲鱼分发包说明

这是优化版本的可运行分发包。Windows 用户直接双击 douyin_quiz_server.exe,浏览器访问 http://localhost:8080

本包中包含了游戏文件、题库文件、配置文件以及弹幕服务。douyinLive-v2.0.24WssBarrageServer 外部弹幕服务已随包提供:不开直播测试时,可将 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 一键运行

  1. 打开 弹幕知识王 文件夹
  2. 真实直播先进入 douyinLive-v2.0.24,按需在 config.yaml 填 Cookie

image-20260807132137265.png

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

image-20260807123047706.png

  1. 双击 start_danmu.bat 启动弹幕服务
  2. 双击 douyin_quiz_server.exe
  3. 看到如下输出即启动成功:
弹幕知识王服务已启动,访问 http://localhost:18080
题库已加载: 历史, 共 50 题
[GameEngine] 游戏引擎已启动

⚠️ 如果杀毒软件拦截,请在杀毒软件中添加信任。这是正常的,因为程序会连接网络进行语音合成。

OBS 配置游戏画面

不要用浏览器打开页面后再用 OBS 窗口采集! 游戏界面是 1080×1920 竖屏设计,在横屏显示器上缩放会严重降低画质。
正确做法是让 OBS 直接渲染竖屏页面,无需经过显示器缩放。

在 OBS Studio 中操作:

  1. 在 OBS 的场景中,点击「来源」框下方的 + 按钮
  2. 选择 浏览器
  3. 在弹窗中填写:
    • URLhttp://localhost:18080
    • 宽度1080
    • 高度1920
    • 自定义 CSSrgba(0, 0, 0, 255)
  4. 点击确定后,OBS 中即可看到完整的竖屏游戏画面
  5. 右键点击该浏览器源 → 「互动」 可以实时调试(可选)

image-20260807125920341.png

✅ OBS 浏览器源会在内部以 1080×1920 分辨率渲染,不经过显示器缩放,画质无损。

推流到抖音直播(关键步骤)

OBS 画面不能直接推送到抖音,需要通过「虚拟摄像头」桥接到抖音直播伴侣。完整链路:

OBS → 浏览器源(游戏画面)→ 虚拟摄像头 → 抖音直播伴侣 → 推送到抖音

1️⃣ 启动 OBS 虚拟摄像头

OBS Studio 30.0 以上版本已内置虚拟摄像头:

  • 菜单栏 → 工具虚拟摄像头
  • 点击 启动
  • 记住摄像头名称:OBS Virtual Camera

如果用的是旧版本 OBS,需要先安装 obs-virtualcam 插件。

image-20260807130112163.png

2️⃣ 在抖音直播伴侣中接入

  1. 打开 抖音直播伴侣
  2. 添加来源 → 摄像头
  3. 设备选择 OBS Virtual Camera
  4. 画面比例选择 竖屏 9:16
  5. 调整画面位置,使游戏界面填满直播画面

3️⃣ 开始直播

  • 确认 OBS 中游戏画面正常运行
  • 在抖音直播伴侣中点击 开始直播
  • 选择 竖屏模式
  • 观众即可看到游戏画面

💡 如果你还需要真人出镜:可以在 OBS 中先搭建好场景(游戏画面 + 摄像头人像 + 字幕等),再通过虚拟摄像头整体输出到抖音直播伴侣。

4️⃣ 同时启动弹幕捕获

游戏画面推流后,还需要让程序收到真实弹幕才能互动。推荐顺序是:

  1. 双击 start_danmu.bat 启动弹幕服务
  2. 最后启动游戏服务;auto 会先用 douyinLive,连续失败后回退到 WSS

详细配置见下方的「关于弹幕捕获」章节。

测试模式(不开直播也能用)

不开直播时,将 configs/config.yamlbarrage.mode 改为 mock,即可看到模拟弹幕、点赞和礼物。仓库配置默认使用 auto 接入真实服务。

后续整体启动顺序

  1. 打开直播伴侣
  2. 打开 OBS ,启动虚拟摄像头
  3. 双击 start_danmu.bat
  4. 双击 douyin_quiz_server.exe
  5. 开始直播

界面说明

游戏界面为 1080×1920 竖屏布局,从上到下依次为:

image-20260807122407669.png


游戏规则

答题

  • 观众在直播间弹幕中发送 ABCD 即可参与答题(大小写都可以)
  • 也支持"选 A"、“A."、“a” 等形式,系统会自动识别
  • 每人每题首次作答有效,不能改答案
  • 每题答题时间 60 秒(可在配置中修改)

段位(按累计答对题数)

段位需要答对题数
🟫 新手0
⚪ 学徒5
🟢 达人15
🔵 专家30
🟣 大师50
🟡 宗师80
🔴 知识王120

点赞效果(每题独立计数)

点赞数效果
500 赞随机排除一个错误选项
1000 赞增加答题时间 +10 秒

送礼效果

礼物价值效果
≤10 抖币(小心心、玫瑰、爱心、棒棒糖、鲜花等)送礼者该题直接答对
>10 抖币(加油鸭、快乐水、墨镜、跑车等)直接通关结束本题,送礼者获胜

抖音礼物与抖币价格对照:1 抖币 ≈ 0.1 元人民币


AI 题库生成工具

项目附带一个 AI 题库生成工具,只需输入主题,即可自动调用 AI 生成成百上千道高质量中文知识问答题,无需手动编写 JSON

准备工作

  1. 注册 DeepSeek 账号并获取 API Key

  2. 设置环境变量(只需设置一次)

    Windows 命令提示符:

    set DEEPSEEK_API_KEY=sk-你的key
    

    Windows 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)。

生成的文件怎么用

  1. 将生成的 .json 文件放到 question_bank/ 目录下

  2. 修改 configs/config.yaml 中的 question_bank_path 指向新文件:

    question_bank_path: ./question_bank/科学.json
    
  3. 重启服务后生效

小技巧

  • 每次生成的题都不相同,可以反复生成多个版本
  • 支持生成任意主题:常识、科学、历史、地理、文学、体育、娱乐……
  • 生成 500 题大约需要 1~2 分钟,费用不到 0.1 元
  • 最后将生成的不同主题题库,通过 douyin_quiz_merge.exe 工具合并为一个大题库

如何配置

所有配置都在 configs/config.yaml 文件中,用记事本打开即可修改。

也可以在启动游戏后,访问 http://localhost:18080/config,通过可视化图形界面进行配置。

image-20260807122522305.png

基本配置

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,再从主源开始新一轮。显式 douyinlivewss 模式只重试所选服务,不会静默换源。

Cookie 和签名不再属于游戏 YAML,也不会通过 /api/config 暴露。需要登录态或完整礼物事件时,只编辑 douyinLive-v2.0.24/config.example.yamlcookie.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)

如何添加新题目

  1. 用记事本打开 question_bank/题库.json
  2. 按上面的格式在 results 数组中添加新题目
  3. 保存文件
  4. 重启服务后生效
  5. 你也可以创建多个题库文件(如 历史.json科学.json),在配置中修改路径即可

💡 推荐使用 AI 题库生成工具(见上方说明),输入主题即可自动生成,比手动编写快得多。


关于弹幕捕获

游戏进程不再内嵌抖音协议库,也不会启动或停止外部可执行文件。它只连接本地 WebSocket,并把 douyinLive 的 method JSON 或 WSS 的数字类型 JSON 归一化为相同的游戏消息。任一时刻只有一个真实来源能够分发,避免切换时重复计分。

启动弹幕服务可以双击 start_danmu.bat 来一键启动两个弹幕服务:douyinLive v 2.0.24 和 WssBarrageServer. exe

  1. 主源:douyinLive v 2.0.24 外部服务

优点:稳定

缺点:需要填入 cookie 才能获取到礼物信息

  1. 备用源: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 在线服务)。检查:

  1. tts.enabled 是否为 true
  2. 电脑是否能正常访问互联网
  3. 浏览器是否允许自动播放音频(浏览器地址栏左侧有锁/信息图标,确认音频权限为允许)

Q: 每道题时间太短/太长?

A: 修改 configs/config.yaml 中的 game.countdown_seconds 值,保存后重启服务。

Q: 题库里的题目用完了怎么办?

A: 题目是随机抽取的,每次抽题会从题库中随机选一道,用完也可以重复使用。也可以按上面"如何添加新题目"的方法持续扩充题库。

Q: 端口被占用怎么办?

A: 修改 configs/config.yaml 中的 server.port 值,如改为 8081,然后重启服务。浏览器访问时使用新的端口号。

Q: WssBarrageServer. exe 被杀毒软件拦截?

A: 这是正常的,因为弹幕抓取工具会设置系统代理。请在杀毒软件中添加信任/白名单。