Chaque fois que j'essaie d'obtenir des informations sur mes fichiers vidéo avec ffmpeg, cela dégage beaucoup d'informations inutiles mélangées à de bonnes choses.
J'utilise ffmpeg -i name_of_the_video.mpg
.
Y a-t-il des possibilités d'obtenir cela de manière amicale? Je veux dire que JSON serait génial (et même XML laid est bien).
À présent, j'ai fait que mon application analyse les données avec regex, mais il y a beaucoup de coins désagréables qui apparaissent sur certains fichiers vidéo spécifiques. J'ai corrigé tout ce que j'ai rencontré, mais il y en a peut-être plus.
Je voulais quelque chose comme:
{
"Stream 0": {
"type": "Video",
"codec": "h264",
"resolution": "720x480"
},
"Stream 1": {
"type": "Audio",
"bitrate": "128 kbps",
"channels": 2
}
}
Réponses:
Un peu tard, mais peut-être toujours pertinent pour quelqu'un.
ffprobe
est en effet une excellente façon de procéder. Notez cependant que vous devez indiquerffprobe
les informations que vous souhaitez afficher (avec les options-show_format
,-show_packets
et-show_streams
), sinon cela vous donnera simplement une sortie vide (comme vous le mentionnez dans l'un de vos commentaires).Par exemple,
ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
donnerait quelque chose comme ce qui suit:la source
-of json
place de-print_format json
. Le premier est compatible avecavprobe
le second non.Il est maintenant possible d'utiliser
-progress -
pour imprimer des informations conviviales formatées parkey=value
.la source
Vous pourriez essayer
ffprobe
. La commande correcte pour obtenir la sortie JSON doit ressembler à ce qui suit:la source
{}
. Cela ne semble pas fonctionner avec les fichiers vidéo que j'ai ...Une autre utilisation
ffprobe
est bien analysable:résulte en:
h264x600x480x25/1x385.680000x542326
-select_streams v:0
sélectionne uniquement le flux vidéo. Si vous supprimez ce paramètre, vous obtenez une ligne pour chaque flux.la source