Was macht ffmpeg-pipeline?
Der Klebe-Skill. Er wandelt generierte (oder bereitgestellte) Standbilder in ein bewegtes MP4 mit Sprachausgabe um und erledigt die alltäglichen Medienaufgaben, mit denen ein Agent ständig konfrontiert ist.
Erfordert ffmpeg + ffprobe. Benötigt anon-image für den Prompt-Modus und
anon-audio für --narration; beide werden automatisch als Geschwister entdeckt, und beide
sind optional, wenn Sie stattdessen --images / --audio übergeben.
Befehle
| Befehl | Was er macht |
|---|---|
video | Standbilder (generiert oder über --images) → MP4 mit Zoompan-Bewegung + Überblendungen, optionaler Sprachausgabe und Musikbett |
slideshow | vorhandene Bilder → MP4 |
mux | eine Audiospur an ein Video anhängen, mit Wiederholung/Auffüllen auf die passende Länge |
frames | alle N Sekunden Einzelbilder extrahieren |
sheet | Kontaktabzug (N gleichmäßig verteilte Einzelbilder mit Zeitstempeln) |
gif | beschnittenes, palettenoptimiertes GIF aus einem beliebigen Abschnitt |
normalize | Audio auf −16 LUFS lautheitsnormalisieren |
speed | Audiogeschwindigkeit ohne Tonhöhenverschiebung ändern (verkettetes Atempo) |
info | einzeilige ffprobe-Zusammenfassung |
probe | Abhängigkeitsprüfung |
Kurzanleitung
# die gesamte Pipeline in einem Aufruf: 3 generierte Einstellungen, je 4 s, mit Sprachausgabe
vidkit.py video "a lighthouse on a basalt cliff at dusk, cinematic" -o story.mp4 \
--shots 3 --seconds 4 --ratio 16:9 \
--narration "Somewhere on a cold coast, a lighthouse keeps its watch." \
--voice en-GB-RyanNeural
# bereits vorhandene Bilder wiederverwenden
vidkit.py video --images shots/ -o out.mp4 --seconds 3 --music bed.mp3
# Medienbearbeitung
vidkit.py mux clip.mp4 voiceover.mp3 -o final.mp4
vidkit.py sheet final.mp4 -o preview.jpg --cols 4 --count 8
vidkit.py gif final.mp4 -o teaser.gif --start 1 --dur 2.5 --width 480
vidkit.py normalize voiceover.mp3 -o clean.mp3
vidkit.py info final.mp4
Zeitberechnung (damit Sie das Ergebnis vorhersagen können)
Mit N Einstellungen von je S Sekunden und einer 0,8 s Überblendung:
duration = N*S - (N-1)*0.8
3 × 4 s → 10,4 s. Falls die Sprachausgabe länger ist als das Bild, wird das Video
wiederholt, um sie abzudecken (-stream_loop). Ist sie kürzer, wird das Audio mit
Stille aufgefüllt, damit Sie nie das Ende verlieren. Beide Fälle werden behandelt – fügen Sie
nicht selbst -shortest hinzu.
Entscheidungsregeln
- Seitenverhältnis:
16:9für YouTube/Web,9:16für Shorts/Reels/TikTok,1:1für Feeds und Thumbnails. Alles wird im Scale-to-cover-Verfahren skaliert und dann beschnitten, sodass Quellbilder jeder Form ohne Letterboxing überleben. - Sekunden pro Einstellung: 3–4 s sind für ein Standbild richtig; länger als 6 s eines statischen Bildes wirkt tot. Wenn Sie mehr Laufzeit brauchen, erhöhen Sie die Anzahl der Einstellungen, nicht die Sekunden.
- Musikbett: übergeben Sie
--music, und es wird mit 12 % unter der Stimme gemischt. Mischen Sie nicht zwei laute Quellen; normalisieren Sie zuerst. - GIF: halten Sie die Breite ≤ 480 und die Dauer ≤ 3 s, sonst überschreitet die Datei die Chat-Limits.
Fehlermodi
| Symptom | Ursache | Lösung |
|---|---|---|
missing dependency: ffmpeg | nicht installiert | apt install ffmpeg (oder brew install ffmpeg) |
ffmpeg failed: … Invalid argument bei Zoompan | ungerade Quellmaße | der Filter skaliert bereits auf W*2; wenn Sie ihn bearbeitet haben, verwenden Sie gerade Zahlen |
| Ausgabe ist stumm | Sprachdatei fehlt/leer | Pfad prüfen; --narration akzeptiert entweder Text oder einen Audio-Pfad |
| Ausgabe viel kürzer als erwartet | Audio kürzer als Video und irgendjemand hat -shortest hinzugefügt | entfernen Sie es; vidkit.py füllt stattdessen auf |
contact sheet needs Pillow | kein Pillow | pip install pillow, oder verwenden Sie frames + Ihren eigenen Kontaktabzug |
Hinweise für den Agenten
- Rendern Sie in 720p, es sei denn, der Benutzer wünscht mehr. Das ist 4× schneller und niemand sieht den Unterschied auf einem Laptop-Bildschirm.
- Führen Sie immer
infoauf dem endgültigen Artefakt aus und teilen Sie dem Benutzer die tatsächliche Dauer, Auflösung und Größe mit – das fängt stille Fehler. - Geben Sie den MP4-Pfad aus; betten Sie ihn nicht ein. Die Datei ist das Artefakt.