Video Editor
Überblick
KI-gestützter Video-Workflow mit drei Engines:
- ffmpeg – Bearbeiten vorhandenen Materials (Trimmen, Komprimieren, Zusammenführen, Skalieren, Geschwindigkeit, Stabilisieren, Wasserzeichen, Audio, GIF, Thumbnail, Übergänge, Untertitel)
- Remotion – Erstellen neuer Videoinhalte (Titelkarten, Lower Thirds, Endkarten, Teaser, animierte Overlays)
- Whisper – Transkription und Untertitelgenerierung
Zusätzliche Funktionen:
- Hardwarebeschleunigung auf Apple Silicon via
h264_videotoolbox / hevc_videotoolbox
- Theme-Integration mit Design-Assets aus
~/design-assets/color-palettes/
- Plattform-Voreinstellungen für YouTube, Instagram, TikTok, Twitter und mehr
- Workspace-Caching für Remotion, um wiederholte
npm install-Aufrufe zu vermeiden
Wann verwenden
Auslösen bei ALLEN dieser Benutzerabsichten:
| Kategorie | Schlüsselwörter |
|---|
| Grundlegende Bearbeitung | trimmen, schneiden, kürzen, teilen |
| Kompression | komprimieren, Größe reduzieren, verkleinern, optimieren |
| Zusammenführen | zusammenführen, kombinieren, konkatenieren, verbinden |
| Skalieren | skalieren, zuschneiden, anpassen, Seitenverhältnis, Hochformat, Querformat, Quadrat |
| Geschwindigkeit | beschleunigen, verlangsamen, Zeitlupe, Zeitraffer, vorspulen, rückwärts |
| Stabilisierung | stabilisieren, verwackelt, glätten, Verwacklung entfernen |
| Übergänge | Überblendung, Kreuzblende, auflösen, wischen, Übergang |
| Untertitel | Untertitel, SRT, transkribieren, Sprache-zu-Text |
| Titelkarten | Titel, Intro, Eröffnung, animierter Text |
| Lower Thirds | Lower Third, Namensetikett, Chyron, Namensleiste |
| Endkarten | Endkarte, Outro, Endbild, Schluss |
| Teaser | Teaser, Trailer, Vorschau, Höhepunkte, Zusammenstellung |
| Thumbnails | Vorschaubild, Poster, Einzelbild extrahieren, Screenshot |
| GIFs | GIF, animiertes Bild, Schleife, Meme |
| Wasserzeichen | Wasserzeichen, Logo-Overlay, Branding |
| Audio | Audio, Lautstärke, normalisieren, Lautheit, stumm, Einblenden, Ausblenden, mischen, Audio extrahieren |
| Info | Info, Details, Dauer, Auflösung, Codec, Bitrate, Metadaten |
| Pipeline | Pipeline, Stapel, Arbeitsablauf, mehrstufig |
| Plattform | YouTube, Instagram, TikTok, Twitter, Reels, Shorts |
Befehlsreferenz
Bearbeitungsbefehle (ffmpeg)
| Befehl | Beschreibung | Beispiel |
|---|
/trim | Einen Abschnitt aus einem Video ausschneiden | „video.mp4 von 0:30 bis 1:45 trimmen“ |
/compress | Dateigröße mit Qualitätskontrolle reduzieren | „auf unter 10 MB komprimieren“ |
/merge | Mehrere Clips zu einem zusammenführen | „clip1.mp4 und clip2.mp4 mit Überblendung zusammenführen“ |
/resize | Abmessungen, Seitenverhältnis ändern, zuschneiden oder anpassen | „auf 1080x1080 Quadrat skalieren“ |
/speed | Beschleunigen, verlangsamen oder umkehren | „2x Geschwindigkeit“ oder „0,5x Zeitlupe“ |
/stabilize | Kameraverwacklung entfernen (vidstab zwei Durchgänge) | „verwackeltes.mp4 stabilisieren“ |
/watermark | Bild oder Text auf Video legen | „logo.png unten-rechts hinzufügen“ |
/audio | Lautstärke, normalisieren, mischen, ein-/ausblenden, extrahieren, stumm | „Audio auf -14 LUFS normalisieren“ |
/thumbnail | Einzelbild als Bild extrahieren | „Thumbnail bei 0:15“ |
/gif | Animiertes GIF aus Videoausschnitt erstellen | „GIF von 0:05 bis 0:10 bei 320px“ |
/extract | Audio- oder Untertitelspuren extrahieren | „Audio als mp3 extrahieren“ |
/info | Video-Metadaten und Streamdetails anzeigen | „info video.mp4“ |
Erstellungsbefehle (Remotion)
| Befehl | Beschreibung | Beispiel |
|---|
/title-card | Animierte Titelcard mit Theme-Unterstützung | „Titelkarte: Coming Soon, wad Theme, Zoom-Animation“ |
/lower-third | Animiertes Namens-/Titel-Overlay | „Lower Third: John Doe, CEO, moderner Stil“ |
/end-card | Animiertes Outro mit CTA und sozialen Medien | „Endkarte: Abonnieren!, @handle, ea Theme“ |
/teaser | Mehrfach-Clip-Zusammenstellung mit Übergängen und Titeln | „Teaser aus dem clips/-Ordner, 30 Sekunden“ |
Transkriptionsbefehle (Whisper)
| Befehl | Beschreibung | Beispiel |
|---|
/transcribe | SRT/VTT aus Sprache generieren | „Interview.mp4 transkribieren“ |
/add-captions | Transkribieren + Untertitel in Video einbrennen | „talk.mp4 Untertitel hinzufügen“ |
Orchestrierung
| Befehl | Beschreibung | Beispiel |
|---|
/pipeline | Mehrstufige Verarbeitungskette | „trimmen, Titelcard hinzufügen, für Instagram komprimieren“ |
Arbeitsablauf
Schritt 1: Verfügbare Werkzeuge prüfen
which ffmpeg ffprobe && echo "ffmpeg: ok"
node --version && echo "node: ok"
which whisper && echo "whisper: ok" || echo "whisper: nicht installiert (Untertitel benötigen manuelle .srt)"
ffmpeg -encoders 2>/dev/null | grep videotoolbox && echo "hw accel: ok" || echo "hw accel: nicht verfügbar"
ffmpeg -filters 2>/dev/null | grep vidstab && echo "vidstab: ok" || echo "vidstab: nicht verfügbar (brew install ffmpeg --with-libvidstab)"
Wenn ffmpeg fehlt: „Installiere mit brew install ffmpeg“
Wenn Node.js fehlt: „Installiere von https://nodejs.org oder mit brew install node“
Wenn vidstab fehlt: „ffmpeg neu installieren mit vidstab: brew install ffmpeg --with-libvidstab“
Schritt 2: Anfrage klassifizieren
| Benutzerabsicht | Engine | Pfad |
|---|
| Vorhandenes Material bearbeiten | ffmpeg | Schritt 3a |
| Neue Videoinhalte erstellen | Remotion | Schritt 3b |
| Audiobearbeitung | ffmpeg Audiofilter | Schritt 3a |
| Informationen/Überprüfung | ffprobe | Schritt 3a |
| Kombinierte Pipeline | beide orchestrieren | Schritt 3c |
| Plattformveröffentlichung | Voreinstellungen skalieren + komprimieren | Schritt 3a |
| Transkription | Whisper + ffmpeg | Schritt 3a |
Schritt 3a: ffmpeg-Pfad
- Nach Eingabedatei(en) fragen, falls nicht angegeben
- Mit ffprobe untersuchen:
ffprobe -v quiet -print_format json -show_format -show_streams "<datei>"
- Hardwarebeschleunigung erkennen (macOS Apple Silicon):
ffmpeg -encoders 2>/dev/null | grep h264_videotoolbox
- Ausgabekonfliktbehandlung:
OUTPUT="trimmed_video.mp4"
COUNTER=2
while [ -f "$OUTPUT" ]; do
OUTPUT="trimmed_video_${COUNTER}.mp4"
COUNTER=$((COUNTER + 1))
done
- ffmpeg-Befehl erstellen
- Jedes Flag in einfachem Deutsch erklären
- Ausgabedateinamen nennen (Quelle niemals überschreiben)
- Fragen: „Soll ich das ausführen?“
- Ausführen, dann überprüfen:
if [ $? -eq 0 ]; then
echo "Erfolg"
ffprobe -v quiet -print_format json -show_format "$OUTPUT" | grep -E '"duration"|"size"'
else
echo "Fehler — siehe ffmpeg-Ausgabe oben"
fi
- Ausgabepfad + Dateigröße + Dauer melden
Ausgabenbenennungskonventionen:
| Befehl | Ausgabemuster |
|---|
| Trimmen | trimmed_<dateiname> |
| Komprimieren | compressed_<dateiname> |
| Zusammenführen | merged_output.<endung> |
| Skalieren | resized_<dateiname> |
| Geschwindigkeit | speed_<faktor>x_<dateiname> |
| Stabilisieren | stabilized_<dateiname> |
| Wasserzeichen | watermarked_<dateiname> |
| Untertitel | captioned_<dateiname> |
| Audio extrahieren | <name>.mp3 |
| Audio geändert | audio_<dateiname> |
| Untertitel extrahieren | <name>.srt |
| Thumbnail | thumb_<name>_<zeitcode>.jpg |
| GIF | <name>.gif |
Schritt 3b: Remotion-Pfad
- Prüfen, ob Node.js installiert ist
- Workspace-Caching – vorhandenen Workspace wiederverwenden:
WORKSPACE="/tmp/remotion-workspace"
if [ -d "$WORKSPACE/node_modules" ]; then
echo „Verwende gecachten Remotion-Workspace“
else
echo „Erstelle Remotion-Workspace (erster Durchlauf)...“
mkdir -p "$WORKSPACE"
cp -r ~/project-templates/remotion-video/* "$WORKSPACE/"
cd "$WORKSPACE" && npm install
fi
- Theme laden aus
~/design-assets/color-palettes/:
- Quelldateien der Komposition nach Bedarf schreiben oder aktualisieren
- Verfügbare Kompositionen:
TitleCard – animierter Titel mit mehreren Animationsvoreinstellungen
LowerThird – Namens-/Titel-Overlay mit Akzentbalken
EndCard – Outro mit CTA, sozialen Medien, Logo
Teaser – Mehrfach-Clip-Zusammenstellung mit TransitionSeries
- Rendern:
cd "$WORKSPACE"
npx remotion render src/index.ts <CompositionId> /pfad/zur/ausgabe.mp4 \
--props='{"text":"Titel","bg":"#09090B","fg":"#FFFFFF","accent":"#7C3AED"}'
- Ausgabe in das Arbeitsverzeichnis des Benutzers kopieren
- Ausgabepfad + Dauer melden
Schritt 3c: Kombinierte Pipeline
Bei mehrstufigen Anfragen (z.B. „einen Teaser mit Titelcard, Clips und Endcard erstellen“):
- Planen – jeden Schritt dem Benutzer vor der Ausführung beschreiben
- Erstellen – zuerst Remotion-Inhalte generieren (Titelkarten, Endkarten)
- Verarbeiten – Quellclips mit ffmpeg trimmen/skalieren
- Zusammenstellen – alle Teile mit Übergängen mittels ffmpeg zusammenführen
- Finalisieren – für die Zielplattform komprimieren, falls angegeben
- Zwischen den Hauptphasen (Erstellung vs. Bearbeitung vs. Zusammenstellung) Bestätigung einholen
ffmpeg-Kurzreferenz
Trimmen (verlustfrei)
ffmpeg -ss <start> -to <ende> -i eingabe.mp4 -c copy trimmed_eingabe.mp4
Komprimieren – Web (CRF 23)
ffmpeg -i eingabe.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k compressed_eingabe.mp4
Komprimieren – hardwarebeschleunigt (macOS)
ffmpeg -i eingabe.mp4 -c:v h264_videotoolbox -b:v 5M -c:a aac -b:a 128k compressed_eingabe.mp4
Zusammenführen mit Überblendung
ffmpeg -i clip1.mp4 -i clip2.mp4 \
-filter_complex "[0][1]xfade=transition=fade:duration=1:offset=<offset>,format=yuv420p[v];[0:a][1:a]acrossfade=d=1[a]" \
-map "[v]" -map "[a]" merged_output.mp4
Skalieren / Größe ändern
ffmpeg -i eingabe.mp4 -vf "scale=1920:1080" resized_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "scale=1080:-1" resized_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "crop=min(iw\,ih):min(iw\,ih)" cropped_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:black" padded_eingabe.mp4
Geschwindigkeit ändern
ffmpeg -i eingabe.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" speed_2x_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "setpts=2.0*PTS" -af "atempo=0.5" speed_0.5x_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "setpts=0.25*PTS" -af "atempo=2.0,atempo=2.0" speed_4x_eingabe.mp4
ffmpeg -i eingabe.mp4 -vf "reverse" -af "areverse" reversed_eingabe.mp4
Wasserzeichen-Overlay
ffmpeg -i eingabe.mp4 -i logo.png \
-filter_complex "overlay=W-w-20:H-h-20" watermarked_eingabe.mp4
ffmpeg -i eingabe.mp4 -i logo.png \
-filter_complex "overlay=20:20" watermarked_eingabe.mp4
ffmpeg -i eingabe.mp4 -i logo.png \
-filter_complex "[1]format=rgba,colorchannelmixer=aa=0.3[wm];[0][wm]overlay=(W-w)/2:(H-h)/2" watermarked_eingabe.mp4
ffmpeg -i eingabe.mp4 \
-vf "drawtext=text='Meine Marke':fontsize=24:[email protected]:x=W-tw-20:y=H-th-20" watermarked_eingabe.mp4
Videostabilisierung (vidstab zwei Durchgänge)
ffmpeg -i verwackelt.mp4 -vf vidstabdetect=shakiness=10:accuracy=15 -f null -
ffmpeg -i verwackelt.mp4 -vf vidstabtransform=smoothing=30:input=transforms.trf stabilized_verwackelt.mp4
Audiobearbeitung
ffmpeg -i eingabe.mp4 -af "volume=1.5" audio_eingabe.mp4
ffmpeg -i eingabe.mp4 -af "loudnorm=I=-14:TP=-1:LRA=11" audio_eingabe.mp4
ffmpeg -i video.mp4 -i musik.mp3 \
-filter_complex "[0:a]volume=1.0[a1];[1:a]volume=0.3[a2];[a1][a2]amix=inputs=2:duration=first[a]" \
-map 0:v -map "[a]" audio_eingabe.mp4
ffmpeg -i eingabe.mp4 -af "afade=t=in:ss=0:d=3,afade=t=out:st=<ende-3>:d=3" audio_eingabe.mp4
ffmpeg -i eingabe.mp4 -an muted_eingabe.mp4
ffmpeg -i eingabe.mp4 -i neuer_track.mp3 -c:v copy -map 0:v:0 -map 1:a:0 replaced_audio_eingabe.mp4
GIF-Erstellung (zwei Durchgänge für Qualität)
ffmpeg -ss <start> -t <dauer> -i eingabe.mp4 \
-vf "fps=15,scale=320:-1:flags=lanczos,palettegen" palette.png
ffmpeg -ss <start> -t <dauer> -i eingabe.mp4 -i palette.png \
-filter_complex "[0:v]fps=15,scale=320:-1:flags=lanczos[v];[v][1:v]paletteuse" ausgabe.gif
rm palette.png
Thumbnail-Extraktion
ffmpeg -ss <zeitstempel> -i eingabe.mp4 -frames:v 1 -q:v 2 thumb_eingabe_<zeitstempel>.jpg
ffmpeg -i eingabe.mp4 -vf "fps=1/<intervall>,scale=320:-1,tile=4x4" thumb_grid_eingabe.jpg
.srt-Untertitel einbrennen
ffmpeg -i eingabe.mp4 -vf "subtitles=untertitel.srt:force_style='FontSize=24,PrimaryColour=&H00FFFFFF'" captioned_eingabe.mp4
Audio extrahieren
ffmpeg -i eingabe.mp4 -vn -c:a libmp3lame -q:a 2 ausgabe.mp3
Video-Informationen
ffprobe -v quiet -print_format json -show_format -show_streams eingabe.mp4
Remotion-Kurzreferenz
Gecachter Workspace einrichten
WORKSPACE="/tmp/remotion-workspace"
if [ ! -d "$WORKSPACE/node_modules" ]; then
cp -r ~/project-templates/remotion-video/* "$WORKSPACE/"
cd "$WORKSPACE" && npm install
fi
TitleCard-Komposition
import { AbsoluteFill, spring, useCurrentFrame, useVideoConfig, Img } from 'remotion';
type Animation = 'fade' | 'slide-up' | 'slide-down' | 'zoom' | 'typewriter' | 'glitch' | 'blur-in';
export const TitleCard: React.FC<{
text: string;
subtitle?: string;
bg?: string;
fg?: string;
accent?: string;
animation?: Animation;
logo?: string;
}> = ({ text, subtitle, bg = '#09090B', fg = '#FFFFFF', accent = '#7C3AED', animation = 'fade', logo }) => {
const frame = useCurrent
…
[verkürzt für die Übersetzung]
Hinweise zur Fehlersuche
- Wenn ffmpeg einen Fehler meldet, überprüfe die Eingabedatei mit
ffprobe -v error -show_entries format=filename,format_name -of default=noprint_wrappers=1 <datei>
- Bei Hardwarebeschleunigungsproblemen stelle sicher, dass macOS auf dem neuesten Stand ist (VideoToolbox erfordert mindestens macOS 10.13)
- Wenn Remotion-Kompositionen nicht gerendert werden, überprüfe die Ausgabe von
npx remotion versions auf Kompatibilität
- Bei
npm install-Fehlern im Remotion-Workspace lösche den Ordner node_modules und die Datei package-lock.json und führe npm install erneut aus