Dieser Beitrag beschreibt, wie ich unter Linux (Debian) Video-Dateien konvertiere und anpasse. Dabei nutze ich die Command-Line ohne grafisches UI. Wer das nicht möchte kann hier aufhören zu lesen ;-)
Wieso Command-Line und nicht ein grafisches Tool?
In der Command-Line habe ich eine extreme Vielfalt von Optionen und ich kann sehr einfach Stapelverarbeitung machen. Zum Beispiel, ich habe 10 DVD Abbilder auf der HD und will alles als MP4-Dateien haben. Lösung 2 For Schleifen in einander verschachtelt und der Computer macht genau diese Arbeit dann tagelang ohne weitere Anweisung.
Welche Tools soll ich nutzen?
- ffmpeg: Sehr mächtiges Tool welches häufig von anderen Programmen im Hintergrund verwendet wird.
- mencoder: Entstand ursprünglich aus dem MPlayer. Ist aber nicht mehr so stabil
Ich wechsle gerade von mencoder nach ffmpeg.
Welche Parameter nutze ich?
Ich bin kein HD-Enthusiast, darum habe ich auch nicht den Anspruch einer hohen Auflösung. Ich nutze PAL.
Name | 1.33 (4/3) | 1.78 (16/9) | 2.35 (2.35/1) |
NTSC | 640x460 | 640x360 | 640x272 |
PAL | 720x540 | 720x404 | 720x306 |
HD | 1920x1440 | 1920x1080 | 1920x818 |
UHD | 3840x2160 | ||
4K | 4096×2160 |
Hier noch zwei Wikipedia-Artikel zu dem Thema: Videoauflösung, Seitenverhältnis, 4K2K
Um die Qualität trotzdem hoch zu halten, nutze ich 2-Pass Encoding: 1. Pass analysiert wo die meisten Änderungen statt finden und nutzt dieses Log im 2. Pass.
FFmpeg Optionen
Beschreibung | Optionen |
1.78 (PAL) | -vf scale=720:404 |
2.35 -> 1.78 (PAL) | -vf scale=720:306,pad=720:404:0:49:black |
1.33 -> 1.78 (PAL) | -vf scale=538:404,pad=720:404:91:0:black |
Nur Fehler in der Ausgabe | -loglevel panic -hide_banner -nostats |
DVD konvertieren | -map 0:v:0 -map 0:a:0 (first join VOB's: cat VIDEO/VTS_01_*.VOB > movie.VOB) |
FFmpeg Tipps
Video-Informationen anzeigen:
ffmpeg -i input.avi
Schwarze Balken wegschneiden (cropdetect)
ffmpeg -i input.avi -t 1 -vf cropdetect -f null
Weitere Tipps
Eine ISO-Datei einhängen:
mount -o loop disk1.iso /mnt
Zeit in ffplay einblenden
ffplay -vf "drawtext=text='%{pts\:hms}':box=1:x=(w-tw)/2:y=h-(2*lh)" input.mp4