OBS 教程

用变量和 Google Sheets 打造动态 OBS 叠加层

比分、捐赠目标、队伍名称或下一场比赛:这些数值在直播中不断变化。把它们存进变量,所有使用它们的叠加层都会自动更新。

需要 Vision 账号。你在编辑器中搭建叠加层。 · 更新于

工作原理

制作动态叠加层需要什么

在 Vision 中打开叠加层,选择 Overlay → Variables。创建变量并选择数值来源:手动设置、计数器、Twitch 或 Kick 频道数据、Google Sheets、API 或 Webhook。把变量插入文本图层,将图层的显示状态绑定到它,并通过聊天、自动化或 Stream Deck 修改它。OBS 中的浏览器源无需刷新即可更新。

  • 一个已作为浏览器源添加到 OBS 的 Vision 叠加层
  • 使用变量需要 Basic 或更高套餐
  • 使用 Google Sheets、HTTP API 和 Webhook 需要 Pro 套餐

分步设置

用 Google Sheets 制作捐赠目标叠加层

  1. 打开变量

    在 Vision 编辑器中打开叠加层,选择 Overlay → Variables。点击 New,在 Pick a source 下选择 Google Sheets。

  2. 连接表格

    点击 Connect Google 并允许只读访问。粘贴表格 URL,把范围设为存放总额的单元格,例如 Sheet1!B2。将变量命名为“捐赠总额”,键为 donations,类型为 number。点击 Test now 查看当前值。

  3. 添加目标和百分比

    再创建一个来源为 Manual 的变量,键为 goal,值为 1000。然后创建第三个来源为 Expression 的变量,输入 ({donations} / {goal}) * 100,它始终保存当前百分比。

  4. 在叠加层中显示数值

    选中一个文本图层,在其控制栏中点击 Insert Variable。选择 donations 并在前后输入文字,例如“已筹 €”。该标签会在编辑器和 OBS 中显示实时数值。如果想要一个递增的数字,可以把比分图层的分数绑定到百分比。

  5. 达成目标时显示横幅

    添加一个写着“目标达成”的文本图层。在图层列表中点击它的显示绑定按钮,选择 Add condition,设置 donations is at least。切换到 Compare to another variable 并选择 goal。预览会告诉你该图层当前是否可见。

变量的数值从哪里来

每个变量都有一个来源。Manual 值手动设置,Counter 按步长增减。Time / Clock 显示时间、直播时长、倒计时或距某日期的时间。Channel stats 提供 40 项 Twitch 和 Kick 数据,例如最新关注者、最高打赏者或本场订阅数。Vision Companion 提供来自手机应用的心率、速度和健康数据,Logo Rotation 跟随正在进行的 Logo 轮播。

以上来源包含在 Basic 中。Pro 增加 Google Sheets、HTTP API 和 Webhook,问答秀和锦标赛数据,以及带直播延迟的实时足球比分,避免叠加层在观众看到进球之前剧透。

每个变量要么只属于一个叠加层,要么可用于你所有的叠加层。创建时通过 Scope 选择,之后无法更改。

连接 Google Sheets、API 和 Webhook

Google Sheets 每个变量读取一个单元格,只对你的 Google 账号拥有只读权限。要显示几个单元格就使用几个变量。Vision 最快每 15 秒检查一次单元格。

HTTP API 以 GET 或 POST 轮询某个 URL,最快每 5 秒一次。用 data.items[0].value 这样的路径从 JSON 中取值,并可添加 Bearer 令牌、Basic 认证或自定义请求头。请求在 Vision 服务器上执行,令牌绝不会进入浏览器源。

Webhook 为变量提供一个私有 URL。从任何工具、脚本或服务向它发送 JSON 或文本,数值会立即改变。编辑器会提供现成的 curl 示例供测试。

让图层随数值变化

文本图层以标签形式显示变量。比分图层可以从变量获取分数,倒计时图层可以从变量获取开始或结束时间。

任何图层都可以把显示状态绑定到规则。用 ALL 或 ANY 组合规则,判断数字、文本、正则表达式或日期,并与固定值或另一个变量比较。赞助位的值为空时隐藏它,或只在比赛日显示某个图层。

Expression 变量通过四则运算、比较、? : 条件以及 round、min、max、clamp 等函数,从其他变量计算数值。任何输入变化时都会重新计算。

通过聊天、自动化和 Stream Deck 修改数值

Manual 和 Counter 变量可以在直播中修改。在聊天机器人中,为命令或定时消息添加 Variable 动作,即可在 Twitch 和 Kick 上设置、增加、减少或重置变量。数值在命令中固定。

自动化(目前为测试版)可以在变量变化时触发,并在流程中设置变量,例如每有新订阅就给 subs_today 加一。Chat command 触发器还会传递命令后输入的内容:把变量设为 {{trigger.arg1}},!score 5 就会把它设为 5。

Vision 的 Stream Deck 插件提供 Variable 动作,可增加、减少、设置或重置变量。计数器的快捷键在叠加层编辑器打开时有效。

故障排除

如果遇到问题

  • Overlay 菜单里没有 Variables?变量需要 Basic 或更高套餐。
  • Sheets 的数值不变?检查范围并点击 Reload now。如果显示 Last poll failed,请确认已连接的 Google 账号可以打开该表格。
  • 聊天命令或 Stream Deck 按键没有反应?只有 Manual 和 Counter 变量可以这样修改。
  • 图层一直隐藏?打开它的显示规则。在规则中的所有变量都有值之前,预览会显示 Waiting for values…。

常见问题

动态叠加层:常见问题

数值变化时需要刷新浏览器源吗?

不需要。新值会实时推送到叠加层。时钟和表达式直接在叠加层中重新计算。

Vision 能写入我的 Google 表格吗?

不能。Vision 只读取数据,每个变量一个单元格,对你的 Google 账号只有只读权限。

观众能在聊天中设置数值吗,比如 !score 5?

可以,通过自动化实现。为 !score 添加 Chat command 触发器(可限定仅管理员使用),并连接一个把 score 设为 {{trigger.arg1}} 的 Variable 动作。聊天机器人自带的命令只能设置固定值。

降级套餐后我的变量会怎样?

叠加层会继续显示它们,但在 Free 套餐下无法再编辑。

开播前先测试

Free 方案包含一个最多 10 个图层的叠加层,并支持同时连接一个 OBS。更多叠加层和自定义角色取决于你的方案。规划团队协作之前,请先查看当前的限制。

开始制作你的第一个直播画面

免费使用。无需信用卡。