Каждый раз, когда я пытаюсь получить информацию о моих видеофайлах с помощью ffmpeg, он выдает много бесполезной информации, смешанной с хорошими вещами.
Я использую ffmpeg -i name_of_the_video.mpg
.
Есть ли возможности получить это по-дружески? Я имею в виду, что JSON был бы отличным (и даже уродливым XML подойдет).
К настоящему времени я заставил свое приложение анализировать данные с помощью регулярного выражения, но на некоторых конкретных видеофайлах появляется множество неприятных углов. Я исправил все, с чем столкнулся, но может быть и больше.
Я хотел что-то вроде:
{
"Stream 0": {
"type": "Video",
"codec": "h264",
"resolution": "720x480"
},
"Stream 1": {
"type": "Audio",
"bitrate": "128 kbps",
"channels": 2
}
}
Ответы:
Немного поздно, но, возможно, все еще актуально для кого-то ..
ffprobe
действительно отличный способ пойти. Заметим, однако, что вы должны сказать ,ffprobe
какую информацию вы хотите, чтобы отобразить (с-show_format
,-show_packets
и-show_streams
варианты) , или это будет просто дать вам пустой вывод (как вы упоминаете в одном из ваших комментариев).Например,
ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
даст что-то вроде следующего:источник
-of json
вместо-print_format json
. Первый совместим,avprobe
а второй - нет.Теперь можно использовать
-progress -
для печати удобной информации в форматеkey=value
.источник
Вы могли бы попробовать
ffprobe
. Правильная команда для получения вывода JSON должна выглядеть следующим образом:источник
{}
. Похоже, это не работает с имеющимися у меня видеофайлами ...Другое использование,
ffprobe
которое хорошо разбирается:приводит к:
h264x600x480x25/1x385.680000x542326
-select_streams v:0
выбирает только видеопоток. Если вы удалите этот параметр, вы получите по одной строке для каждого потока.источник