1. ホーム
  2. json

[解決済み] ffmpegの情報を簡単に取得する方法

2022-08-16 18:47:39

質問

ffmpeg で動画ファイルに関する情報を取得しようとすると、毎回、良い情報と無駄な情報が混在したものを大量に吐き出してしまいます。

私は ffmpeg -i name_of_the_video.mpg .

それを友好的な方法で取得する可能性はないのでしょうか?私はJSONが素晴らしいだろうことを意味します(そして醜いXMLでも構いません)。

今までに、私は正規表現でデータを解析するアプリケーションを作りましたが、いくつかの特定のビデオファイルに現れるたくさんの厄介な角があります。私が遭遇したものはすべて修正しましたが、もっとあるかもしれません。

のようなものが欲しかったのです。

{
  "Stream 0": {
     "type": "Video",
     "codec": "h264",
     "resolution": "720x480"
  },
  "Stream 1": {
     "type": "Audio",
     "bitrate": "128 kbps",
     "channels": 2
  }
}

どのように解決するのですか?

少し遅くなりましたが、おそらくまだ誰かに関連しています。

ffprobe は確かに素晴らしい方法です。しかし ffprobe にどのような情報を表示させたいかを ( -show_format , -show_packets-show_streams オプション)でなければ、(あなたがコメントの1つで言及したように)空白の出力を与えるだけでしょう。

例えば ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf とすると、以下のようなものが得られます。

{
  "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"
    }
  }
}