web-dev-qa-db-ja.com

フレンドリーな方法でffmpeg情報を取得

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
  }
}
99
JBernardo

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

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"
    }
  }
}
270
Irexistus

ffprobe を試すことができます。 JSON出力を取得する正しいコマンドは次のようになります。

ffprobe ... -print_format json
13
NT3RP

-progress -を使用して、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
10
Oleksandr Kyrpa