Browser-Steuerfeld
Das Plugin stellt die Kamerasteuerung des Live-Bildschirms unter
http://localhost:9980 bereit,
in einem Browserfenster, das du neben OBS parken kannst. Niemand muss das
Smartphone anfassen.
Öffnen#
Öffne http://localhost:9980 auf dem Computer, auf dem OBS läuft.
Das Steuerfeld ist standardmäßig aktiv; der Schalter dafür ist
Werkzeuge → LensLink-Einstellungen → Browser-Steuerfeld.
Nur Loopback. Das Steuerfeld bindet sich an
127.0.0.1, sodass nichts im Netzwerk es erreichen kann. Das ist
Absicht, denn es kann Kameras starten und hat keine Authentifizierung.
Port des Steuerfelds (Standard 9980) ist eine
pluginweite Einstellung, falls dieser Port schon belegt ist.
Was es bietet#
Dieselben Bedienelemente wie das Live-Panel der App, in derselben Reihenfolge:
- Statusanzeige mit Punkt, Statuswort und Latenz. Eine zweite Anzeige erscheint, während die Kalibrierung der Lippensynchronität läuft, und bietet nach dem Fixieren Neu kalibrieren an.
- Quellen-Tabs, wenn mehr als eine Kameraquelle live ist – eine Seite steuert jedes Smartphone.
- Zoom, Belichtung (AE-Korrektur oder manuell ISO und Verschlusszeit), Fokus, Weißabgleich.
- Taschenlampe, Objektiv, Kamera wechseln.
- Formatwechsel während des Streams: Auflösung, Bildrate, Codec, Mikrofon.
- Motivabstand, während der Greenscreen mit Tiefenunterstützung läuft.
- Kamera starten im Leerlauf, ein rotes Kamera stoppen im Live-Betrieb, jeweils mit einem Schalter Autostart.
- Pausieren hält den Stream an, ohne ihn zu beenden: Das Smartphone bleibt verbunden und seine Kamera läuft weiter, OBS behält die Quelle und zeigt ein abgedunkeltes, unscharfes Standbild mit Pause-Symbol, und Fortsetzen macht nahtlos weiter. Der Ton läuft weiter, sodass ein Smartphone, das zugleich als Mikrofon dient, nicht aussetzt.
Es übernimmt Änderungen, die auf dem Smartphone gemacht werden, und pausiert dabei, solange du ziehst, damit es dir nie in die Quere kommt. Eine Quelle LensLink Screen hat keine Kamerasteuerung, und das Steuerfeld sagt das, statt funktionslose Schieberegler anzuzeigen.
Die HTTP-API#
Das Steuerfeld ist ein Client einer kleinen HTTP-API auf demselben Port; ein
Stream Deck oder ein Skript kann ein weiterer sein. Jeder Endpunkt akzeptiert
ein optionales ?src=<id>; ohne wählt das Plugin die erste
passende Quelle.
Zustand abfragen#
| Anfrage | Liefert |
|---|---|
GET /api/sources | Jede Quelle: id, name, connected, standby, screen. |
GET /api/status | Den status-Text (in der Sprache von OBS), seinen tone (idle, wait, ready, live oder error, um ihn einzufärben, ohne den Text zu lesen), dazu screen, standby, connected, autoStart und die Lippensynchron-Stufe sync. |
GET /api/diagnostics | Den ganzen Diagnosebericht als reinen Text: Versionen, Hardware, Einstellungen und Zustand jeder Quelle. Derselbe Inhalt wie über die Schaltfläche unter Werkzeuge → LensLink-Einstellungen. |
GET /api/state | Den letzten Kamerazustand, den das Smartphone gemeldet hat: Objektive, Zoom, Belichtung, Fokus, Weißabgleich, unterstützte Formate. Derselbe Cache, den die Eigenschaften der Quelle lesen, und so bleiben die drei Oberflächen im Gleichschritt. |
Befehle senden#
POST /api/control nimmt einen JSON-Befehl pro Anfrage entgegen.
Unbekannte Befehle werden bewusst ignoriert, sodass ein neueres Steuerfeld mit
einer älteren App eingeschränkt funktioniert, statt auszufallen.
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 }
| Anfrage | Wirkung |
|---|---|
POST /api/autostart | {"on":true|false} – dieselbe Eigenschaft, die das Autostart-Kontrollkästchen ändert. Ein leerer Body wird abgelehnt und nicht als false gewertet. |
POST /api/recalibrate | Kein Body. Startet eine neue Messung der Lippensynchronität. |
Beispiele#
# 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
Ausschalten#
Deaktiviere Browser-Steuerfeld unter Werkzeuge → LensLink-Einstellungen. Der Port wird sofort geschlossen; alles andere bleibt unberührt.