Obtenir des informations ffmpeg de manière amicale

Chaque fois que j’essaie d’obtenir des informations sur mes fichiers vidéo avec ffmpeg, cela génère beaucoup d’informations inutiles mélangées à de bonnes choses.

J’utilise ffmpeg -i name_of_the_video.mpg .

Il y a des possibilités d’obtenir cela d’une manière amicale? Je veux dire JSON serait génial (et même XML laid est bien).

À ce jour, j’ai analysé les données avec regex avec mon application, mais certains fichiers vidéo présentent de nombreux aspects désagréables. J’ai corrigé tout ce que j’ai rencontré, mais il peut y en avoir 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 en retard, mais peut-être encore pertinent pour quelqu’un ..

ffprobe est en effet un excellent moyen de faire. Notez, cependant, que vous devez indiquer à ffprobe les informations que vous souhaitez afficher (avec les -show_format , -show_packets et -show_streams ) ou il vous donnera simplement une sortie vierge (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 ceci:

 { "streams": [{ "index": 0, "codec_name": "wmv3", "codec_long_name": "Windows Media Video 9", "codec_type": "video", "codec_time_base": "1/1000", "codec_tag_ssortingng": "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