PanoPaper 2.6 帮助 常见问题 发布说明 下载

← 文档

直播自动化

直播开始和结束时,PanoPaper 可以通知网站、Home Assistant 等智能家居自动化、Slack 或 Discord 等聊天服务,或快捷指令,并附上观看链接,例如在你自己的网站上显示“观看直播”按钮,或在你团队的频道中发帖。

在开始直播时中进行设置:它是“设置”▸“直播”中服务标签页末尾带天线的按钮。设置了任何项目时,天线会以彩色显示,将指针移到按钮上即可看到开启了哪些项目。

Webhook 和快捷指令

  • “调用 Webhook” - PanoPaper 会发送消息到一个网址:你自己的服务器、Home Assistant 等智能家居自动化,或接受 Webhook 的服务。点按“设置…”来输入或粘贴地址,点按“编辑…”来更改;地址会保存在你的钥匙串中,因为这类地址通常含有密钥。“测试”会立即发送一条示例消息,并显示服务器的响应。如果服务器以网页响应,该地址很可能是网站而不是 Webhook。
  • “运行快捷指令”(网页版) - 以同一条消息作为输入,运行你在下方选择的快捷指令:一个小型 JSON 文件,快捷指令可将其读取为词典。

消息何时发送

服务接受你的视频流后,就会发送“live”消息;之后每当有服务加入,或在其他服务仍在直播时有服务离开,都会再发送一次;最后一个服务停止时会发送“stopped”。在 YouTube Studio 中点按结束直播并不会停止 PanoPaper 的视频流,因此在你于 PanoPaper 中停止直播之前,不会发送任何消息。

连接 YouTube 账户后,YouTube 的“live”消息还会包含直播本身的链接;PanoPaper 最多会等待半分钟,让 YouTube 报告视频,然后再发送消息。直播期间,每当在 YouTube 上观看的人数变化时,也会发送“viewers”消息;PanoPaper 每五分钟查看一次。

消息内容

PanoPaper 以 HTTP POST 发送消息,内容类型为 application/json,使用 UTF-8 编码,用户代理为 PanoPaper/ 加上其版本号。任何 2xx 响应都视为已收到,不会读取响应的正文。每次尝试最多等待 15 秒的响应。网络连接出错,或服务器以 408、429 或 5xx 响应时,PanoPaper 会在 5 秒后重试,30 秒后再重试最后一次;其他响应不会重试,“测试”只尝试一次。消息会按事情发生的顺序逐一发送,因此“stopped”绝不会比它的“live”先到达。

连接 YouTube 账户后,YouTube 和 Facebook 的“live”消息示例:

{
  "event" : "live",
  "services" : [
    "YouTube",
    "Facebook"
  ],
  "watch" : "https://www.youtube.com/@yourchannel/live",
  "videoId" : "AbCdEfGhIjK",
  "video" : "https://www.youtube.com/watch?v=AbCdEfGhIjK",
  "embed" : "https://www.youtube.com/embed/AbCdEfGhIjK",
  "camera" : "Port Dome",
  "time" : "2026-10-20T14:03:12Z",
  "text" : "Port Dome 正在 YouTube和Facebook 上直播:https://www.youtube.com/watch?v=AbCdEfGhIjK",
  "content" : "Port Dome 正在 YouTube和Facebook 上直播:https://www.youtube.com/watch?v=AbCdEfGhIjK"
}
字段 类型 内容
event 字符串 live、stopped、viewers 或 test。要判断发生了什么,请使用此字段,而不是 text。
services 字符串数组 服务:YouTube、Facebook,其他服务则是其服务器的名称,例如 live.twitch.tv(超过 20 个字符的名称会以 PanoPaper 的语言发送为“自定服务器”)。在“live”和“viewers”中,是当时所有正在直播的服务;在“stopped”中,是之前正在直播的服务;在“test”中,是已准备好开始直播的服务。
watch 字符串(URL) 观看用的链接:你频道的直播页面,https://www.youtube.com/@<channel>/live;若已连接账户且关闭“将直播设为公开”,则为这次直播自己的页面,因为不公开列出的直播不会出现在你的直播页面上。仅在 YouTube 属于这些服务且已填写你的频道时包含;在“test”中,只要已填写频道就会包含。
videoId 字符串 YouTube 直播的视频 ID。仅在连接 YouTube 账户、且 YouTube 已报告视频后包含:出现在“live”、“viewers”和“test”中,绝不会出现在“stopped”中。
video 字符串(URL) 直播本身的页面,https://www.youtube.com/watch?v=<videoId>。与 videoId 一起发送。
embed 字符串(URL) 用于在网页中显示的直播,https://www.youtube.com/embed/<videoId>,作为 <iframe> 的地址。与 videoId 一起发送。
viewers 整数 在 YouTube 上观看的人数,按 YouTube 的统计方式。仅在连接 YouTube 账户、且 PanoPaper 已查看过(直播开始约一分钟后)时包含:出现在“viewers”中,以及已知人数时的“live”和“test”中;绝不会出现在“stopped”中。
camera 字符串 PanoPaper 所显示的摄像头名称:正在直播的摄像头;在“stopped”中则是最后直播的那个。摄像头轮流直播时,是发送消息当时正在直播的那个 - 切换到下一个摄像头不会发送消息。
time 字符串 消息生成的时间,采用 ISO 8601 和 UTC,精确到秒:2026-10-20T14:03:12Z。
text, content 字符串 同一句话出现两次,使用 PanoPaper 的语言 - 在“live”中,如果已知直播本身的链接就附上它,否则附上你频道的直播页面:text 是 Slack 显示为消息的内容,content 是 Discord 显示的内容。这句话是给人看的,措辞也可能改变,因此请勿从中解读任何信息。

没有值的字段会被省略,绝不会以空值或 null 发送。字段可能以任何顺序出现,PanoPaper 以后的版本也可能添加字段:请跳过你不认识的字段。

对地址保密

PanoPaper 不会对消息签名,也不会另外添加自己的密码。若要确保只有 PanoPaper 能向你的服务器发送消息,请将密钥放在地址本身中,例如一段很长的随机路径,或查询字符串中的令牌 - 比如 Home Assistant 的 Webhook 地址本来就是这样工作的。这也是地址会保存在你的钥匙串中的原因。

在快捷指令中

快捷指令会以文件的形式收到相同的 JSON,文件以事件命名,例如“PanoPaper live.json”。

快捷指令与 Siri 也可以开始和停止直播。

© 2026 Thomas Gumz · macOS 实时摄像头墙纸
功能 下载 UniFi Protect ONVIF 摄像头 对比 帮助 发布说明 Reddit 关于 隐私 服务条款

Thomas Gumz 的其他作品:LogRaker,Mac 上的实时日志监控。

English · Deutsch · Français · Español · Italiano · Português · Nederlands · Polski · Українська · 日本語 · 한국어 · 繁體中文 · 简体中文 · ไทย

ONVIF 是 ONVIF Inc. 的商标。UniFi 和 UniFi Protect 是 Ubiquiti Inc. 的商标。Apple、Mac 和 macOS 是 Apple Inc. 在美国及其他国家和地区注册的商标。PanoPaper 是独立产品,与 Ubiquiti Inc. 无关联,亦未获其认可或赞助。