LensLink
言語JA

ブラウザコントロールパネル

プラグインは、ライブ画面のカメラ操作をhttp://localhost:9980で提供します。OBSの横に置いておけるブラウザウィンドウで操作できるので、誰もスマートフォンに触れる必要はありません。

開き方#

OBSを実行しているコンピュータでhttp://localhost:9980を開きます。パネルはデフォルトでオンで、オン・オフはツール → LensLink設定 → ブラウザコントロールパネルで切り替えます。

ループバック専用です。パネルは127.0.0.1にバインドされるため、ネットワーク上のどこからもアクセスできません。カメラを開始でき、認証もないため、意図的にこうしています。

そのポートがすでにほかで使われている場合は、プラグイン全体の設定であるパネルのポート(デフォルトは9980)で変更できます。

パネルの内容#

アプリのライブパネルと同じ操作項目が、同じ順序で並びます。

スマートフォン側での変更も反映されます。ドラッグ中は反映を止めるので、操作とぶつかることはありません。LensLink Screenソースにはカメラの操作項目がなく、パネルには動かないスライダーの代わりにその旨が表示されます。

HTTP API#

パネルは、同じポートで動く小さなHTTP APIのクライアントの1つにすぎず、Stream Deckやスクリプトも別のクライアントになれます。どのエンドポイントも省略可能な?src=<id>を受け付け、省略するとプラグインが最初の適切なソースを選びます。

状態の取得#

リクエスト戻り値
GET /api/sourcesすべてのソース:id、name、connected、standby、screen。
GET /api/statusstatusのテキスト(OBSの言語)とそのtone(idle、wait、ready、live、errorのいずれか。テキストを読まずに色分けするためのもの)、さらにscreen、standby、connected、autoStart、リップシンクのsync段階。
GET /api/diagnostics診断レポート全体をプレーンテキストで返します。バージョン、ハードウェア、設定、ソースごとの状態を含み、ツール → LensLink設定にあるボタンと同じ内容です。
GET /api/stateスマートフォンから最後に受け取ったカメラ状態のスナップショット:レンズ、ズーム、露出、フォーカス、ホワイトバランス、対応フォーマット。ソースのプロパティが読むのと同じキャッシュで、これによって3つの操作画面の表示が一致します。

コマンドの送信#

POST /api/controlは、1リクエストにつき1つのJSONコマンドを受け付けます。未知のコマンドは設計上無視されるため、新しいパネルと古いアプリの組み合わせでも、壊れずに機能が限られるだけで済みます。

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設定でブラウザコントロールパネルのチェックを外します。ポートはすぐに閉じ、ほかには影響しません。