Chaque fois que j’essaie d’obtenir des informations sur mes fichiers vidéo avec ffmpeg, de nombreuses informations inutiles sont mélangées à de bonnes choses.
J'utilise ffmpeg -i name_of_the_video.mpg
.
Il y a des possibilités pour que cela soit amicalement? Je veux dire que JSON serait génial (et même un vilain XML, ça va).
À ce jour, j’ai fait analyser les données avec regex dans mon application, mais il existe de nombreux recoins désagréables qui apparaissent sur certains fichiers vidéo. 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
}
}
Un peu tard, mais peut-être toujours pertinent pour quelqu'un ..
ffprobe
est en effet un excellent moyen d'aller. Notez cependant que vous devez indiquer à ffprobe
les informations que vous souhaitez afficher (avec le -show_format
, -show_packets
et -show_streams
_ options) ou cela vous donnera simplement une sortie vierge (comme vous le mentionnez dans un de vos commentaires).
Par exemple, ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
donnerait quelque chose comme ceci:
{
"streams": [{
"index": 0,
"codec_name": "wmv3",
"codec_long_name": "Windows Media Video 9",
"codec_type": "video",
"codec_time_base": "1/1000",
"codec_tag_string": "WMV3",
"codec_tag": "0x33564d57",
"width": 320,
"height": 240,
"has_b_frames": 0,
"pix_fmt": "yuv420p",
"level": -99,
"r_frame_rate": "30000/1001",
"avg_frame_rate": "0/0",
"time_base": "1/1000",
"start_time": "0.000",
"duration": "300.066",
"tags": {
"language": "eng"
}
}],
"format": {
"filename": "somefile.asf",
"nb_streams": 1,
"format_name": "asf",
"format_long_name": "ASF format",
"start_time": "0.000",
"duration": "300.066",
"tags": {
"WMFSDKVersion": "10.00.00.3646",
"WMFSDKNeeded": "0.0.0.0000",
"IsVBR": "0"
}
}
}
Vous pouvez essayer ffprobe
. La commande correcte pour obtenir une sortie JSON devrait ressembler à ceci:
ffprobe ... -print_format json
Il est maintenant possible d'utiliser -progress -
pour imprimer des informations conviviales formatées par key=value
.
ffmpeg -i video.mp4 .......-s 1920x1080 -progress - -y out.mp4
speed=5.75x
frame=697
fps=167.7
stream_0_0_q=39.0
bitrate=2337.0kbits/s
total_size=6979778
out_time_ms=23893333
out_time=00:00:23.893333
dup_frames=0
drop_frames=0