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

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-Codecs | Geeignet für |
|---|---|---|---|
| MP4 | H.264, H.265, AV1 | AAC, MP3 | Web, Mobile, Allzweck |
| MKV | Beliebig | Beliebig | Archivierung, Multi-Track |
| MOV | H.264, H.265, ProRes | AAC, PCM | Apple-Ökosystem, Schnitt |
| WebM | VP8, VP9, AV1 | Vorbis, Opus | Web (Open Source) |
| AVI | H.264, MPEG-4 | MP3, PCM | Legacy-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
| Codec | Kompression | Geschwindigkeit | Browser-Support | Lizenz |
|---|---|---|---|---|
| H.264 | Gut | Schnell | Universell | Lizenziert |
| H.265 | Besser | Mittel | Wachsend | Lizenziert |
| VP9 | Besser | Langsam | Alle modernen | Lizenzfrei |
| AV1 | Am besten | Sehr langsam | Wachsend | Lizenzfrei |
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-Codec | Qualität | Dateigröße | Bester Container |
|---|---|---|---|
| AAC | Gut | Klein | MP4, MOV |
| Opus | Exzellent | Am kleinsten | WebM, MKV |
| MP3 | Gut | Klein | MP4, AVI, MKV |
| FLAC | Verlustfrei | Groß | MKV |
| PCM | Verlustfrei | Sehr 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 +faststartfür MP4 fürs Web setzen- Batch-Skripte nutzen, um ganze Verzeichnisse auf einmal zu konvertieren
Verwandte Artikel
- How to Compress Video with FFmpeg - Dateigröße reduzieren mit CRF, Presets und Skalierung
- How to Extract Audio from Video with FFmpeg - Audiospuren aus jedem Videoformat ziehen
- FFmpeg Video Compression Best Practices - Encoding-Strategien für optimale Qualität und Größe