This website is released under |
FFmpeg-Befehle# 0. Die Personen, die Homebrew auf Mac OS X installiert haben, können mit # folgendem Befehl FFmpeg jedesmal aktualisieren, wenn eine neue Version # bereitgestellt wird. Der Computer muss natürlich ans Internet # angeschlossen sein. brew update brew upgrade ffmpeg # 1. Zuerst das Desktop als Arbeitsfläche definieren, wo die erzeugten Dateien # erscheinen werden, damit sie leicht wiedergefunden werden können und damit # man nicht ständig den ganzen Pfad eintippen muss. # # Bemerkung: Eine Datei oder ein Ordner kann auch ins Terminal-Fenster # "gezogen" werden, so muss man den Namen und/oder den Pfad nicht eintippen. cd ~/Desktop # 2. Die Datei erzeugen, mit der wir arbeiten werden. Es handelt sich um die # Mandelbrot-Funktion, eine Fraktalkurve, bei der digitale Fehler leicht # erkennbar sind. # # Die Parameter sind: # -f die Standardbibliothek "lavfi" von FFmpeg # -i das Element "mandelbrot" der Bibliothek [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 mandelbrot -t 10 -pix_fmt yuv420p mandelbrot.mov # 3. Testbilder im DV-Format für NTSC und für PAL erzeugen. ffmpeg -f lavfi -i testsrc -t 10 -target ntsc-dv testbild_ntsc.dv ffmpeg -f lavfi -i testsrc -t 10 -target pal-dv testbild_pal.dv # In den erscheinenden technischen Informationen sehen Sie, dass die Datei # "testsrc" im Format RGB24 ist und dass sie umgewandelt wird: # - für DV NTSC: in YUV 4:1:1 mit einem Bild von 720 x 480 rechteckige Pixel # im Seitenverhältnis 8:9 # - für DV PAL: in YUV 4:2:0 mit einem Bild von 720 x 576 rechteckige Pixel # im Seitenverhältnis 16:15 # Und auch die Vorführgeschwindigkeit ist verschieden. # 4. Eine Tondatei erzeugen. # # Ich benütze die mathematische Funktion, die eine Sinuskurve mit 440 Hz # generiert, was der Note A entspricht. ffmpeg -f lavfi -i aevalsrc="sin(440*2*PI*t)" -t 10 note_a.wav # Möchten Sie aber lieber Ihr Instrument mit einem 432-Hz-Diapason stimmen, # dann wählen Sie: ffmpeg -f lavfi -i aevalsrc="sin(432*2*PI*t)" -t 10 diapason.wav # 5. 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 Mac-OS-X-Benützer: # "QuickTime Player" ist nicht imstande diese Datei vorzuführen (ausser wenn # der zusätzlich erforderliche Codec installiert wurde). Sie können, zum # Beispiel, "VLC" benützen. Haben Sie FFmpeg mittels Homebrew installiert, # dann können Sie auch folgenden Befehl benützen: ffplay mandelbrot.avi # 6. Umwandlung des Bildformates. Zum Beispiel von 4:3 zu 16:9 ohne dass das # Bild reingestellt wird, also ohne Balken auf der Seite -- d.h. was man # NICHT machen sollte! ffmpeg -i mandelbrot.mov -aspect 16:9 falsch.mov # Richtige Umwandlung mit schwarze Balken rechts und links ("pillarbox"). ffmpeg -i mandelbrot.mov -vf pad=854:480:107:0:000000 richtig.mov # Umwandlung mit roten, grünen oder blauen Balken. ffmpeg -i mandelbrot.mov -vf pad=854:480:107:0:ff0000 rot.mov ffmpeg -i mandelbrot.mov -vf pad=854:480:107:0:00ff00 gruen.mov ffmpeg -i mandelbrot.mov -vf pad=854:480:107:0:0000ff blau.mov # 7. Umwandlung des Videoformates. Zum Beispiel von H.264 zu MPEG-4 mit einer # Kompression. # # Parameter: # -b:v die Bitrate des Bildstromes [b:v = bitrate of video] # -pix_fmt das Pixelformat (siehe unter 10.) ffmpeg -i mandelbrot.avi -t:v 20 -b:v 1000k -pix_fmt yuv420p komprimiert_1000k.avi ffmpeg -i mandelbrot.avi -t:v 20 -b:v 10k -pix_fmt yuv420p komprimiert_10k.avi # 8. Umwandlung der Rohdaten. Zum Beispiel von NTSC zu PAL. ffmpeg -i testbild_ntsc.dv -target pal-dv testbild_pal_neu.dv # 9. Die technischen Metadaten aus der Datei lesen. # # Parameter: # -i die Ausgangsdatei (das -i kann auch weggelassen werden) # -show_format gibt die Informationen zum Container # -show_streams gibt die Informationen zum Bild und zum Ton # -show_data fügt show_streams einen kurzen "hexdump" hinzu # -show_versions gibt die Version der verwendeten FFmpeg-Komponenten ffprobe -i mandelbrot.mov ffprobe -i mandelbrot.mov -show_format ffprobe -i mandelbrot.mov -show_streams ffprobe -i mandelbrot.mov -show_data ffprobe -i mandelbrot.mov -show_streams -show_data ffprobe -i mandelbrot.mov -show_versions ffprobe -i mandelbrot.mov -show_format -show_streams -show_data -show_versions 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 flat ffprobe -i mandelbrot.avi -show_format -show_streams -print_format json ffprobe -i mandelbrot.avi -show_format -show_streams -print_format xml # Einzelne Elemente kann man z.B. mittels "jq" aus dem Format "json" picken. # # Die Ausgangsdaten des Teils vor dem | werden dem Teil danach als # Eingangsdaten geliefert. ffprobe -i mandelbrot.mov -show_format -print_format json | jq '.format.format_long_name' ffprobe -i mandelbrot.avi -show_format -print_format json | jq '.format.format_long_name' ffprobe -i testbild_ntsc.dv -show_streams -print_format json | jq '.streams[0].sample_aspect_ratio' ffprobe -i testbild_pal.dv -show_streams -print_format json | jq '.streams[0].sample_aspect_ratio' # 10. Die Listen der möglichen Parametern anzeigen. ffmpeg -codecs ffmpeg -decoders ffmpeg -h decoder=flv ffmpeg -encoders ffmpeg -filters ffmpeg -formats ffmpeg -layouts ffmpeg -sample_fmts ffmpeg -pix_fmts ffmpeg -bsfs # 11. Berechnen von MD5-Hashwerte auf Bildebene. # # Parameter: # -f die Bibliothek "framemd5" von FFmpeg soll benützt werden ffmpeg -i mandelbrot.mov -f framemd5 mandelbrot_mov_frames.md5 ffmpeg -i mandelbrot.avi -f framemd5 mandelbrot_avi_frames.md5 cat mandelbrot_mov_frames.md5 cat mandelbrot_avi_frames.md5 # 12. DPX-Einzelbild-Dateien erzeugen... # # Parameter: # -n:a kein Ton soll einbezogen werden [n:a = no audio] # -f die Bibliothek "image2" von FFmpeg soll benützt werden # %05d fünfstellige Zahlen, wenn nötig mit Nullen beginnend mkdir DPX ffmpeg -i mandelbrot.mov -n:a -f image2 DPX/mandelbrot_%05d.dpx ffplay DPX/mandelbrot_%05d.dpx # ... und wieder zu einer einzigen Videodatei zusammenfügen. ffmpeg -f image2 -i DPX/mandelbrot_%05d.dpx -vcodec rawvideo -y mandelbrot_new.mov ffplay mandelbrot_new.mov # 13. "Vergnügliches" # Alle Zeilen eines Beispiels müssen ZUSAMMEN in das Terminal kopiert # werden. Und ffplay wird benötigt. # [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.] ffplay -i mandelbrot.mov -vf "crop=iw/2:ih:0:0,split[tmp],pad=2*iw[left];\ [tmp]hflip[right];[left][right]overlay=W/2" # Die R'G'B'-Komponenten (RGB-Komponenten) sichtbar machen. ffmpeg -f lavfi -i testsrc=d=60 -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" -f nut - | ffplay - # Die Y'CbCr-Komponenten (YUV-Komponenten) sichtbar machen. ffmpeg -f lavfi -i testsrc=d=60 -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" -f nut - | ffplay - 2016-09-01 |