125 votes

Obtenir des informations ffmpeg de manière conviviale

Chaque fois que j'essaie d'obtenir quelques informations à propos de mes fichiers vidéo avec ffmpeg, il dégueule beaucoup d'informations inutiles, mélangé avec de bonnes choses.

Je suis à l'aide d' ffmpeg -i name_of_the_video.mpg.

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

Maintenant, j'ai fait ma demande d'analyser les données avec des regex, mais il y a beaucoup de méchants coins qui apparaissent sur certains fichiers vidéo. J'ai corrigé tout ce que j'ai rencontrés, mais il y 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
  }
}

309voto

Irexistus Points 1024

Un peu tard, mais peut-être toujours pertinent pour quelqu'un ..

ffprobe est en effet une excellente façon de faire. Notez toutefois que vous devez indiquer à ffprobe les informations que vous souhaitez afficher (avec les options -show_format , -show_packets et -show_streams ) 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"
    }
  }
}
 

13voto

NT3RP Points 6566

Vous pouvez essayer ffprobe . La commande correcte pour obtenir une sortie JSON devrait ressembler à ceci:

 ffprobe ... -print_format json
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X