FFmpeg-Befehle

# 1.  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]
#     -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



# 2.  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).
#     Sie können, zum Beispiel, das Programm "VLC" benützen.



# 3.  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



# 4.  Die Listen der möglichen Parametern anzeigen.

ffmpeg -codecs
ffmpeg -decoders
ffmpeg -h decoder=flac
ffmpeg -encoders
ffmpeg -filters
ffmpeg -formats
ffmpeg -layouts
ffmpeg -sample_fmts
ffmpeg -pix_fmts
ffmpeg -bsfs



# 5. 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



# 6.  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
#     -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 Camera_%06d.tif -c:v prores -profile:v 3 -filter:v "scale=1440:1080, pad=1920:1080:240:0" -an Camera_ProRes.mov

#     Bemerkung für die Windows-Benützer:
#     Sie erzeugen eine Apple-Datei.
#     Sie können, zum Beispiel, das Programm "VLC" benützen.



# 7.  "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.]

# 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" 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" YUV.avi

2015-12-19