以友好的方式获取ffmpeg信息

每次我尝试用ffmpeg获得一些有关我的video文件的信息,都会把很多无用的信息与好东西混杂在一起。

我正在使用ffmpeg -i name_of_the_video.mpg

有什么可能以友好的方式获得? 我的意思是JSON将是伟大的(甚至丑陋的XML是好的)。

现在,我让我的应用程序用正则expression式parsing数据,但是在一些特定的video文件中出现了很多令人讨厌的angular落。 我固定了所有我遇到的,但可能会有更多。

我想要这样的东西:

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

有点晚了,但也许还是与某人有关。

ffprobe确实是一个很好的select。 但是请注意,您需要告诉ffprobe您希望显示哪些信息(使用-show_format-show_packets-show_streams选项),否则它只会给出空白输出(就像您在其中一个注释中提到的那样)。

例如, 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" } } } 

你可以试试ffprobe 。 获取JSON输出的正确命令应如下所示:

 ffprobe ... -print_format json