# Schnitt-Pipeline: Anleitung Stand 27.10.2026. Alles liegt in `C:\Users\lk-lo\Pino-Kanal\schnitt\`. ## Überblick | Datei / Ordner | Zweck | |---|---| | `pipeline\short_rendern.py` | Short (1080x1920) je Sprache aus einer Katalogzeile | | `pipeline\folge_exportieren.py` | Folge oder Türchen (1280x720) je Sprache | | `pipeline\letztes_bild.py` | letztes Bild eines Clips als PNG (für „Ende N“) | | `pipeline\laengen_check.py` | Video gegen Audio je Sprache, Bericht als Textdatei | | `pipeline\katalog_pruefen.py` | Katalog prüfen (Regeln, Längen, fehlende Clips, Abdeckung der Plätze) | | `pipeline\testlauf.py` | Selbsttest mit Dummy-Material (schreibt nur nach `schnitt\test\`) | | `katalog_shorts.csv` | Moment-Katalog (mit Excel öffnen, Trennzeichen Semikolon, UTF-8) | | `schnittlisten\schnittliste_vorlage.csv` | Vorlage für eine Folge/ein Türchen | | `ausgabe\` | Standard-Ausgabe: `shorts\`, `folgen\`, `startbilder\` | | `berichte\` | Textberichte der Läufe | | `tmp\` | Zwischendateien (die Skripte räumen eigene Dateien selbst auf) | ## Aufruf Immer mit `python -I` (isolierter Modus). In Git Bash oder PowerShell: ``` cd C:\Users\lk-lo\Pino-Kanal\schnitt\pipeline python -I katalog_pruefen.py python -I short_rendern.py --id S001 --audio-ordner C:\Users\lk-lo\Pino-Kanal\ton\shorts python -I folge_exportieren.py --name f01 --schnittliste ..\schnittlisten\f01.csv --audio-ordner C:\Users\lk-lo\Pino-Kanal\ton\f01 python -I letztes_bild.py --clip f01_c08 python -I laengen_check.py --name f01 --export-ordner ..\ausgabe\folgen ``` `--trocken` zeigt nur die ffmpeg-Befehle an. `--help` bei jedem Skript zeigt alle Optionen. ffmpeg wird unter dem WinGet-Pfad gefunden (Umgebungsvariable `PINO_FFMPEG_ORDNER` überschreibt ihn). ## Namensregeln - Clips: `f01_c09.mp4` (Folge 1, Clip 9), `t09_c03.mp4` (Türchen 9, Clip 3), `k_05.mp4` (Baustein, z. B. `k_01_kerze3.mp4`). Ordner: `clips\folge01`, `clips\folge02`, `clips\folge03`, `clips\tuerchen`, `clips\bausteine`. Wiederverwendete Clips immer unter dem Original-Namen nennen (Folge 2 Clip 54 = `f01_c54`). - Clip-Listen im Katalog und in Schnittlisten: `f01_c08-13` = Clip 8 bis 13, mehrere mit Komma: `f01_c08-09, f01_c11-13`. - Audio je Sprache: `S001_de.wav`, `S001_es.wav`, `S001_fr.wav` (Shorts) bzw. `f01_de.wav` … (Folgen). Auch mp3/m4a/flac. Standard-Ordner, wenn nichts angegeben ist: `Pino-Kanal\ton\shorts` (noch nicht angelegt, per `--audio-ordner` änderbar). - Ausgabe: `S001_de.mp4` bzw. `f01_de.mp4`, Startbilder `f01_c08_ende.png`. ## Short rendern 1. Zeile in `katalog_shorts.csv` (siehe Spalten unten), Clips vorhanden, Audio je Sprache vorhanden. 2. `python -I short_rendern.py --id S001,S002 --audio-ordner ` (oder `--alle` für alle Zeilen mit Status `offen`). 3. Ohne Katalog: `--clips "f01_c08-13" --modus blur --audio de=a.wav es=b.wav fr=c.wav --name probe`. Was passiert: Clips mit 0,5 s Überblendung aneinander, Zuschnitt `crop` (Mitte per `crop_x` 0 bis 1) oder `blur` (scharfes 16:9-Bild in der Mitte, unscharfer Rahmen), `tempo` 0,8 bis 1, dann `start_s`/`ende_s` auf der entstandenen Folge, 1 s Ausblenden am Ende (Bild und Ton), Sprache (+ optional `--musik`, leise, wird bei Sprache abgesenkt), zweistufig auf −14 LUFS. Jede Sprache wird so lang wie ihr Ton (+0,8 s). Ist der Ton länger als die Clips, wird das letzte Bild gehalten, ab 3 s mit Warnung. Pro Clip können `modus` und `crop_x` mit `|` getrennt angegeben werden (`crop|blur|blur`). Katalog-Spalten: `id; quelle; clips; tempo; start_s; ende_s; modus; crop_x; musik; thema; titel_de; titel_es; titel_fr; frueheste_veroeffentlichung; fenster; ton_hinweis; status_de; status_es; status_fr`. `fenster` A = bis 27.11., B = bis 10.12., C = danach. `status_*`: `offen`, `gerendert`, `eingeplant`, `veröffentlicht` (von Hand pflegen). ## Folge / Türchen exportieren 1. Schnittliste nach `schnittlisten\f01.csv` kopieren (Vorlage) und ausfüllen: Clip, Ausschnitt, `tempo`, `halten_s` (Standbild, z. B. 3 für Mitmachpause), `uebergang_s`. 2. Ton je Sprache als fertige Spur (Sprache und Lieder schon an der richtigen Stelle, mit den Pausen). 3. `python -I folge_exportieren.py --name f01 --schnittliste ..\schnittlisten\f01.csv --audio-ordner `. Eine Bildspur für alle Sprachen. Die Länge richtet sich nach der längsten Sprache; alle Fassungen werden gleich lang. Das Skript warnt, wenn das Bild am Ende mehr als 3 s gehalten werden muss, wenn eine Sprache mehr als 8 s vor Bildende endet oder wenn die Sprachen mehr als 20 % auseinanderliegen. Dann besser eine Schnittliste je Sprache: `--schnittliste ..\schnittlisten\f01_{lang}.csv` (dann entsteht je Sprache eine eigene Bildspur). Mehr als 70 Clips in einer Schnittliste werden abgelehnt: die Gesamtfolge aus fertigen Türchen-Exporten zusammensetzen. ## Letztes Bild `python -I letztes_bild.py --clip f01_c08 f01_c09` oder `--ordner folge01` schreibt `f01_c08_ende.png` (Original-Auflösung, verlustfrei). Das ist das Startbild für Clip 9. ## Längen-Check - Vorab: `--name f01 --schnittliste … --audio-ordner …` (Bildlänge gegen Ton je Sprache, Differenz in Sekunden). - Nachher: `--name f01 --export-ordner ..\ausgabe\folgen` (Auflösung, Bild- und Tonlänge, Lautheit, True Peak). - Bericht: `berichte\laengen__.txt`. Rückgabecode 1 = es gibt Warnungen. ## Sicherheitsregeln der Skripte - Geschrieben wird nur unter `schnitt\`. Andere Ziele (z. B. `Pino-Kanal\shorts`) nur mit `--ausserhalb`, z. B. `--ausgabe C:\Users\lk-lo\Pino-Kanal --ausserhalb` (dann entstehen `shorts\`, `folgen\`, `startbilder\` dort). - Vorhandene Dateien werden nicht überschrieben (`--ueberschreiben` erlaubt es). - Clips und Audio werden nur gelesen. ## Zielwerte −14 LUFS integriert, True Peak höchstens −1,5 dBFS, AAC 192 kbit/s, 48 kHz, H.264 CRF 18, 24 fps. Shorts 20 bis 45 s, Ende ruhig. Kein eingebrannter Text, Untertitel nur als eigene SRT.