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 |