DE  |  FR  |  IT

Videoformat mit FFmpeg erkennen

Wie können wir Containerformat und Codec zuverlässig erkennen?

[24-03-2020] Beim Umgang mit Videomaterial stellt sich schnell die Frage, ob das abgelieferte Material tatsächlich im erwarteten Format ist. Videoplayer versuchen in der Regel, alle bekannten Formate zu öffnen (auch unabhängig von der Dateiendung) und bieten wenig Information.

In der Regel wird im Ingest auch das Format von Videodateien ermittelt und mit den für die Archivierung vorgesehen Formaten verglichen. Klappt das nicht oder bestehen Unsicherheiten, ist eine genauere Ermittlung von Containerformat und Codec unerlässlich, sowohl für Video als auch für Audio.

Die Player helfen uns in der Regel nicht weiter. Eine Ausnahme ist hier VLC media player, dieser Player bietet auch Informationen zum Format. Andere Tools, wie ShotCut, ein Open Source Video Editor, MediaInfo und QCTools von MediaArea (https://mediaarea.net/) basieren zum grossen Teil auf FFmpeg. Anwenderinnen und Anwender, die den Umgang mit der Kommandozeile (Konsole) gewohnt sind, können aber auch direkt das Basistool einsetzen.

Containerformat erkennen

ffprobe ist ein Kommandozeilen-Werkzeug von FFmpeg und umfasst eine Sammlung von Befehlen, die technische Metadaten aus Videodateien auslesen. Beispiel:

Eingabe:
ffprobe -show_entries format=format_name,format_long_name -of default=nw=1 -v error d:\SampleVideo\video.mov

Ausgabe:
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV

-show_entries ist selbsterläuternd, -of default=nw=1 bestimmt das Ausgabeformat, im Detail: -print_format default=noprint_wrappers=1, -v error reduziert überflüssige Meldungen. Siehe: https://ffmpeg.org/ffprobe.html

Codec-Format erkennen

Beim Codecformat sehen wir in der Regel zwei Streams im Container, einen Audio- und einen Video-Stream:

Eingabe:
ffprobe -show_entries stream=codec_name,codec_long_name -of default=nw=1 -v error d:\SampleVideo\video.mov

Ausgabe:
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10

Hier ist der Audiocodec von Typ "AAC" und der Videocodec vom Typ "h264".

Alternative: MediaInfo

Mit MediaInfo von MediaArea (https://mediaarea.net/en/MediaInfo) kann man diese Informationen auch in einem GUI betrachten und in diverse Ausgabeformate exportieren:

Achtung, keine Formatvalidierung

Bei den beschriebenen Untersuchungen werden nur Format-Metadaten aus den Videodateien ausgelesen, es findet keine Validierung des Videoformats statt. Auch wird die Integrität des Videostreams nicht überprüft.