This website is released under |
FFmpeg-Befehle# 0. Der Desktop als Arbeitsfolder definieren. (So können die erzeugten Dateien # leichter gefunden werden ;-) # # * für macOS und Linux: cd ~/Desktop # * für Windows: cd Desktop # 1. Die Dateien erzeugen, mit denen wir arbeiten werden. # # Zuerst die Mandelbrot-Funktion, eine Fraktalkurve, bei der digitale # Bildfehler leicht erkennbar sind. # # Die Parameter sind: # -f die Standardbibliothek "lavfi" von FFmpeg # -i das Element "mandelbrot" der Bibliothek [i = input file] # -pix_fmt yuv420p bedeutet Y'CBCR 4:2:0 planar, ein Format, das von den # meisten Playern korrekt gelesen wird # -t die gewünschte Dauer in Sekunden # und am Ende der Name der zu erzeugende Datei [ohne -o] ffmpeg -f lavfi -i mandelbrot -t 10 -pix_fmt yuv420p mandelbrot.mov # Die erzeugte Datei visualisieren: ffplay mandelbrot.mov # Danach die Note A, bei der digitale Tonfehler leicht hörbar sind. # # Die Parameter sind: # -f die Standardbibliothek "lavfi" von FFmpeg # -i mit dem Element "aevalsrc" der Bibliothek kann man eine mathematische # Funktion berechnen, in unserem Bespiel die Sinusfunktion mit der # Frequenz 440 Hz [i = input file] # -t die gewünschte Dauer in Sekunden # und am Ende der Name der zu erzeugende Datei [ohne -o] ffmpeg -f lavfi -i aevalsrc="sin(440*2*PI*t)" -t 10 Note_A.wav # Die erzeugte Datei abspielen: ffplay Note_A.wav # 2. Zusammensetzten von Bild und Ton ffmpeg -i mandelbrot.mov -i Note_A.wav mandelaaa.mov # Die erzeugte Datei abspielen: ffplay mandelaaa.mov # 3. Umwandlung des Containers. Zum Beispiel von MOV zu AVI. # # Parameter: # -i die Ausgangsdatei [i = input file] # -c die gewünschte Umwandlung (in unserem Fall: keine, weil wir nur den # Container ändern wollen, nicht aber das darin enthaltene Video) # der Name der zu erzeugende Datei [ohne -o] ffmpeg -i mandelbrot.mov -c copy mandelbrot.avi # Bemerkung für die Apple-Benützer: Sie erzeugen eine Windows-Datei, die # "QuickTime Player" nicht vorzuführen kann (ausser wenn der zusätzlich # erforderliche Codec installiert wurde). # 4. Die technischen Metadaten aus der Datei lesen. # # Parameter: # -i die Ausgangsdatei (das -i könnte hier weggelassen werden) # -show_format gibt die Informationen zum Container # -show_streams gibt die Informationen zu Bild und Ton ffprobe -i mandelbrot.mov ffprobe -i mandelbrot.mov -show_format ffprobe -i mandelbrot.mov -show_streams ffprobe -i mandelbrot.mov -show_format -show_streams # Ausgabe im Format "json", das mittels einem Java-Programm bearbeitet kann, # oder "xml", das z.B. mittels einer Styldefinition XSLT gestalten werden # kann. # # Parameter: # -print_format gibt das Format an, in dem die Metadaten gewünscht werden ffprobe -i mandelbrot.avi -show_format -show_streams -print_format json ffprobe -i mandelbrot.avi -show_format -show_streams -print_format xml ffprobe -i mandelbrot.avi -show_format -show_streams -print_format flat # Siehe: avpres.net/FFmpeg/probe_json # 5. Die Listen der möglichen Parametern anzeigen. ffmpeg -codecs ffmpeg -decoders ffmpeg -h decoder=flac ffmpeg -encoders ffmpeg -h encoder=ffv1 ffmpeg -filters ffmpeg -formats ffmpeg -layouts ffmpeg -sample_fmts ffmpeg -pix_fmts ffmpeg -bsfs # 6. Berechnen von MD5-Hashwerte auf Bildebene. # # Parameter: # -i die Ausgangsdatei # -f die Bibliothek "framemd5" von FFmpeg soll benützt werden # der Name der zu erzeugende Datei [ohne -o] ffmpeg -i mandelbrot.mov -f framemd5 mandelbrot_mov_md5.txt ffmpeg -i mandelbrot.avi -f framemd5 mandelbrot_avi_md5.txt # Von nun an müssen alle Zeilen eines Beispiels ZUSAMMEN in das Terminal # kopiert werden. # Das Zeichen \ am Ende der Zeilen löscht fürs Terminal den Sprung zur # neuen Zeile, damit es als einen einzigen Befehl ausgeführt wird. So wird # der Befehl lesbarer. # 7. Erzeugen einer ProRes-Datei aus TIFF-Einzelbilder und sie ins HD-Format # korrekt einbetten. # # Parameter: # -f es werden Einzelbilder verarbeitet # -i die Ausgangsdatei # -c:v der Video-Codec "Apple ProRes 422" wird ausgewählt # -profile die Variante HQ (High Quality) von ProRes ist 3 # -filter:v die Grösse anpassen und ins HD Reinstellen # -an kein Ton ("audio no") # der Name der zu erzeugende Datei [ohne -o] ffmpeg \ -f image2 \ -i DUFAY_TIFF/Dufay_%06d.tif \ -c:v prores_ks -profile:v 3 \ -filter:v "scale=1440:1080:flags=lanczos, pad=1920:1080:240:0" \ -an \ Dufay_ProRes.mov # Bemerkung für die Windows-Benützer: Sie erzeugen eine Apple-Datei. # # Siehe: avpres.net/FFmpeg/sq_ProRes # 8. Erzeugen einer H.264-Datei aus TIFF-Einzelbilder und sie ins HD-Format # korrekt einbetten. # # Parameter: # -f es werden Einzelbilder verarbeitet # -i die Ausgangsdatei # -c:v der Video-Codec "H.264" wird ausgewählt # -preset "veryslow" braucht viel Zeil, erzeugt aber eine kleinere Datei # -filter:v die Grösse anpassen und ins HD Reinstellen # -an kein Ton ("audio no") # der Name der zu erzeugende Datei [ohne -o] ffmpeg \ -f image2 \ -i DUFAY_TIFF/Dufay_%06d.tif \ -c:v libx264 -preset veryslow \ -qp 18 \ -filter:v "scale=1440:1080:flags=lanczos, pad=1920:1080:240:0" \ -pix_fmt yuv420p \ -an \ Dufay_H264_1.mp4 # Siehe: avpres.net/FFmpeg/sq_H264 # 9. Erzeugen einer H.264-Datei aus der soeben erzeugten ProRes-Datei. # # Parameter: # -i die Ausgangsdatei # -c:v der Video-Codec "H.264" wird ausgewählt # -preset "veryslow" braucht viel Zeil, erzeugt aber eine kleinere Datei # -filter:v die Grösse anpassen und ins HD Reinstellen # -an kein Ton ("audio no") # der Name der zu erzeugende Datei [ohne -o] ffmpeg \ -i Dufay_ProRes.mov \ -c:v libx264 -preset veryslow \ -crf 18 \ -pix_fmt yuv420p \ -an \ Dufay_H264_2.mp4 # Siehe: avpres.net/FFmpeg/im_H264 # 10. Verschiedenes # Ein Splitscreen zweier Dateien erzeugen. ffmpeg \ -i Dufay_H264_1.mp4 \ -i Dufay_H264_2.mp4 \ -filter_complex \ "[0]crop=iw/2:ih:0:0, pad=iw*2:ih*1[left]; \ [1]crop=iw/2:ih:iw/2:0[right]; \ [left][right]overlay=w" \ Dufay_H264_split.mp4 # Die Differenz zweier Dateien sichtbar machen. ffmpeg \ -i Dufay_H264_1.mp4 \ -i Dufay_H264_2.mp4 \ -filter_complex \ "[1]format=yuva444p, lut=c3=128, negate[1_mit_alpha]; \ [0][1_mit_alpha]overlay" \ Dufay_H264_delta.mp4 # Die R'G'B'-Komponenten (RGB-Komponenten) sichtbar machen. ffmpeg \ -i mandelbrot.mov \ -filter_complex \ "split=4[a][b][c][d]; \ [a]pad=iw*4:ih[w]; \ [b]lutrgb=g=0:b=0[x]; \ [c]lutrgb=r=0:b=0[y]; \ [d]lutrgb=r=0:g=0[z]; \ [w][x]overlay=w:0[wx]; \ [wx][y]overlay=w*2:0[wxy]; \ [wxy][z]overlay=w*3:0" \ mandelbrot_RGB.mov # Die Y'CBCR-Komponenten (YUV-Komponenten) sichtbar machen. ffmpeg \ -i mandelbrot.avi \ -filter_complex \ "split=4[a][b][c][d]; \ [a]pad=iw*4:ih[w]; \ [b]lutyuv=u=128:v=128[x];\ [c]lutyuv=y=0:v=128[y]; \ [d]lutyuv=y=0:u=128[z]; \ [w][x]overlay=w:0[wx]; \ [wx][y]overlay=w*2:0[wxy]; \ [wxy][z]overlay=w*3:0" \ mandelbrot_YUV.avi 2018-12-14 |