← All posts

Video konvertieren mit FFmpeg

Praxisanleitung zur Video-Konvertierung mit FFmpeg — MP4, MOV, AVI, WebM, MKV. Inklusive Codec-Auswahl, Qualitätskontrolle und Batch-Skripten.

FFHub·2026-04-21
Video konvertieren mit FFmpeg

Video-Formate umwandeln ist einer der häufigsten Jobs in der Medienverarbeitung. Egal ob du MP4 fürs Web, MOV für Apple-Workflows oder WebM für Open-Source-Projekte brauchst — FFmpeg erledigt alles über die Kommandozeile. Diese Anleitung deckt alles ab, von einfachen Konvertierungen bis hin zu Codec-Auswahl und Batch-Verarbeitung.

Wie geht die einfachste Konvertierung?

Die simpelste Variante tauscht nur den Container. FFmpeg erkennt das Zielformat an der Dateiendung:

# Convert MKV to MP4
ffmpeg -i input.mkv output.mp4

# Convert AVI to MOV
ffmpeg -i input.avi output.mov

# Convert MP4 to WebM
ffmpeg -i input.mp4 output.webm

Wenn du keine Codecs angibst, wählt FFmpeg Defaults für den Ziel-Container. Funktioniert, gibt dir aber keine Kontrolle über Qualität oder Kompatibilität.

Was ist der Unterschied zwischen Container und Codec?

Bevor wir tiefer einsteigen, hilft es, den Unterschied zu kennen:

  • Container (MP4, MKV, MOV, AVI, WebM) — das Dateiformat, das Video, Audio und Metadaten zusammenhält
  • Video-Codec (H.264, H.265, VP9, AV1) — wie Videodaten komprimiert werden
  • Audio-Codec (AAC, Opus, MP3, FLAC) — wie Audiodaten komprimiert werden

Der Container ist wie eine Box, die Codecs sind der Inhalt. Derselbe Video-Codec kann in verschiedenen Containern stecken.

ContainerÜbliche Video-CodecsÜbliche Audio-CodecsGeeignet für
MP4H.264, H.265, AV1AAC, MP3Web, Mobile, Allzweck
MKVBeliebigBeliebigArchivierung, Multi-Track
MOVH.264, H.265, ProResAAC, PCMApple-Ökosystem, Schnitt
WebMVP8, VP9, AV1Vorbis, OpusWeb (Open Source)
AVIH.264, MPEG-4MP3, PCMLegacy-Kompatibilität

Welchen Codec solltest du wählen?

H.264 — maximale Kompatibilität

H.264 (libx264) läuft praktisch auf jedem Gerät und in jedem Browser. Sicherste Wahl für allgemeine Verteilung.

ffmpeg -i input.avi -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

H.265 (HEVC) — bessere Kompression

H.265 (libx265) liefert bei gleicher Qualität ca. 50 % kleinere Dateien. Support wächst, ist aber noch nicht überall.

ffmpeg -i input.avi -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 128k output.mp4

Hinweis: H.265 nutzt eine andere CRF-Skala. CRF 28 bei H.265 entspricht etwa CRF 23 bei H.264.

VP9 — Open Source, web-tauglich

VP9 ist Googles lizenzfreier Codec. Passt zu WebM und wird von allen modernen Browsern unterstützt.

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

-b:v 0 schaltet FFmpeg in den reinen CRF-Modus (keine Bitrate-Obergrenze).

AV1 — die nächste Generation

AV1 bietet die beste Kompression, aber das Encoding ist sehr langsam. Nimm es, wenn du Zeit hast und kleinste Dateien willst.

ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -cpu-used 4 -c:a libopus -b:a 128k output.mkv

-cpu-used 4 beschleunigt das Encoding deutlich (Bereich 0–8, höher = schneller, aber schlechtere Qualität).

Codec-Vergleich

CodecKompressionGeschwindigkeitBrowser-SupportLizenz
H.264GutSchnellUniversellLizenziert
H.265BesserMittelWachsendLizenziert
VP9BesserLangsamAlle modernenLizenzfrei
AV1Am bestenSehr langsamWachsendLizenzfrei

Welcher Audio-Codec passt zu welchem Container?

Jeder Container harmoniert mit bestimmten Audio-Codecs am besten:

# MP4 + AAC (most common pairing)
ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -b:a 192k output.mp4

# WebM + Opus (best quality per bitrate)
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

# MKV + FLAC (lossless audio)
ffmpeg -i input.mov -c:v libx264 -crf 18 -c:a flac output.mkv

# MOV + PCM (uncompressed, for editing)
ffmpeg -i input.mp4 -c:v copy -c:a pcm_s16le output.mov
Audio-CodecQualitätDateigrößeBester Container
AACGutKleinMP4, MOV
OpusExzellentAm kleinstenWebM, MKV
MP3GutKleinMP4, AVI, MKV
FLACVerlustfreiGroßMKV
PCMVerlustfreiSehr großMOV, WAV

Wie konvertierst du sofort ohne Re-Encoding?

Wenn die Quell-Codecs zum Ziel-Container passen, kannst du Streams kopieren statt neu zu kodieren. Das geht sofort und verlustfrei:

# Remux MKV to MP4 without re-encoding
ffmpeg -i input.mkv -c copy output.mp4

# Copy video, re-encode audio only
ffmpeg -i input.mkv -c:v copy -c:a aac -b:a 128k output.mp4

Stream-Copy funktioniert nur, wenn der Ziel-Container die Codecs unterstützt. VP9-Video in einen AVI-Container packen geht zum Beispiel nicht.

Wie steuerst du Qualität gegen Dateigröße?

CRF-Modus — am besten für lokale Dateien

