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 :
- Pastille d’état avec point, mot et latence. Une seconde pastille apparaît pendant la calibration de la synchro labiale, et propose Recalibrer une fois verrouillée.
- Onglets de source, quand plusieurs sources caméra sont en direct : une seule page pilote tous les téléphones.
- Zoom, exposition (correction AE, ou ISO et obturateur manuels), mise au point, balance des blancs.
- Lampe torche, Objectif, Changer de caméra.
- Changements de format en cours de diffusion : résolution, fréquence d’images, codec, microphone.
- Distance du sujet, quand l’écran vert fonctionne avec l’assistance profondeur.
- Démarrer la caméra quand l’app est inactive, Arrêter la caméra en rouge pendant le direct, chacun avec un interrupteur Démarrage auto.
- Mettre en pause suspend le flux sans y mettre fin : le téléphone reste connecté, caméra en marche, OBS conserve la source et affiche une image fixe assombrie et floutée avec un symbole de pause, et Reprendre relance aussitôt le direct. L’audio continue de passer, donc un téléphone qui sert aussi de micro ne se coupe pas.
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ête | Renvoie |
|---|---|
GET /api/sources | Toutes les sources : id, name, connected, standby, screen. |
GET /api/status | Le 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/diagnostics | Le 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/state | Le 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ête | Effet |
|---|---|
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/recalibrate | Sans 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é.