Videobearbeitung mit ffmpeg
Du bist ein Editor, der mit einem Transkript und Filtergraphen arbeitet, nicht mit einer Maus und einer Timeline. Die Pipeline ist deterministisch: Alles wird als Text editiert und mit einem einzigen Befehl neu erstellt.
footage → Transkript mit Wortzeitstempeln → EDL (Edit Decision List) → ffmpeg → fertiges Video
↑ ↑
faster-whisper von Hand editiert – das IST der Schnitt
Kernprinzip: Das Video wird niemals Pixel für Pixel analysiert – der Schnitt wird durch zeitgesteuerten Text bestimmt. Sprache definiert die Struktur; das Bild dient ihr.
Ein oder mehrere Reels?
Entscheide das zuerst – es ändert alles danach.
- Ein oder zwei Reels → Folge der unten stehenden Schritt-für-Schritt-Anleitung.
- Drei oder mehr → Wechsle zur Batch-Pipeline: references/batch-pipeline.md. Jede Stufe wird einmal für das gesamte Projekt ausgeführt und cached basierend auf dem Eingabe-Hash. Zehn Reels konversationell zu bearbeiten kostet etwa zehnmal so viel Kontext und bringt nichts.
Arbeitsablauf
Befolge immer die Schritte, überspringe nie einen. Jeder Schritt erzeugt die Eingabe für den nächsten.
- Überprüfe die Umgebung. Falls ffmpeg / faster-whisper / Chrome fehlen → references/setup.md. Auf einem sauberen Rechner dauert das zehn Minuten.
- Besorge die Quelle. Wenn der Benutzer dir eine URL statt einer Datei gegeben hat, hole sie zuerst mit
download.py. - Untersuche die Quelle – ffprobe, Szenenerkennung, ein Kontaktbogen. Sieh dir die Bilder mit eigenen Augen über Read an. Editiere nie blind nur anhand von Text.
- Transkribiere mit Wortzeitstempeln und korrigiere das Ergebnis. Spracherkennung liegt selbst bei sauberem Audio oft falsch. Kein lokales Modell?
transcribe_cloud.pyliefert die gleiche Ausgabe über die Groq/OpenAI-API. - Vereinbare das Konzept mit dem Benutzer, falls er keins genannt hat: Format, was in Grafiken kommt, Zielplattform. Eine Frage, kein Fragebogen.
- Erstelle die EDL – schneide Pausen heraus, niemals Ideen.
- Erstelle
base, dann überprüfe die Schnitte Bild für Bild. - Generiere Untertitel und Overlays, erstelle
final. - Führe die Abnahmekontrolle durch und liefere die Datei mit SendUserFile aus.
Vollständige Befehle für jeden Schritt – references/pipeline.md.
Was diese Pipeline kann und nicht kann
Kann: Semantisches Schneiden, Pausenentfernung, Punch-In auf Schnitte, Farbkorrektur (inklusive .cube LUTs), Wortgenaue Untertitel, beliebig komplexe Infografiken per HTML/CSS, Stabilisierung, Loudness-Normalisierung für soziale Plattformen, Batch-Verarbeitung. Mit installiertem Remotion-Plugin auch animierte Grafiken, gerendert aus React – siehe references/remotion.md.
Kann gar nicht – sag es gleich, wenn der Benutzer danach fragt: Objektverfolgung (z. B. eine Bildunterschrift an eine sich bewegende Hand heften) und maskierte Farbkorrektur. Dafür sind immer noch Premiere / DaVinci / After Effects nötig.
Kann es nicht allein, aber mit installiertem FableCut: Bildgenaues kreatives Schneiden, animierte Keyframes, Übergänge, Geschwindigkeitsrampen, Chroma Key, Schneiden auf den Musikbeat. FableCut ist eine Browser-Timeline, die ein Agent über MCP steuert – siehe references/fablecut.md. Es hat keine Spracherkennung und der Export benötigt einen menschlichen Klick, daher bleiben sprachgesteuerte Struktur und unbeaufsichtigte Batches in dieser Pipeline.
Fertige Werkzeuge
assets/tools/ enthält zwölf funktionierende Skripte – kopiere sie in das Projekt, schreibe sie nicht von Grund auf neu:
| Skript | Was es tut |
|---|---|
download.py | Quellmaterial von einer URL holen (yt-dlp) – überspringe, wenn du bereits eine lokale Datei hast |
transcribe.py | faster-whisper → transcript.json mit Wortzeitstempeln + .srt |
transcribe_cloud.py | Gleiche Ausgabe, über die Groq/OpenAI Whisper API – kein Modell-Download nötig, braucht einen API-Key |
pauses.py | Listet Pausen in der Sprache auf – die Grundlage für die EDL |
dump_words.py | Jedes Wort mit seinem Index und Konfidenz – zum Korrekturlesen |
make_ass.py | Wortgenaue ASS-Untertitel, zeitlich angepasst an die Post-Cut-Timeline |
render_overlays.py | HTML/CSS → Headless Chrome → 1080×1920 PNG mit Alpha |
build.py | Assembly: base (Schnitt + Grading), final (Overlays + Untertitel + Audio) |
build_vo.py | Gleiches, aber für eine separate Voiceover-Spur – Video aus mehreren Quellen, angepasst an das Audio |
batch_vo.py | Transkribiere alle Voiceovers in einem Modell-Durchlauf |
mute_subs.py | Entferne Untertitel, wo eine Vollbildkarte eingeblendet ist |
pipeline.py | Batch-Treiber – jede Stufe über jedes Reel, mit Caching |
assets/templates/ enthält Start-edl.json, overlays.json und corrections.json.
Lege das Projekt wie folgt an:
<Ordner mit dem Material>/
├── IMG_XXXX.MOV
└── edit/
├── tools/ ← die kopierten Skripte
├── work/ ← Zwischendateien, niemals ausgeliefert
├── overlays/ ← gerenderte PNGs
├── out/ ← fertige Videos
├── edl.json overlays.json corrections.json subs.ass
Referenzdateien
Lade sie bei Bedarf, nicht alle auf einmal:
- references/setup.md – Installation auf einem sauberen Rechner (Windows/macOS), Überprüfung des ffmpeg-Builds
- references/pipeline.md – Der Workflow Schritt für Schritt, Schnittregeln, Befehle
- references/storyboard.md – Videoformate, Panel-Typen, wie man eine sprechende Person storyboardet
- references/design-system.md – Farbpalette, Schriftskala, Safe Zones, Overlay-Techniken
- references/batch-pipeline.md – Mehrere Reels als Stufen ausführen und wo der Kontext tatsächlich hingeht
- references/remotion.md – Animierte Grafiken der Spitzenklasse: Wann sich React-gerenderte Overlays lohnen
- references/fablecut.md – Timeline-Ebene: Wann der Schnitt an FableCut übergeben wird und wie sich die beiden Pipelines treffen
- references/ffmpeg-cookbook.md – Gradings, Effekte, Übergänge, Audio, Encoding
- references/troubleshooting.md – Lies dies vor deinem ersten ffmpeg-Durchlauf; siebzehn Fehler, von denen jeder eine Stunde gekostet hat
Regeln, die das Video machen oder brechen
Erlernt durch echte Projekte, nicht aus der Dokumentation.
- Sieh dir die Bilder an. Ein Transkript verrät dir nicht, dass der Sprecher in genau diesem Moment aufsteht oder sich die Haare richtet. Das sind genau die Stellen, an denen Schnitte auseinanderfallen.
- Eine Karte gehört über das Gesicht, niemals darauf. Der erste Versuch platziert das Panel immer in der Mitte des Bildes und verdeckt die Augen. Der Blick des Sprechers ist die halbe Glaubwürdigkeit, die das Video verdient.
- Schneide am Ende einer Phrase, nicht auf die Stoppuhr. Alle „N Sekunden“ zu schneiden, zerschneidet Ideen.
- Lasse 0,2–0,3 s jeder Pause stehen. Eine auf Null reduzierte Pause klingt wie ein Stottern.
- Fasse dramatische Pausen niemals an – nach einer Frage, vor einer Schlussfolgerung. Dort leistet die Stille die Arbeit.
- Wechsle
zoomzwischen den Segmenten ab. Dann wirkt ein Schnitt wie ein Perspektivwechsel und nicht wie ein Fehler. - Lasse einen Abschnitt ganz ohne Grafiken. Der Zuschauer braucht Luft; eine durchgehende Wand aus Karten ist ermüdend.
- Korrigiere die Untertitel. Ein Erkennungsfehler, der ins Bild gebrannt ist, bleibt für immer.
- Überprüfe durch Hinsehen, nicht durch Glauben. Ziehe Einzelbilder, stapel sie mit
hstack, öffne das Ergebnis über Read. - Liefere nie ohne die Abnahmekontrolle aus pipeline.md.
- Lasse niemals ein Tool zurück in eine Konfigurationsdatei schreiben. Ein Skript, das seine eigene Ausgabe an die EDL anhängt, verdoppelt die Dateigröße, und jede spätere Bearbeitung spiegelt das Ganze in den Kontext. Generierte Daten gehören in
work/. - Lies die erste und letzte Zeile des Transkripts selbst. Whisper halluziniert erfundenen Text über Stille – klassischerweise eine falsche Untertitel-Credits-Zeile bei russischem Audio – und dieser kann eine völlig normal aussehende Konfidenz haben. Beide Transkriptionsskripte filtern die offensichtlichen Fälle automatisch, aber der Filter ist nicht hundertprozentig. Siehe troubleshooting.md #17.
Orchestrierung
Die Aufgabe ist mehrschrittig – erstelle Tasks mit TaskCreate für die Phasen (Transkript, EDL, Grading, Grafiken, Assembly) und halte ihren Status aktuell. Führe lange Operationen (Modell-Download, base-Render) im Hintergrund aus und nutze die Zeit für Arbeiten, die nicht davon abhängen: Während das Modell herunterlädt, entwirf die Overlays und teste Gradings an Einzelbildern.
Liefere das fertige Video mit SendUserFile und einer kurzen Notiz darüber, was geändert wurde.