====== FFmpeg ====== Das »Schweizer Taschenmesser« für Audio & Video: Aufnehmen, Konvertieren und Kodieren nach Herzenslust in sinnvolle und weniger sinnvolle Formate. * [[https://ffmpeg.org|Homepage]], [[https://ffmpeg.org/documentation.html|Dokumentation]] * [[http://wiki.ubuntuusers.de/FFmpeg|FFmpeg]] im Wiki von [[http://wiki.ubuntuusers.de|ubuntuusers.de]] * [[http://spielwiese.la-evento.com/hokuspokus|Videohokuspokus]] mit ffmpeg * Einfache [[https://catswhocode.com/ffmpeg-commands/|FFmpeg-Kommandos]] * [[https://www.lwks.com/index.php?option=com_kunena&func=view&catid=23&id=121996&Itemid=81|Useful FFmpeg Command Lines]] * [[https://bytescout.com/blog/2016/12/ffmpeg-command-lines-convert-various-video-formats.html|FFmpeg Command Lines]] * [[http://howto-pages.org/ffmpeg|Howto]] zu FFmpeg ===== Tipps & Tricks ===== Der typische (nicht der allgemeingültige, siehe dazu zum Beispiel die [[https://man.archlinux.org/man/ffmpeg.1|Man Page]]) Aufbau eines FFmpeg-Kommandos ist: ''%%ffmpeg -i infile ... outfile%%''. Sind in den folgenden Abschnitten Fragmente von Kommandos angegeben, so sind sie an der Stelle der drei Punkte einzufügen. ==== Allgemeines ==== * [[wpde>Liste der Videocodecs]] * [[wpde>Containerformat|Übersicht]] von Containerformaten in der Wikipedia * ''ffmpeg -i infile'' liefert Infos zu einer Multimediadatei. * Ein Stück eines Films herausschneiden: ''-ss -t -c copy''. Die dabei erwarteten Zeiten sind Sekunden oder ''hh:mm:ss[.xxx]''. Statt ''-c copy'' kann man natürlich gleichzeitig umkodieren. * Linux-Rechner benutzbar halten während des Kodierens: ''%%ionice -c3 nice ffmpeg ...%%'' ==== Frames extrahieren ==== FIXME Lange nicht mehr getestet. * Frame zu einer bestimmten Zeit extrahieren: ''ffmpeg -i file.mp4 -y -ss 5 -vframes 1 -an -sameq -f mjpeg nome.jpg'' * Frames in regelmäßigen Abständen extrahieren: ''ffmpeg -i file.mp4 -y -ss 5 -an -sameq -f image2 -r 1/5 nome%03d.jpg'' ==== Umkodieren ==== * Ein MP4 erzeugen: ''-c:v libx264 -c:a aac'' * Die Bildqualität wird am sinnvollsten über den [[https://slhck.info/video/2017/02/24/crf-guide.html|Constant Rate Factor]] ''-crf x'' eingestellt mit ''x=18'' (gute Qualität, große Datei) bis ''x=28'' (brauchbare Qualität, kleine Datei). ==== VDR, HDTV und SDTV ==== FIXME Lange nicht mehr getestet, und daher wohl etwas veraltet. * HDTV (vdr) in SDTV (PAL DVD-Format) wandeln. * Zusammenfassen der VDR-Dateien: ''cat 00*.vdr > complete.vdr'' * Umrechnen der zusammengefassten VDR-Datei: ''ffmpeg -i complete.vdr -target pal-dvd complete.mpg'' * ''ffmpeg -i infile.vdr -map 0:0 -map 0:3 -b 10000k -acodec copy outfile.mp4'' – Wählt vom ersten infile (0 nach map) die Spuren 0 (Video) und 3 (Audio), begrenzt die Videobandbreite und kopiert die Audiospur. * SDTV (vdr) in AVI: ''ffmpeg -i infile.vdr -map 0:0 -map 0:1 -b 4096k -acodec copy -deinterlace outfile.avi'' (Videospur 0 und Tonspur 1) * Aus HDTV (vdr) eine Video- und eine Audiospur extrahieren: ''ffmpeg -i infile.vdr -map 0:0 -map 0:1 -vcodec copy -acodec copy outfile.mpg'' * Aus HDTV (vdr) einen platzsparenden Film (Bildgröße geviertelt, eine Tonspur mit geringer Bandbreite) machen: ''ffmpeg -i infile.vdr -map 0:0 -s 640x360 -vcodec mpeg4 -b 600k -map 0:1 -acodec libmp3lame -ab 64k outfile.avi''. Ohne ''-b 600k'' wird die Bandbreite noch etwas geringer, aber die Bildqualität auch schlecht. * Im Prinzip läßt sich ein Film über FFmpeg [[http://h4cc.de/ffmpeg-split-mp4xvidavimkv-video-file-in-parts.html|teilen]]. In der Praxis gab es aber Probleme mit der Synchronisation von Bild und Ton.