Jedes Mal, wenn ich versuche, mit ffmpeg Informationen über meine Videodateien abzurufen, werden viele nutzlose Informationen mit guten Dingen vermischt.
Ich benutze ffmpeg -i name_of_the_video.mpg
.
Gibt es irgendwelche Möglichkeiten, das auf freundliche Weise zu bekommen? Ich meine, JSON wäre großartig (und selbst hässliches XML ist in Ordnung).
Inzwischen habe ich meine Anwendung dazu gebracht, die Daten mit Regex zu analysieren, aber es gibt viele unangenehme Ecken, die in bestimmten Videodateien angezeigt werden. Ich habe alles behoben, was mir begegnet ist, aber es kann noch mehr geben.
Ich wollte so etwas wie:
{
"Stream 0": {
"type": "Video",
"codec": "h264",
"resolution": "720x480"
},
"Stream 1": {
"type": "Audio",
"bitrate": "128 kbps",
"channels": 2
}
}
Antworten:
Ein bisschen spät, aber vielleicht immer noch relevant für jemanden ..
ffprobe
ist in der Tat ein ausgezeichneter Weg. Beachten Sie jedoch, dass Sie sagen müssen ,ffprobe
welche Informationen Sie es (mit der angezeigt werden soll-show_format
,-show_packets
und-show_streams
Optionen) oder es werden Sie nur leere Ausgabe geben (wie Sie in einem Ihrer Kommentare erwähnen).Zum Beispiel
ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
würde so etwas ergeben:quelle
-of json
anstelle von verwenden-print_format json
. Ersteres ist kompatibel mitavprobe
letzterem nicht.Jetzt ist es möglich,
-progress -
freundliche Informationen zu drucken, die von formatiert sindkey=value
.quelle
Du könntest es versuchen
ffprobe
. Der richtige Befehl zum Abrufen der JSON-Ausgabe sollte wie folgt aussehen:quelle
{}
. Es scheint nicht mit den Videodateien zu funktionieren, die ich habe ...Eine andere Verwendung
ffprobe
davon ist gut analysierbar:Ergebnisse in:
h264x600x480x25/1x385.680000x542326
-select_streams v:0
wählt nur den Videostream aus. Wenn Sie diesen Parameter entfernen, erhalten Sie eine Zeile für jeden Stream.quelle