我如何知道视频是否具有可变帧速率?我不需要能够以编程方式执行此操作,我只是不想安装一些数百兆字节的程序;例如,如果我可以使用 VLC Media Player 执行此操作,那就完美了。
答案1
FFmpeg 有一个 vfrdet 过滤器用于此目的。
ffmpeg -i in -vf vfrdet -an -f null -
在日志中,你会看到以下形式的读数,
[Parsed_vfrdet_0 @ 0000000003d8fec0] VFR:0.833333 (50/10) min: 23 max: 291)
VFR 的非零值表示 vfr 流。括号中的第一个值是持续时间与检测到的流帧速率所暗示的预期持续时间不同的帧数。第二个值是具有预期持续时间的帧数。VFR 值是第一个数字与两者之和的比率。
需要注意几点:非常低或非常高的值表示一些错误的帧具有非标准持续时间,通常是第一帧和/或最后一帧。在大多数情况下,这些可以视为 CFR。0.50 左右的值表示流的帧速率和/或时间基准无法在流的时间基准中准确表达名义帧持续时间,因此生成文件的应用程序会使持续时间振荡,例如,如果流的 fps 为 6,时间基准为 1/100,则视频第一秒的理想时间戳将是 0、16.667、33.334、50.000、66.667、83.333、100.000,但时间戳是整数,因此复用器可能会存储 0、16、34、50、67、83、100。这可能会显示为 VFR 值为 0.5 的流
答案2
只需使用 ffprobe
ffprobe -v quiet -print_format json -show_streams input
并检查avg_frame_rate
所需视频流的参数。如果此参数的值是这样的分数
"avg_frame_rate": "1205285219/50270287"
分母不为 1,则视频文件具有可变的帧速率。
如果值是这样的
"avg_frame_rate": "25/1"
确保流具有恒定的帧速率。
答案3
可以使用媒体信息(5 MB,跨平台,在 Windows 上有便携版本,免费)判断视频是否具有可变帧速率: