Wie man ffprobe benutzt, um bestimmte Informationen über mp4 / h.264-Dateien zu erhalten


12

Ich bin nur ein kleiner PHP-Entwickler, der damit beauftragt wurde, einige grundlegende Informationen über Hunderttausende von Videodateien abzurufen. Ich habe etwas Glück mit ffmpeg Extrahieren hat den video bitrate, video width, video height, duration, und aspect ratiovon ihnen, aber mit einem Fehler - Verhältnis von etwa 5%, das läßt mich immer noch mit einer enormen Anzahl von Dateien , dass ich weiß nicht , wie zu behandeln. Die Videos werden zwar wiedergegeben, aber die enorme Menge an Daten, die ffmpeg zurückgibt, hat mich verblüfft, wie das zurückgegebene XML analysiert wird, um herauszufinden, was ich unter allen Bedingungen benötige, denen ich zu begegnen scheine. (Die Dateien sind eine Sammlung aus den letzten 15 Jahren oder so, einige neu codiert, andere vor Jahren konvertiert)

Jedenfalls fand ich die folgende Verwendung ffprobe, um die Dauer zu ermitteln, und hoffte, dass jemand hier, der die Komplexität der Verwendung von ffmpeg & ffprobe versteht, mir dabei behilflich sein würde, die anderen Werte, die ich benötige, einfacher zu finden als die Verrückter Code, den ich erstelle, um die vollständigen Ergebnisse von ffmpeg durchzuarbeiten.

ffprobe -i "video.mp4" -show_entries format=duration -v quiet -of csv="p=0"

Vielen Dank im Voraus.

KLÄRUNG:

Ich sollte hinzufügen, dass ich mit dem folgenden Befehl "sehen" kann, was ich brauche, aber ich verstehe nicht, wie ich extrahiere, was ich brauche, z. B. die VIDEO-Bitrate abrufen und die AUDIO-Bitrate unterdrücken / ignorieren oder bestimmen kann, welche von 2 unterschiedliche Nutzungsdauer (Audio / Video-Dauer?)

C:\>ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4

duration=1712.000000
bit_rate=64000
width=320
height=240
duration=1711.946113
bit_rate=359827
duration=1712.000000
bit_rate=N/A
duration=1712.000000
bit_rate=N/A

Antworten:


15

Wenn Sie nur die Informationen aus dem ersten Videostream verwenden möchten -select_streams v:0:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration,bit_rate -of default=noprint_wrappers=1 input.mp4

Beispielausgabe:

width=640
height=480
duration=10.000000
bit_rate=942704

Vielen Dank für die Hilfe .... Ich musste die andere Antwort nur akzeptieren, weil ich zuerst darauf hingewiesen wurde, und es hat den Trick getan ..
GDP

@GDP Bitte beachten Sie: zuerst benachrichtigt in diesem Fall, weil es die neueste Antwort ist.
p2 oder

@poor Ich nehme den Wiederholungspunkt ziemlich ernst, aber diese Antwort war nicht auf meinem Bildschirm zu akzeptieren, bis ich den anderen akzeptiere, dann schien es, also die sofortige Entschuldigung. Tut mir leid, alle ... wollten wirklich nicht beleidigen.
BIP

8

Von https://trac.ffmpeg.org/wiki/FFprobeTips

Wenn Sie die Bitrate des ersten Videostreams erhalten möchten, können Sie Folgendes verwenden:

ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 input.mp4

Wo -select_steams v:0wählt man den 1. Videostream und :nokey=1gibt den Wert ohne den Schlüssel an. Sie können die Informationen auch extrahieren, indem Sie sie an grep leiten, aber ich bin nicht sicher, ob dies auf Ihrem System verfügbar ist.

ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4 | grep -oP "(?<=bit_rate\=)[0-9]+"

Hoffe das hilft!


"Piping it to grep" ... klingt wie etwas, das ich als Teenager getan haben könnte, lol ... DANKE für die Unterstützung!
BIP

Vielen Dank an @GDP, aber LordNeckbeard's ist die Antwort, die Sie wahrscheinlich akzeptieren sollten, da sie zuerst veröffentlicht wurde
Moorej,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.