Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AhVSfMFdWnXKCv5JfLnArZ
151 lines
5.3 KiB
Markdown
151 lines
5.3 KiB
Markdown
# Setup
|
|
|
|
Eine native Windows-Anwendung. Node, ffmpeg, whisper.cpp und die Schriften
|
|
sind mitgeliefert — vorausgesetzt wird nur OBS.
|
|
Begruendung: [ADR-0007](decisions/ADR-0007-native-windows.md).
|
|
|
|
## 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
|
|
|
|
```powershell
|
|
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](decisions/ADR-0005-zugangsdaten.md).
|
|
|
|
## 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:
|
|
|
|
```powershell
|
|
abdulive check-env # ffmpeg, whisper, Schriften, Verzeichnisse, Layout
|
|
abdulive fetch-model # Sprachmodell, ca. 465 MB
|
|
Start-ScheduledTask -TaskName abdulive
|
|
```
|
|
|
|
## Layout einmessen
|
|
|
|
```powershell
|
|
abdulive calibrate
|
|
```
|
|
|
|
Legt einen Frame als PNG unter `%LOCALAPPDATA%\abdulive\clips\_calibration`
|
|
ab und rendert die 9:16-Vorschau dazu. Anleitung: [`obs-layout.md`](obs-layout.md).
|
|
|
|
Welche OBS-Quelle im Ausschnitt landet — etwa fremde Untertitel:
|
|
|
|
```powershell
|
|
abdulive sources
|
|
```
|
|
|
|
## Betrieb
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
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:
|
|
|
|
```powershell
|
|
Stop-ScheduledTask -TaskName abdulive; Start-ScheduledTask -TaskName abdulive
|
|
```
|
|
|
|
Die Aufgabe `abdulive-update` macht die Pruefung taeglich um 05:00 von selbst.
|
|
|
|
## Backup
|
|
|
|
```powershell
|
|
.\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](decisions/ADR-0007-native-windows.md)
|
|
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.
|