每次我尝试使用ffmpeg获取有关我的视频文件的信息时,都会吐出很多无用的信息,混杂着很多好东西。
我正在使用ffmpeg -i name_of_the_video.mpg。
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选项),或者它会只给你空白输出(如你在你的评论人提)。
ffprobe
-show_format
-show_packets
-show_streams
例如,ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf将产生如下内容:
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" } } }