Kapitel 13/Tutorial.md aktualisiert
This commit is contained in:
@@ -1,144 +1,71 @@
|
||||
# 🛠️ Kapitel 13 – Clipper (Debian‑12‑LXC) – Tutorial
|
||||
|
||||
Zu Beginn ein kurzer Hinweis: Grundlegendes wie das Anlegen eines LXC, SSH‑Zugang oder die Einbindung einer Nextcloud haben wir in früheren Kapiteln gezeigt. Hier konzentrieren wir uns auf das, was Clipper besonders macht – mit Erklärungen an den Stellen, wo Entscheidungen wichtig sind.
|
||||
# 🛠️ Kapitel 13 – Clipper (Tutorial)
|
||||
|
||||
---
|
||||
|
||||
## Ziel und Aufbau
|
||||
Wir setzen Clipper in einem Debian‑12‑LXC auf und statten ihn mit ffmpeg sowie einem kleinen Watch‑Service aus. Er beobachtet entweder einen Nextcloud‑Ordner oder optional die Ablage des RTMP‑Servers. Sobald dort neue Dateien erscheinen, erzeugt er verlustfreie Clips (oder, falls nötig, Re‑Encode‑Versionen) und legt sie in einem Ausgabeverzeichnis ab. Am Ende hast du eine Instanz, die Highlights automatisch vorbereitet, ohne dass du manuell schneiden musst.
|
||||
## Einleitung
|
||||
Clips sind der beste Weg, lange Streams in kurze, teilbare Highlights zu verwandeln.
|
||||
Das Ziel dieses Kapitels: Wir bauen ein System, das neue Videos automatisch erkennt, sinnvolle Stellen analysiert, passende Highlights schneidet und die Ergebnisse in Nextcloud ablegt – komplett mit Titeln und Hashtags für jede Plattform.
|
||||
Der Clipper selbst übernimmt dabei nur die technische Verarbeitung. Alles rund um Steuerung, Analyse und Benachrichtigungen läuft über **n8n** – so bleibt das System flexibel, ressourcenschonend und jederzeit erweiterbar.
|
||||
|
||||
---
|
||||
|
||||
## Voraussetzungen (knapp, aber konkret)
|
||||
- Debian‑12‑LXC nach unserem Grundsetup (1 vCPU, 512 MB RAM, 8–16 GB Platte).
|
||||
- ca. 10 GB Speicherplatz für temporäre Dateien.
|
||||
- **Pflicht:** Zugriff auf einen Nextcloud‑Ordner (WebDAV oder lokales Mount).
|
||||
- **Optional:** RTMP‑Server mit VOD‑Ordner.
|
||||
- **Optional:** Nginx Proxy Manager für internen Zugriff.
|
||||
## Voraussetzungen
|
||||
- **Proxmox LXC** mit Debian 12 (Bookworm)
|
||||
- **Nextcloud** (Pflicht, Zielort für Clips & Metadaten)
|
||||
- **n8n-Instanz** (Automatisierung, Steuerung Clipper, Analyse, Metadaten-Erzeugung)
|
||||
- **Twitch-Entwickler-Account** inkl. API-Key (für VOD- und Clip-Zugriff)
|
||||
- **Optional**: RTMP-Server, falls VODs lokal aufgezeichnet werden
|
||||
- **Ressourcen für den LXC**: 1 vCPU, 512 MB RAM, 10 GB Speicher reichen aus
|
||||
- **Grundwissen**: SSH-Verbindung, Nano-Editor, Basiskenntnisse in n8n
|
||||
|
||||
---
|
||||
|
||||
## 1) System vorbereiten
|
||||
Bevor wir ffmpeg und den Watch‑Dienst installieren, bringen wir den Container auf Stand und holen uns die Basis‑Tools.
|
||||
## Vorbereitung
|
||||
Bevor wir Clipper installieren, richten wir den Container sauber ein:
|
||||
|
||||
```bash
|
||||
apt update && apt upgrade -y
|
||||
apt install -y ffmpeg curl nano unzip inotify-tools davfs2
|
||||
```
|
||||
1. **LXC erstellen**
|
||||
- Debian 12, Name `clipper`
|
||||
- Ressourcen wie oben (1 vCPU, 512 MB RAM, 10 GB Speicher)
|
||||
|
||||
Prüfe die Zeitsynchronisation – falsche Zeitstempel machen Logs unübersichtlich:
|
||||
```bash
|
||||
timedatectl status
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2) Ordnerstruktur anlegen
|
||||
Wir brauchen eine saubere Struktur für Eingaben, Ausgaben, Temporärdateien und Logs.
|
||||
|
||||
```bash
|
||||
mkdir -p /srv/clipper/{watch,out,temp,logs}
|
||||
```
|
||||
|
||||
Prüfen:
|
||||
```bash
|
||||
ls -l /srv/clipper
|
||||
```
|
||||
Die Verzeichnisse `watch`, `out`, `temp`, `logs` sollten sichtbar sein.
|
||||
|
||||
---
|
||||
|
||||
## 3) Nextcloud‑Ordner einbinden
|
||||
Clipper arbeitet am einfachsten mit einem Nextcloud‑Ordner. Wir binden diesen via WebDAV ein.
|
||||
|
||||
1. Mountpunkt erstellen:
|
||||
2. **System aktualisieren und Basis-Tools installieren**
|
||||
```bash
|
||||
mkdir -p /mnt/nextcloud
|
||||
apt update && apt upgrade -y
|
||||
apt install -y curl nano unzip ffmpeg inotify-tools
|
||||
```
|
||||
2. Zugangsdaten in `/etc/davfs2/secrets` eintragen:
|
||||
```
|
||||
https://deine-nextcloud.tld/remote.php/dav/files/USERNAME/ USERNAME PASSWORT
|
||||
```
|
||||
3. Mount testen:
|
||||
|
||||
3. **Zeitsynchronisation prüfen**
|
||||
```bash
|
||||
mount -t davfs https://deine-nextcloud.tld/remote.php/dav/files/USERNAME/ /mnt/nextcloud
|
||||
timedatectl status
|
||||
```
|
||||
4. Symbolischen Link setzen:
|
||||
Eine saubere Zeitbasis ist entscheidend, da Clips später anhand exakter Sekundenmarken geschnitten werden.
|
||||
|
||||
4. **Ordnerstruktur vorbereiten**
|
||||
```bash
|
||||
ln -s /mnt/nextcloud/Clips /srv/clipper/watch
|
||||
mkdir -p /srv/clipper/{watch,out,temp,logs}
|
||||
```
|
||||
- `watch` → Eingangsordner für neue Videos (über Nextcloud oder Twitch-Import)
|
||||
- `out` → fertige Clips + Metadaten
|
||||
- `temp` → Zwischenablagen für Analyse
|
||||
- `logs` → Protokolle aller Abläufe
|
||||
|
||||
Prüfen: Wenn du eine Datei in den Nextcloud‑Ordner „Clips“ hochlädst, muss sie in `/srv/clipper/watch` erscheinen.
|
||||
Damit ist das Fundament gelegt: Der LXC ist vorbereitet, das System auf Stand, und die Ordnerstruktur für Clipper ist vorhanden.
|
||||
|
||||
---
|
||||
|
||||
## 4) Watch‑Script erstellen
|
||||
Jetzt kommt das Herzstück: ein Script, das neue Dateien erkennt und ffmpeg startet.
|
||||
## Hinweis zu späteren Schritten (Analyse & Schneiden)
|
||||
Im weiteren Verlauf des Tutorials berücksichtigen wir:
|
||||
- **Facecam-Erkennung**: Falls eine Facecam im Stream vorhanden ist, wird sie automatisch erkannt und als Overlay (z. B. Kreis, Rechteck oder wechselnde Form) in den Clip eingeblendet.
|
||||
- **Format-Anpassung**: Clips können zusätzlich ins **Hochformat (9:16)** umgewandelt werden, damit sie ohne Nachbearbeitung für TikTok, Instagram Reels oder YouTube Shorts nutzbar sind.
|
||||
- **Varianten**: Optional werden sowohl Querformat (16:9) als auch Hochformat exportiert, um alle Plattformen optimal zu bedienen.
|
||||
|
||||
```bash
|
||||
nano /usr/local/bin/clipper-watch.sh
|
||||
```
|
||||
Inhalt:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
inotifywait -m -e create -e moved_to /srv/clipper/watch --format '%f' | while read FILE
|
||||
do
|
||||
echo "$(date) - Neuer Clip: $FILE" >> /srv/clipper/logs/clipper.log
|
||||
ffmpeg -i "/srv/clipper/watch/$FILE" -c copy "/srv/clipper/out/${FILE%.mp4}_clip.mp4"
|
||||
done
|
||||
```
|
||||
Speichern und ausführbar machen:
|
||||
```bash
|
||||
chmod +x /usr/local/bin/clipper-watch.sh
|
||||
```
|
||||
### Untertitel-Steuerung (per n8n-Option)
|
||||
In n8n fügen wir ein **Auswahlfeld** „Untertitel“ hinzu (z. B. im Start-Form/Set-Node oder als Workflow-Variable), mit drei Modi:
|
||||
1. **Aus** – es werden keine Untertitel erzeugt.
|
||||
2. **SRT** – es wird automatisch eine `.srt` per STT (z. B. Whisper) erzeugt und neben dem Clip abgelegt.
|
||||
3. **Generiert nach Preset** – STT erzeugt Text + Timing, n8n wendet ein **Style-Preset** an und rendert die Untertitel ins Video ("burned-in").
|
||||
|
||||
---
|
||||
**Preset-Verwaltung:** Die Style-Presets (Schriftgröße, Outline, Hintergrund, Position, ggf. ASS/Drawtext-Parameter) liegen zentral, z. B. in Nextcloud unter `/presets/subtitles.json` oder als n8n Static Data. So können später weitere Presets ergänzt werden, ohne den Workflow umzubauen.
|
||||
|
||||
## 5) Dienst unter Systemd einrichten
|
||||
Damit das Script automatisch beim Booten startet, richten wir einen Service ein.
|
||||
|
||||
```bash
|
||||
nano /etc/systemd/system/clipper.service
|
||||
```
|
||||
Inhalt:
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Clipper Watch Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/clipper-watch.sh
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Aktivieren und starten:
|
||||
```bash
|
||||
systemctl enable --now clipper
|
||||
```
|
||||
|
||||
Prüfen: Lade eine Datei in den Nextcloud‑Ordner hoch. In `/srv/clipper/out` sollte ein Clip mit `_clip.mp4` erscheinen. Logs siehst du mit:
|
||||
```bash
|
||||
tail -f /srv/clipper/logs/clipper.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6) Optional – RTMP‑VODs anbinden
|
||||
Falls du bereits einen RTMP‑Server betreibst, kannst du dessen VOD‑Ordner zusätzlich einhängen:
|
||||
```bash
|
||||
mount -t nfs 192.168.1.50:/vod /srv/clipper/watch
|
||||
```
|
||||
So landen Streams direkt im Watch‑Verzeichnis.
|
||||
|
||||
---
|
||||
|
||||
## Ergebnis
|
||||
Clipper überwacht nun automatisch deinen Nextcloud‑Ordner. Jede neue Datei wird serverseitig verarbeitet und landet im Ausgabeordner. Optional lassen sich RTMP‑VODs nutzen. Dank Logs und Service läuft der Prozess stabil im Hintergrund.
|
||||
|
||||
---
|
||||
|
||||
## Nächste Schritte
|
||||
Im nächsten Kapitel kümmern wir uns um **Backup (Basis, privat)**, damit deine Clips und die Konfigurationen dauerhaft gesichert sind.
|
||||
**Pipeline-Auswirkung:**
|
||||
- Modus **SRT** → `.srt` speichern, Clip bleibt „clean“.
|
||||
- Modus **Preset** → `.srt` generieren **und** per ffmpeg (drawtext/subtitles) ins Video rendern; zusätzlich optional `.srt` beilegen.
|
||||
|
||||
Reference in New Issue
Block a user