浏览器控制面板
插件在 http://localhost:9980 上提供直播界面中的摄像头控制,你可以把这个浏览器窗口放在 OBS 旁边。谁都不用去碰手机。
打开面板#
在运行 OBS 的电脑上打开 http://localhost:9980。面板默认开启,开关位于工具 → LensLink 设置 → 浏览器控制面板。
仅限本机回环。面板绑定在 127.0.0.1 上,网络上的任何设备都无法访问它。这是有意为之,因为它能启动摄像头,而且没有身份验证。
如果该端口已被其他程序占用,可以修改面板端口(默认 9980),这是一项插件全局设置。
面板上有什么#
与 App 直播界面的控制项相同,顺序也相同:
- 状态标签,包含圆点、状态文字和延迟。音画同步校准进行时会出现第二个标签,锁定后提供重新校准。
- 来源标签页,在有多个摄像头来源处于直播状态时出现,一个页面即可控制所有手机。
- 变焦、曝光(AE 偏移,或手动 ISO 和快门)、对焦、白平衡。
- 手电筒、镜头、切换摄像头。
- 推流中更改格式:分辨率、帧率、编码格式、麦克风。
- 主体距离,在绿幕配合深度辅助运行时出现。
- 空闲时显示启动摄像头,直播时显示红色的停止摄像头,旁边各有一个自动启动开关。
- 暂停会保持视频流而不结束它:手机保持连接,摄像头继续运行,OBS 保留该来源并显示一张调暗、模糊的静止画面和暂停符号,按继续即可立即恢复。音频不会中断,因此兼作麦克风的手机不会断声。
面板会同步手机上所做的更改,你拖动时则暂停同步,因此不会和你的操作较劲。LensLink Screen 来源没有摄像头控制,面板会直接说明这一点,而不是显示无效的滑块。
HTTP API#
面板只是同一端口上一个小型 HTTP API 的客户端之一;Stream Deck 类设备或脚本也可以是另一个客户端。每个接口都接受可选的 ?src=<id>;不带它时,插件会选择第一个合适的来源。
读取状态#
| 请求 | 返回 |
|---|---|
GET /api/sources | 所有来源:id、name、connected、standby、screen。 |
GET /api/status | status 文本(使用 OBS 的界面语言)及其 tone(idle、wait、ready、live 或 error,用于在不读取文本的情况下为其着色),另有 screen、standby、connected、autoStart 以及音画同步阶段 sync。 |
GET /api/diagnostics | 纯文本形式的完整诊断报告:版本、硬件、设置以及每个来源的状态。内容与“工具 → LensLink 设置”中的按钮相同。 |
GET /api/state | 手机最近一次的摄像头状态快照:镜头、变焦、曝光、对焦、白平衡、支持的格式。来源设置读取的也是同一份缓存,三个界面正是靠它保持同步。 |
发送命令#
POST /api/control 每次请求接受一条 JSON 命令。未知命令会被有意忽略,因此较新的面板配合较旧的 App 时只会功能降级,而不会出错。
POST /api/control
{ "cmd": "zoom", "value": 2.0 }
{ "cmd": "exposure_bias", "value": -0.5 }
{ "cmd": "exposure", "mode": "manual", "iso": 400, "shutterSeconds": 0.004 }
{ "cmd": "exposure", "mode": "auto" }
{ "cmd": "focus", "mode": "locked", "lensPosition": 0.42 }
{ "cmd": "focus", "mode": "auto" }
{ "cmd": "white_balance", "mode": "locked", "temperature": 5600 }
{ "cmd": "white_balance", "mode": "auto" }
{ "cmd": "flashlight", "on": true }
{ "cmd": "flip" }
{ "cmd": "start_stream" }
{ "cmd": "stop_stream" }
{ "cmd": "set_format", "resolution": "1080p", "fps": 60, "codec": "hevc" }
{ "cmd": "mic", "id": "builtin:2" }
{ "cmd": "green_screen", "on": true, "maxDistance": 2.5 }
| 请求 | 效果 |
|---|---|
POST /api/autostart | {"on":true|false}:与自动启动复选框修改的是同一个设置。空请求体会被拒绝,而不会被当作 false。 |
POST /api/recalibrate | 无请求体。开始一次新的音画同步测量。 |
示例#
# Start the camera on the only connected phone
curl -X POST http://localhost:9980/api/control -d '{"cmd":"start_stream"}'
# Zoom the source with id 2 to 3x
curl -X POST 'http://localhost:9980/api/control?src=2' -d '{"cmd":"zoom","value":3.0}'
# What is connected right now?
curl -s http://localhost:9980/api/sources
关闭面板#
在工具 → LensLink 设置中取消勾选浏览器控制面板。端口会立即关闭,其他一切不受影响。