Was macht video-craft?
Zwei Aufgaben, ein Standard. Editiere aufgenommenes Material oder erstelle einen Film aus einem Brand Kit und Text. In beiden Fällen wird die Arbeit geplant, bevor sie gerendert wird, durch exakte Skripte ausgeführt und durch Messungen geprüft, bevor jemand erfährt, dass sie abgeschlossen ist.
Was ein Video professionell aussehen lässt, in der Reihenfolge:
- Struktur. Ein Hook in den ersten 3 Sekunden, eine Idee, nichts, was seine Zeit nicht verdient.
- Rhythmus. Schnitte und Bewegungen landen auf Sprache und auf dem Beat; nichts ist tot, nichts hetzt.
- Handwerkliche Details. Luft um jeden Schnitt, Untertitel, die sich gut lesen lassen, Bewegungen, die auslaufen, Ton, der laut genug ist und niemals übersteuert.
- Nachweis.
qa.pyläuft erfolgreich und das Kontaktblatt wurde betrachtet.
Schnell-Übersicht
| Aufgabe | Vorgehen |
|---|---|
| „Aufnahme straffen / bereinigen“ | transcribe → plan_cuts → EDL prüfen → render → qa |
| „Short/Reel/TikTok daraus machen“ | Wie oben, plus captions.py --style punch, render.py --preset shorts --fit crop (oder blur bei Bildschirmaufnahmen) |
| „Untertitel hinzufügen“ | transcribe.py → captions.py → render.py --captions (oder .srt ausliefern) |
| „Musik hinzufügen“ | render.py --music bed.mp3 (wird automatisch unter Sprache geduckt) |
| „Laut genug machen / Audio korrigieren“ | render.py --voice --denoise, Zielwerte aus platforms.md |
| „Marken-Intro / Logo-Enthüllung / Sting“ | films/brand-sting kopieren, Brand Kit ausfüllen, Stills → Draft → Master → qa |
| „Launch-Video / Werbespot / Anzeige“ | films/launch kopieren, Text schreiben, Formate wählen, Stills → Draft → Master → qa |
| „Video prüfen“ | qa.py video.mp4 --sheet sheet.jpg [--safe] |
| Projekt bereits auf Remotion | references/remotion.md |
Voraussetzungen
ffmpeg 6+ und Python 3.9+ für die Bearbeitung. Transkription: pip install faster-whisper (oder openai-whisper, oder whisper.cpp). Filme: Node 18+ und Playwright (npm i -D playwright && npx playwright install chromium). Untertitel werden mit libass gebrannt, wenn ffmpeg es unterstützt, sonst mit Pillow gezeichnet (pip install pillow). Führen Sie python3 scripts/doctor.py aus, um zu sehen, was installiert ist.
Alle Skripte akzeptieren --help. Arbeiten Sie in einem Ordner pro Auftrag: work/ für Zwischenergebnisse, out/ für Liefergegenstände.
Filmmaterial bearbeiten
python3 scripts/transcribe.py raw.mp4 -o work/words.json # Wortgenaues Transkript
python3 scripts/plan_cuts.py raw.mp4 --words work/words.json -o work/edl.json
python3 scripts/captions.py work/words.json --edl work/edl.json --style clean -o work/cap
python3 scripts/render.py work/edl.json -o out/final.mp4 --preset youtube \
--captions work/cap.cues.json --music bed.mp3 --voice --zoom auto
python3 scripts/qa.py out/final.mp4 --edl work/edl.json --sheet out/sheet.jpg \
--words work/words.json --words-check
- Lesen Sie zuerst das Transkript und entscheiden Sie über die Struktur: was komplett rauskommt (Sektionsschnitte wirken sauber; viele Schnitte mitten im Satz wirken nervös), und was der Hook ist. Fügen Sie bei Bedarf Entscheidungen über ganze Sektionen manuell in die
segmentsder EDL ein. plan_cuts.pyentfernt tote Stellen (verkürzt auf einen Atemzug, nicht auf Null), Füllwörter und verworfene Wiederholungen (behält die letzte Aufnahme). Stille wird pro Aufnahme gemessen, jede Kante wird auf reales Audio geschnappt, die Polsterung ist asymmetrisch (80 ms vor, 140 ms nach) und reicht nie in ein entferntes Wort hinein. Lesen Sie seine Liste: nachdrückliche Wiederholungen können wie eine verworfenen Aufnahme aussehen.- Zwischenstopp mit der Person bei allem, was länger dauert: Dauer vorher/nachher, geschnittene Sektionen, verworfene Wiederholungen. Deren Anmerkungen werden zu EDL-Änderungen.
render.pyerledigt alles in einem ffmpeg-Graphen: framegenaue Trims, 8-ms-Überblendungen an jedem Schnitt, konstante Bildrate, Punch-Ins, Umskalierung, Untertitel, Sprach-Polish, geduckte Musik und Zwei-Durchgangs-Lautstärke.qa.py, dann das Blatt ansehen.--words-checktranskribiert das Ergebnis erneut und benennt jedes Wort, das ein Schnitt verschluckt hat.
Urteilsvermögen, Zahlen und Fehlermodi: references/editing.md. Audio: references/sound.md.
Filme erstellen (Marken-Intros, Launch-Spots, Anzeigen)
cp -r films/brand-sting my-film && python3 scripts/sfx.py --out my-film/sfx
# PARAMS in my-film/index.html editieren (oder --params '{"name": "...", ...}' übergeben)
node scripts/render_film.mjs my-film/index.html --stills 0.5,1.6,2.4,3.5 -o work/stills # ansehen
node scripts/render_film.mjs my-film/index.html --draft -o work/draft.mp4 # Rhythmus beurteilen
node scripts/render_film.mjs my-film/index.html --blur 4 -o out/intro.mp4 # Master
python3 scripts/qa.py out/intro.mp4 --no-gaps --sheet out/intro.sheet.jpg --safe
- Zuerst das Brand Kit (
references/brand-intro.md): die offizielle Logodatei, Hex-Farben, Schriftart, genaue Wortlaute, Register, Formate, Ton und eine Quelle für jede Zahl. Niemals ein Logo neu zeichnen oder einfärben; niemals Behauptungen, Kunden oder Produkt-UI erfinden. - Beat-Sheet vor dem Code: jeder Beat mit seiner Zeit, was sich bewegt, der Beschleunigung und dem Ton. Wählen Sie ein Register (premium, clean, tech, bold, playful) und skalieren Sie die gesamte Zeitleiste damit.
- Aufbauen mit
assets/film.js: Jedes Pixel ist eine Funktion vont.Film.tween,Film.spring,Film.stagger,Film.random(seed); keine CSS-Animationen, Timer oderDate.now. Öffnen Sie das HTML in einem Browser, um es in Echtzeit zu scrubben. - Stills bei jedem Beat, dann ein Entwurf, dann der Master. Korrigieren Sie, was die Stills zeigen, bevor Sie Video rendern. Master rendern ~2–5 Bilder pro Sekunde; Entwürfe sind 10× schneller.
- Ton ist Teil des Films.
scripts/sfx.pysynthetisiert das Kit (Hit, Boom, Whoosh ×3, Riser, Pop, Tick, Chime, Bett); Cues sitzen in der Filmkonfiguration und werden vom Renderer gemischt und auf Lautstärke gesetzt. Der Peak des Hits landet auf dem Enthüllungsframe.
Vorlagen: films/brand-sting (3–7 s Logo-Enthüllung, fünf Register, 16:9 / 9:16 / 1:1) und films/launch (15 s Hook → Problem → Enthüllung → Nachweis → CTA, die drei Formate, 9:16 im Safe Area der Plattformen, *wort*-Betonung). Verwenden Sie sie als Ausgangspunkte; ändern Sie die Struktur, wenn es der Briefing erfordert.
Doktrin (Timings, Easing nach Rolle, Staffelung, Schriftgrößen, Farbe, Übergänge mit Grund, die generischen Looks, die es zu vermeiden gilt, und die Tests, die sie abfangen): references/motion.md.
Immer geltende Regeln
- Jeden Trim neu encodieren. Stream-Copy-Trims rasten auf Keyframes ein.
- Konstante Bildrate bei allem, was ausgeliefert wird; H.264 + yuv420p + AAC +
+faststart. - Lautstärke nach Messung: -14 LUFS / ≤ -1 dBTP für Web und Social, -16 für Podcasts.
- Text innerhalb sicherer Bereiche: bei 9:16 nichts in den oberen 288 px, unteren 672 px oder rechten 192 px (bei 1080×1920). Schriftart ≥ 28 px bei 1080.
- Ehrlicher Inhalt: echte Logos, echte Zahlen mit Quellen, echte Produkt-UI; angeben, wenn Musik, Stimme oder Filmmaterial generiert ist.
- Nur lizenzierte Musik. Niemals Audio von Videos oder Streaming-Diensten extrahieren.
- Fertig bedeutet geprüft:
qa.pyläuft erfolgreich, das Blatt wurde angesehen, und alles, was nicht geprüft werden konnte, wird klar benannt.
Dateien
| Pfad | Was |
|---|---|
scripts/transcribe.py | words.json mit Wortzeiten (faster-whisper / whisper / whisper.cpp) |
scripts/plan_cuts.py | EDL: Pausen, Füllwörter, Wiederholungen entfernt, mit Begründungen |
scripts/captions.py | SRT, gestyltes ASS und Cue-JSON auf der editierten Zeitleiste |
scripts/render.py | EDL → fertiges Video (Presets, Umskalierung, Untertitel, Musik, Lautstärke) |
scripts/qa.py | Format, Länge, Schwarz, Freeze, tote Stellen, Lautstärke, Wörter, Kontaktblatt |
scripts/sfx.py | Synthetisiertes Sound-Kit |
scripts/render_film.mjs | HTML-Film → MP4 (Entwurf, Master mit Bewegungsunschärfe, Stills, Poster) |
scripts/doctor.py | Was installiert ist und was fehlt |
assets/film.js | Deterministische Bewegungs-Engine + Browser-Vorschau mit Scrubber |
films/ | Brand-Sting- und Launch-Vorlagen |
references/ | Bearbeitung, Bewegung, Marken-Intro, Ton, Plattformen, ffmpeg, Remotion |