CRF (Constant Rate Factor) liefert das beste Verhältnis von Qualität zu Größe. Der Encoder passt die Bitrate Szene für Szene an. Für mehr Tiefe siehe unseren Video-Kompressions-Guide.

# High quality (larger file)
ffmpeg -i input.avi -c:v libx264 -crf 18 -c:a aac -b:a 192k output.mp4

# Balanced quality
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4

# Smaller file (lower quality)
ffmpeg -i input.avi -c:v libx264 -crf 28 -c:a aac -b:a 96k output.mp4

Two-Pass-Encoding — am besten für eine Ziel-Dateigröße

Wenn du eine bestimmte Dateigröße brauchst, nutze Two-Pass-Encoding:

# Pass 1: analyze
ffmpeg -i input.avi -c:v libx264 -b:v 2M -pass 1 -an -f null /dev/null

# Pass 2: encode
ffmpeg -i input.avi -c:v libx264 -b:v 2M -pass 2 -c:a aac -b:a 128k output.mp4

Presets — Geschwindigkeit gegen Kompression

Langsamere Presets erzeugen bei gleicher Qualität kleinere Dateien:

# Fast encoding, larger file
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset fast -c:a aac output.mp4

# Slow encoding, smaller file
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset slow -c:a aac output.mp4

Wie konvertierst du und änderst die Auflösung?

Konvertierung mit Skalierung kombinieren:

# Convert to 720p MP4
ffmpeg -i input.mkv -c:v libx264 -crf 23 -vf "scale=-2:720" -c:a aac -b:a 128k output.mp4

# Convert to 1080p WebM
ffmpeg -i input.avi -c:v libvpx-vp9 -crf 30 -b:v 0 -vf "scale=-2:1080" -c:a libopus output.webm

Wie automatisiert du Batch-Konvertierungen?

Alle Dateien in einem Verzeichnis konvertieren

# Convert all AVI files to MP4
for f in *.avi; do
  ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac -b:a 128k "${f%.avi}.mp4"
done

# Convert all MKV files to MP4 (stream copy if possible)
for f in *.mkv; do
  ffmpeg -i "$f" -c copy "${f%.mkv}.mp4"
done

Konvertieren mit eigener Qualität pro Format

#!/bin/bash
# Batch convert to multiple formats
INPUT="input.mp4"

# Web-optimized MP4
ffmpeg -i "$INPUT" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k -movflags +faststart web.mp4

# High-quality MKV archive
ffmpeg -i "$INPUT" -c:v libx265 -crf 22 -preset slow -c:a flac archive.mkv

# WebM for open-source hosting
ffmpeg -i "$INPUT" -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k web.webm

Rekursive Konvertierung

# Find and convert all AVI files recursively
find . -name "*.avi" -exec sh -c '
  ffmpeg -i "$1" -c:v libx264 -crf 23 -c:a aac "${1%.avi}.mp4"
' _ {} \;

Wie machst du MP4 fürs Web schneller? — faststart

Bei MP4-Dateien fürs Web immer -movflags +faststart setzen. Das schiebt die Metadaten an den Anfang der Datei, sodass die Wiedergabe vor dem vollständigen Download starten kann:

ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -movflags +faststart output.mp4

Welche Rezepte kannst du direkt kopieren?

Hier sind fertige Befehle für die häufigsten Konvertierungen:

# MOV (iPhone) to MP4 for sharing
ffmpeg -i input.mov -c:v libx264 -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4

# AVI to MP4 (re-encode)
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

# MP4 to WebM for web embedding
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

# MKV to MP4 (lossless remux)
ffmpeg -i input.mkv -c copy -movflags +faststart output.mp4

# Any format to GIF (short clip)
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" -t 5 output.gif

# MP4 to HLS for streaming
ffmpeg -i input.mp4 -c copy -hls_time 10 -hls_list_size 0 output.m3u8

Was tun bei typischen Problemen?

„Discarding packet"-Warnungen — Der Quell-Container hat Kompatibilitätsprobleme. Mit -err_detect ignore_err werden defekte Pakete übersprungen.

„Non-monotonous DTS"-Fehler — Zeitstempel-Probleme im Quellmaterial. Fix:

ffmpeg -i input.mkv -fflags +genpts -c:v libx264 -crf 23 -c:a aac output.mp4

Codec im Container nicht unterstützt — Du versuchst, einen inkompatiblen Codec in einen Container zu packen (z. B. VP9 in AVI). Entweder Container wechseln oder mit kompatiblem Codec neu kodieren.

Output ist größer als die Quelle — Passiert, wenn du von einem effizienteren auf einen weniger effizienten Codec wechselst oder wenn die Quelle stark komprimiert war. Niedrigeren CRF-Wert oder effizienteren Codec versuchen.

Cloud-Variante mit FFHub

Lokale Konvertierung ist für einzelne Jobs okay, aber Batches können deine Maschine stundenlang blockieren. FFHub lässt dich FFmpeg-Befehle in der Cloud per API ausführen — gleiche Syntax, keine lokale CPU-Last.

Besonders nützlich, wenn du große Mengen an Dateien konvertieren, Format-Konvertierung in eine Web-App integrieren oder Videos auf Maschinen ohne FFmpeg verarbeiten willst.

Zusammenfassung

  • Stream Copy (-c copy) nutzen, wenn die Codecs passen — das geht sofort
  • H.264 + AAC in MP4 für maximale Kompatibilität wählen
  • VP9 + Opus in WebM für lizenzfreie Web-Auslieferung
  • CRF-Modus für qualitätsorientiertes Encoding
  • -movflags +faststart für MP4 fürs Web setzen
  • Batch-Skripte nutzen, um ganze Verzeichnisse auf einmal zu konvertieren

Verwandte Artikel

Video konvertieren mit FFmpeg | FFHub