LensLink
LangueFR

Panneau de contrôle web

Le plugin sert les commandes de caméra de l’écran de direct à l’adresse http://localhost:9980, dans une fenêtre de navigateur que vous pouvez garder à côté d’OBS. Personne n’a besoin de toucher le téléphone.

L’ouvrir#

Ouvrez http://localhost:9980 sur l’ordinateur qui exécute OBS. Le panneau est activé par défaut ; l’interrupteur se trouve dans Outils → Paramètres LensLink → Panneau de contrôle web.

Boucle locale uniquement. Le panneau écoute sur 127.0.0.1, donc rien sur le réseau ne peut l’atteindre. C’est voulu, puisqu’il peut démarrer des caméras et n’a pas d’authentification.

Port du panneau (9980 par défaut) est un réglage global du plugin, au cas où ce port serait déjà pris.

Ce qu’il contient#

Les mêmes commandes que le panneau de direct de l’app, dans le même ordre :

Il reflète les changements faits sur le téléphone, mais suspend ces mises à jour pendant que vous faites glisser un curseur, pour ne jamais contrarier votre geste. Une source LensLink Screen n’a pas de commandes de caméra, et le panneau l’indique au lieu d’afficher des curseurs inertes.

L’API HTTP#

Le panneau n’est qu’un client d’une petite API HTTP sur le même port ; un stream deck ou un script peut en être un autre. Chaque point d’accès accepte un paramètre facultatif ?src=<id> ; sans lui, le plugin prend la première source adaptée.

Lire l’état#

RequêteRenvoie
GET /api/sourcesToutes les sources : id, name, connected, standby, screen.
GET /api/statusLe texte status (dans la langue d’OBS), son tone (idle, wait, ready, live ou error, pour le colorer sans lire le texte), plus screen, standby, connected, autoStart et l’étape sync de la synchro labiale.
GET /api/diagnosticsLe rapport de diagnostic complet en texte brut : versions, matériel, réglages et état de chaque source. Même contenu que le bouton dans Outils → Paramètres LensLink.
GET /api/stateLe dernier instantané de l’état de la caméra envoyé par le téléphone : objectifs, zoom, exposition, mise au point, balance des blancs, formats pris en charge. C’est le même cache que lisent les propriétés de la source, et c’est ainsi que les trois interfaces restent en phase.

Envoyer des commandes#

POST /api/control accepte une commande JSON par requête. Les commandes inconnues sont ignorées à dessein : un panneau plus récent et une app plus ancienne perdent des fonctions au lieu de casser.

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 }
RequêteEffet
POST /api/autostart{"on":true|false} : la même propriété que modifie la case de démarrage auto. Un corps vide est refusé, et non interprété comme false.
POST /api/recalibrateSans corps. Lance une nouvelle mesure de la synchro labiale.

Exemples#

# 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

Le désactiver#

Décochez Panneau de contrôle web dans Outils → Paramètres LensLink. Le port se ferme immédiatement ; rien d’autre n’est affecté.