Communitygithub.com

borjaperfra/launch-video-kit

Füge Sprachaufnahmen, Musik, Untertitel oder Kamerabewegungen zu einem mit Remotion erstellten Video hinzu, indem du die Komponenten dieses Repos verwendest. Nutze es, wenn Sprachausgabe per TTS erzeugt, eine Musikspur ausgewählt oder verlängert, Sprache über Musik gemischt, lesbare Untertitel über einer Benutzeroberfläche platziert oder eine virtuelle Kamera über eine in HTML nachgebaute UI bewegt werden muss.

Was ist launch-video-kit?

Das `launch-video-kit` ist ein modulares Werkzeugpaket für Remotion, das sich um die nicht-gestalterischen Aspekte der Videoproduktion kümmert: Audio, Untertitel und virtuelle Kamerabewegungen. Es löst das Problem, dass KI-Agenten weder Video sehen noch Audio hören können, und ersetzt subjektive Einschätzungen durch objektive, messbare Metriken. Der Fokus liegt auf einem strikten Arbeitsablauf: Zuerst wird die Sprachaufnahme generiert (`gen-voice.mjs`), die die tatsächliche Dauer jeder Zeile in Frames ausgibt, dann die Musik analysiert und nahtlos verlängert (`analyze-music.mjs` / `loop-music.mjs`). Danach folgen die Schnitte und schließlich die Untertitel, wobei jede Szene präzise auf den Raster der Musiktakte abgestimmt wird. Das Kit enthält klare, oft übersehene Regeln, wie die Trennung von Text- und Untertitel-Elementen, die korrekte Berechnung der Untertiteldauer als Lesezeit und die Vermeidung von Übersteuerungen durch Begrenzung des Ducking-Pegels auf ~0,85. Für die Qualitätssicherung werden Befehle wie `ffmpeg volumedetect` und die Erstellung von Kontaktbögen (`contact sheets`) bereitgestellt, um Lautstärkepegel und visuelle Konsistenz automatisiert zu prüfen. Es ist für Node 20+, `ffmpeg`/`ffprobe` ausgelegt und warnt vor plattformspezifischen Fallstricken wie der fehlenden `glob`-Unterstützung in Git Bash unter Windows.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/borjaperfra/launch-video-kit/tree/HEAD/.claude/skills/launch-video-kit

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht launch-video-kit?

Sechs Komponenten für den Teil des Videos, der nicht das Design ist: Audio, Untertitel und Kamera. Die README ist die Referenz (das Warum hinter jeder Entscheidung und die Zahlen, die sie untermauern). Dies hier ist die Arbeitsreihenfolge und die Regeln, die leicht übersehen werden.

Die Reihenfolge ist wichtig

  1. Die Stimme zuerst, der Schnitt danach. gen-voice.mjs gibt die tatsächliche Dauer jeder Zeile in Frames aus. Diese Zahlen legen die Szenenzeiten fest. Wenn du zuerst schneidest, bringt dich jeder echte Take aus dem Konzept und du musst alles neu machen.
  2. Danach die Musik, wobei das Fenster anhand seines Energiebogens ausgewählt wird (analyze-music.mjs) und bei Bedarf verlängert wird (loop-music.mjs).
  3. Dann die Schnitte, gebunden an das Taktgitter, das die Analyse ausgibt.
  4. Die Untertitel zum Schluss, wenn du bereits weißt, welche Sätze einen Bildschirmtitel haben und welche nicht.

Regeln, die leicht übersehen werden

  • Eine Audiodatei pro Zeile. Niemals einen langen Take.
  • Untertitel nur für das, was nicht auf dem Bildschirm steht. Wenn der Satz bereits in einem Titel erscheint, erzeugt die Untertitelung eine Textverdopplung an derselben Stelle.
  • dur eines Untertitels ist Lesezeit, nicht die Dauer der Sprachausgabe. Kürze die Bereiche von Hand, damit keiner den nächsten oder den folgenden Titel überlappt.
  • DUCK.base nicht über ~0,85. Bibliothekstracks kommen mit 0 dB und jeder zusätzliche Effekt clippt.
  • Kamera: ruhig, mit kurzen Fahrten. Weder ständiges Driften (lenkt ab) noch harte Schnitte (springen). Jede Szene beginnt im Bildausschnitt, in dem die vorherige endete.
  • Dieselbe Benutzeroberfläche auf beiden Seiten einer Naht, dieselbe Komponente. Wenn eine Szene von Hand gezeichnet wird, unterscheidet sie sich in einem Detail, und dieses Detail erscheint plötzlich beim Blockwechsel.
  • Iteriere über die Zeiten, nicht über den Inhalt. Eine Schleife über das Inhaltsarray, die in ein kürzeres Zeitarray indiziert, bringt den Render zum Absturz, sobald du einen Beat entfernst.

Überprüfen statt raten

Ein Agent sieht das Video nicht und hört es auch nicht. Alles, was subjektiv erscheint, hat eine Zahl:

# die Mischung, abschnittsweise: Sprache über Musik sollte wie Sprache allein klingen
ffmpeg -hide_banner -ss 27 -t 4 -i out.mp4 -af volumedetect -f null /dev/null

# der globale Peak muss unter -1 dB liegen
ffmpeg -hide_banner -i out.mp4 -af volumedetect -f null /dev/null

# Kontaktbogen statt Einzelbilder einzeln zu prüfen
ffmpeg -v error -i f_%d.png -vf "scale=560:-1,tile=5x4" -frames:v 1 sheet.png

loop-music.mjs überprüft bereits seine eigenen Nähte: Wenn eine nicht in Stille endet, wird dies gemeldet, und es müssen zwei andere Lücken gewählt werden.

Umgebung

  • ffmpeg und ffprobe müssen im PATH sein, sowie Node 20 oder höher.
  • In Git Bash unter Windows: ffmpeg unterstützt keine glob-Muster und drawtext fällt aufgrund fehlender fontconfig aus. Verwende nummerierte Sequenzen. bc ist ebenfalls nicht vorhanden.
  • staticFile() von Remotion kommt nicht gut mit Leerzeichen und Akzenten zurecht: Benenne Assets in ASCII um.
  • useVideoConfig().durationInFrames innerhalb einer <Sequence> ist die Dauer der SEQUENZ, nicht des gesamten Videos. Verwechsle dies nicht mit absoluten Frames.

Was es nicht kann

Ein TTS ist Sprache, keine Atmung. Seufzer, Lachen und Effekte müssen aufgenommen werden. Synthetische Blips hingegen kommen von ffmpeg – ein Beispiel findest du im README.

Verwandte Skills