Cada vez que tento obter alguma informação sobre meus arquivos de vídeo com o ffmpeg, ele vomita muitas informações inúteis misturadas com coisas boas.
Estou usando ffmpeg -i name_of_the_video.mpg
.
Existe alguma possibilidade de conseguir isso de uma forma amigável? Quer dizer, JSON seria ótimo (e mesmo um XML feio é bom).
Até agora, eu fiz meu aplicativo analisar os dados com regex, mas há muitos cantos desagradáveis que aparecem em alguns arquivos de vídeo específicos. Consertei tudo o que encontrei, mas pode haver mais.
Eu queria algo como:
{
"Stream 0": {
"type": "Video",
"codec": "h264",
"resolution": "720x480"
},
"Stream 1": {
"type": "Audio",
"bitrate": "128 kbps",
"channels": 2
}
}
Respostas:
Um pouco tarde, mas talvez ainda seja relevante para alguém ..
ffprobe
é realmente um excelente caminho a percorrer. Observe, porém, que você precisa dizerffprobe
quais informações deseja exibir (com as opções-show_format
,-show_packets
e-show_streams
) ou ele apenas fornecerá uma saída em branco (como você mencionou em um de seus comentários).Por exemplo,
ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
resultaria em algo como o seguinte:fonte
-of json
vez de-print_format json
. O primeiro é compatível,avprobe
enquanto o último não.Agora é possível usar
-progress -
para imprimir informações amigáveis formatadas porkey=value
.fonte
Você pode tentar
ffprobe
. O comando correto para obter a saída JSON deve ser parecido com o seguinte:fonte
{}
. Parece não funcionar com os arquivos de vídeo que tenho ...Outro uso
ffprobe
que é bem analisável:resulta em:
h264x600x480x25/1x385.680000x542326
-select_streams v:0
seleciona apenas o fluxo de vídeo. Se você remover esse parâmetro, obterá uma linha para cada fluxo.fonte