Files
2026-09-09 20:05:39 +02:00

5.9 KiB

Setup

Eine native Windows-Anwendung. Node, ffmpeg, whisper.cpp und die Schriften sind mitgeliefert — vorausgesetzt wird nur OBS. Begruendung: ADR-0007.

Voraussetzungen

Was Version Anmerkung
Windows 10 oder 11, 64 Bit
OBS Studio 30+ mit obs-websocket v5 derselbe Rechner

Mehr nicht. Kein Docker, kein WSL2, kein Compiler, kein Git.

Installieren

irm https://git.zeasy.dev/ZeasyAlex/abdulive/raw/branch/main/scripts/install.ps1 | iex

Alternativ das Paket von der Releases-Seite laden, entpacken und darin install.ps1 ausfuehren - dasselbe Skript, es merkt selbst, dass das Paket schon danebenliegt.

Der Installer laeuft ohne Administratorrechte:

Was Wohin
Programm %LOCALAPPDATA%\Programs\abdulive
Daten, Datenbank, Clips %LOCALAPPDATA%\abdulive
Autostart Aufgabe abdulive, bei der Anmeldung
Update-Pruefung Aufgabe abdulive-update, taeglich 05:00

Beim ersten Start warnt Windows SmartScreen vor einem unbekannten Herausgeber — das Paket ist nicht signiert. Einmal auf Weitere Informationen → Trotzdem ausfuehren.

Twitch-Apps anlegen

Zwei Anwendungen unter https://dev.twitch.tv/console/apps:

  1. abdulive-toolkit — OAuth Redirect http://localhost:4792/callback
  2. abdulive-bot — gleicher Redirect

Client-ID und Client-Secret nicht in eine Datei eintragen, sondern später im Einrichtungs-Assistenten einfügen (siehe unten). Begründung: ADR-0005.

OBS vorbereiten

  1. obs-websocket aktivieren: Werkzeuge → WebSocket-Servereinstellungen → Server aktivieren, Port 4455, Passwort setzen — eingetragen wird es später im Einrichtungs-Assistenten.
  2. Wiedergabepuffer aktivieren: Einstellungen → Ausgabe → Wiedergabepuffer, 90 Sekunden. Den Zielordner merken und in .env als OBS_REPLAY_DIR eintragen — mit Forward-Slashes, z. B. C:/Users/abdu/Videos/replay.
  3. Hotkey setzen: Einstellungen → Hotkeys → „Wiedergabepuffer speichern". Das ist der Clip-Knopf. Ein globaler Windows-Hotkey wird bewusst nicht gebaut — aus einem Container ist er nicht abfangbar, und OBS meldet den gespeicherten Puffer ohnehin über WebSocket.
  4. Getrennte Audiospuren (bereits eingerichtet): Mikrofon auf Spur 2, Spielton auf Spur 3, Mischung auf Spur 1. Die Untertitel werden aus Spur 2 erzeugt - das ist bei lauten Spielen der Unterschied zwischen brauchbarem und unbrauchbarem Transkript. Einstellungen -> Ausgabe -> Aufnahme -> Audiospuren, und im Audiomixer je Quelle die Spurzuordnung pruefen.
  5. Browser-Sources (erst ab Meilenstein M3 relevant): „Browser-Quelle beim Szenenwechsel neu laden" aus, sonst brechen laufende Effekte ab.

Erste Einrichtung

Der Installer erledigt das schon: Sprachmodell laden, Selbsttest, Daemon starten, warten bis die Oberflaeche antwortet, Browser oeffnen.

Auf der Einrichtungsseite dann Client-ID und Secret der beiden Twitch-Apps eintragen und je einmal auf „Mit Twitch verbinden" klicken.

Von Hand geht es auch:

abdulive check-env       # ffmpeg, whisper, Schriften, Verzeichnisse, Layout
abdulive fetch-model     # Sprachmodell, ca. 465 MB
Start-ScheduledTask -TaskName abdulive

Layout einmessen

abdulive calibrate

Legt einen Frame als PNG unter %LOCALAPPDATA%\abdulive\clips\_calibration ab und rendert die 9:16-Vorschau dazu. Anleitung: obs-layout.md.

Welche OBS-Quelle im Ausschnitt landet — etwa fremde Untertitel:

abdulive sources

Betrieb

Start-ScheduledTask -TaskName abdulive     # startet
Stop-ScheduledTask  -TaskName abdulive     # stoppt
Get-Content "$env:LOCALAPPDATA\abdulive\logs\abdulive.log" -Wait -Tail 40

Sichtungsseite: http://localhost:4792

Aktualisieren

abdulive update

Prueft das Manifest, laedt das Paket, vergleicht die SHA256 und legt es bereit. Die Adresse steht in config.yaml unter update.url und hat keine Vorgabe — ohne Eintrag sagt der Befehl das auch. Liegt die Ablage hinter einer Anmeldung, gehoert ein Lese-Token in den verschluesselten Speicher (Einrichtungsseite), nicht in die config.yaml. Eingespielt wird es beim naechsten Start — waehrend eines Streams wird nichts ausgetauscht. Sofort uebernehmen:

Stop-ScheduledTask -TaskName abdulive; Start-ScheduledTask -TaskName abdulive

Die Aufgabe abdulive-update macht die Pruefung taeglich um 05:00 von selbst.

Wieder entfernen

& "$env:LOCALAPPDATA\Programs\abdulive\uninstall.ps1"

Nimmt die beiden Aufgaben aus dem Aufgabenplaner, beendet den laufenden Daemon und loescht den Programmordner. Die Daten bleiben liegen — in der Datenbank stehen Chatverlaeufe, und die sind nach einer versehentlichen Deinstallation nicht wiederherstellbar. Wer neu installiert, findet seine Einrichtung wieder.

Wirklich alles weg, auch Datenbank, Clips und Sprachmodell:

& "$env:LOCALAPPDATA\Programs\abdulive\uninstall.ps1" -AuchDaten

Backup

.\scripts\backup.ps1

Kopiert die Datenbank per VACUUM INTO aus %LOCALAPPDATA%\abdulive\db nach backup\ und haelt 30 Generationen. VACUUM INTO und nicht einfach kopieren: die Datei wird im laufenden Betrieb gesichert, und ein Kopieren waehrend eines Schreibvorgangs ergaebe eine unbrauchbare Sicherung.

Die Datenbank liegt seit ADR-0007 in einem gewoehnlichen Windows-Ordner. Der Grund fuer das fruehere Docker-Volume - unzuverlaessige Dateisperren ueber die WSL2-Bruecke - ist mit dem Container weggefallen.

Was nicht ins Repo gehört

.env, config/config.yaml, alles unter data/. Steht in .gitignore. Die Datenbank enthält personenbezogene Daten (Chatverläufe, Notizen zu Zuschauern) und darf nicht committet oder geteilt werden.