[[Vorlage(Getestet, jammy, bionic)]]

{{{#!vorlage Wissen
[:Terminal: Ein Terminal öffnen]
}}}
[[Inhaltsverzeichnis(1)]]

[[Bild(Wiki/Icons/terminal.png, 48, align=left)]]
ffprobe ist eine Anwendung für die Kommandozeilen, die übersichtlich Informationen zu Multimediadateien und den enthaltenen Streams anzeigt und das früher verwendete Programm `avprobe` ersetzt. Es ist Bestandteil von [:FFmpeg:]. Eine Alternative ist das Programm [:MediaInfo:], das zusätzlich eine grafische Oberfläche bietet.

= Installation =
Es muss das folgende Paket installiert werden:

{{{#!vorlage Paketinstallation
ffmpeg, universe
}}}

= Benutzung =
ffprobe wird im Terminal ausgeführt [1]. Die allgemeine Syntax ist

{{{#!vorlage Befehl
ffprobe [OPTIONEN] EINGABEDATEIEN
}}}

Neben den generischen Optionen, die für alle Anwendungen des FFmpeg-Projekt gelten (siehe [:FFmpeg#Benutzung:Allgemeine EInstellungen]), werden u.a. folgende akzeptiert:
{{{#!vorlage Tabelle
<rowclass="titel"-3> ffprobe Optionen
+++
<rowclass="kopf">Option
Beschreibung
+++
`-f FORMAT`
FORMAT erzwingen
+++
`-pretty`
Formate der angezeigten Werte verschönern
+++
`-show_format`
Informationen über das Containerformat der Eingabedateien anzeigen
+++
`-show_packets`
Informationen über jedes Paket anzeigen, das die Eingabedateien enthalten (Achtung: Gibt viele Informationen aus. Mit [:more:] oder [:less:] kombinieren ober in Datei umleiten (siehe [:Shell/Umleitungen:])
+++
`-show_streams`
Informationen über jeden Stream anzeigen, die die Eingabedateien enthalten
}}}

Eine vollständige Auflistung bietet die [:man:Manpage] zu ffprobe.

== Beispiel ==
Die Ausgabe des Befehls 

{{{#!vorlage Befehl
ffprobe -show_format -show_streams -pretty "Black Wonderful Life.mp3"
}}}
sieht zum Beispiel so aus:

{{{#!code
ffprobe version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2007-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mp3, from 'Black Wonderful Life.mp3':
  Metadata:
    title           : Wonderful Life
    artist          : Black
  Duration: 00:04:57.04, start: 0.025057, bitrate: 256 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 256 kb/s
    Metadata:
      encoder         : Lavc56.60
[STREAM]
index=0
codec_name=mp3
codec_long_name=MP3 (MPEG audio layer 3)
profile=unknown
codec_type=audio
codec_time_base=1/44100
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
sample_fmt=s16p
sample_rate=44.100000 KHz
channels=2
channel_layout=stereo
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/14112000
start_pts=353600
start_time=0:00:00.025057
duration_ts=4191805440
duration=0:04:57.038367
bit_rate=256 Kbit/s
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:encoder=Lavc56.60
[/STREAM]
[FORMAT]
filename=Black Wonderful Life.mp3
nb_streams=1
nb_programs=0
format_name=mp3
format_long_name=MP2/3 (MPEG audio layer 2/3)
start_time=0:00:00.025057
duration=0:04:57.038367
size=9.065883 Mibyte
bit_rate=256.027000 Kbit/s
probe_score=51
TAG:title=Wonderful Life
TAG:artist=Black
[/FORMAT]
}}}
Diese Beispielausgabe enthält folgende Elemente:
 * Zeilen 1 bis 12: Allgemeine Informationen zu ffprobe und der verwendeten Bibliotheken (Diese Zeilen kann man mit der Option `-hide_banner` unterdrücken.)
 * Zeile 13: Ausgabe des Codecs (mp3)
 * Zeilen 14 bis 16: Meta-Informationen dieser Datei
 * Zeile 17: Zusammengefasste Informationen über diese Datei
 * Zeile 18: Zusammengefasste Informationen über den Audio-Stream
 * Zeile 20: den verwendeten Encoder
 * Zeilen 21 bis 62: Detaillierte Informationen (`-show_streams`)
 * Zeilen 63 bis 76: Detaillierte Informationen über die Datei und das Dateiformat (`-show_format`)
Da die von den Optionen, die dem Schema `-show_*` folgen, ausgegebenen Informationen eine feste Syntax haben, eignen sie sich für die automatische Weiterverarbeitung z.B. in Statistiken.

Falls nach der ersten Angabe zu `configuration` die Ausgabe

{{{
  WARNING: library configuration mismatch
}}}
gefolgt von einer weiteren Ausgabe zu avcodec erfolgt, sind vermutlich Dateien aus verschieden Versionen der libavcodecs installiert, z.B. wenn eine aktuelle Version über [:FFmpeg/#Linux-Static-Builds: Linux Static Builds] zusätzlich zu den Paketen aus den Quellen verwendet wurde.

= Weitere Beispiele =
So könnte man z.B. nur die Format-Informationen ausgeben lassen.

{{{#!vorlage Befehl
ffprobe -i "Video.mp4" -show_format -v quiet
}}}

Mit Hilfe des [:grep:]-Befehls lässt sich die Ausgabe auf die Dauer (in Sekunden) und Dateigröße (in Bytes) reduzieren.

{{{#!vorlage Befehl
ffprobe -i "Video.mp4" -show_format -v quiet | grep 'duration\|size'
}}}

{{{
duration=1297.811000
size=83696475
}}}

Durch [:find:] und [:sort:] kann man zusätzlich alle Video-Dateien im aktuellen Verzeichnis analysieren.

{{{#!vorlage Befehl
find . -type f -iname '*.mp4' -print0 | sort -z | xargs -0 -i ffprobe -i "{}" -show_format -v quiet | grep 'duration\|filename'
}}}

{{{
filename=./Video01.mp4
duration=615.171000
filename=./Video02.mp4
duration=632.051000
filename=./Video03.mp4
duration=630.056000
}}}

= Links =
 * [https://ffmpeg.org/ffprobe.html ffprobe] {en} - Dokumentation
 * [:FFmpeg:] {Übersicht} Hauptartikel

#tag: Shell, Multimedia