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
}
}
ベストアンサー1
少し遅いですが、まだ誰かにとって関連性があるかもしれません。
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"
}
}
}