Panel de control en el navegador
El plugin ofrece los controles de cámara de la pantalla En vivo en
http://localhost:9980, en una
ventana del navegador que puedes dejar junto a OBS. Nadie tiene que tocar el
teléfono.
Abrirlo#
Abre http://localhost:9980 en la computadora donde se ejecuta OBS.
El panel está activado de forma predeterminada; el interruptor está en
Herramientas → Ajustes de LensLink → Panel de control en el
navegador.
Solo en local. El panel escucha en 127.0.0.1,
así que nada de la red puede acceder a él. Es a propósito, porque puede iniciar
cámaras y no tiene autenticación.
Puerto del panel (de forma predeterminada 9980)
es un ajuste de todo el plugin, por si otro programa ya usa ese puerto.
Qué contiene#
Los mismos controles que el panel En vivo de la app, en el mismo orden:
- Píldora de estado con punto, palabra y latencia. Aparece una segunda píldora mientras se calibra la sincronía labial, que ofrece Recalibrar una vez fijada.
- Pestañas de fuentes, cuando hay más de una fuente de cámara en vivo: una sola página controla todos los teléfonos.
- Zoom, exposición (compensación de AE, o ISO y obturador manuales), enfoque, balance de blancos.
- Linterna, Lente, Cambiar de cámara.
- Cambios de formato durante la transmisión: resolución, velocidad de fotogramas, códec, micrófono.
- Distancia del sujeto, mientras la pantalla verde funciona con asistencia de profundidad.
- Iniciar cámara sin transmitir, el botón rojo Detener cámara en vivo, cada uno con un interruptor de Inicio automático.
- Pausar retiene la transmisión sin terminarla: el teléfono sigue conectado con la cámara en marcha, OBS conserva la fuente y muestra una imagen fija atenuada y desenfocada con un símbolo de pausa, y Reanudar la retoma al instante. El audio sigue llegando, así que un teléfono que también hace de micrófono no se corta.
Refleja los cambios hechos en el teléfono, y se detiene mientras arrastras para no pelearse nunca con tu mano. Una fuente LensLink Screen no tiene controles de cámara, y el panel lo indica en lugar de mostrar controles deslizantes inútiles.
La API HTTP#
El panel es un cliente de una pequeña API HTTP en el mismo puerto; un stream
deck o un script pueden ser otro. Todos los endpoints aceptan un
?src=<id> opcional; si no se indica, el plugin elige la
primera fuente adecuada.
Leer el estado#
| Solicitud | Devuelve |
|---|---|
GET /api/sources | Todas las fuentes: id, name, connected, standby, screen. |
GET /api/status | El texto de status (en el idioma de OBS), su tone (idle, wait, ready, live o error, para darle color sin leer el texto), además de screen, standby, connected, autoStart y la fase sync de la sincronía labial. |
GET /api/diagnostics | El informe de diagnóstico completo en texto plano: versiones, hardware, ajustes y estado de cada fuente. El mismo contenido que el botón de Herramientas → Ajustes de LensLink. |
GET /api/state | La última instantánea del estado de la cámara del teléfono: lentes, zoom, exposición, enfoque, balance de blancos, formatos admitidos. Es la misma caché que leen las propiedades de la fuente, y así es como las tres superficies se mantienen sincronizadas. |
Enviar comandos#
POST /api/control acepta un comando JSON por solicitud. Los
comandos desconocidos se ignoran a propósito, de modo que un panel más nuevo con
una app más antigua pierde funciones en lugar de romperse.
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 }
| Solicitud | Efecto |
|---|---|
POST /api/autostart | {"on":true|false}: la misma propiedad que edita la casilla de inicio automático. Un cuerpo vacío se rechaza, no se interpreta como false. |
POST /api/recalibrate | Sin cuerpo. Inicia una nueva medición de la sincronía labial. |
Ejemplos#
# 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
Desactivarlo#
Desmarca Panel de control en el navegador en Herramientas → Ajustes de LensLink. El puerto se cierra de inmediato; todo lo demás sigue igual.