使用 ffmpeg 从视频中提取帧会导致每 fps 的帧数异常多

使用 ffmpeg 从视频中提取帧会导致每 fps 的帧数异常多

我有一个任务,使用 ffmpeg 从视频中平均提取帧,帧速率不同。我使用这个命令。

ffmpeg -i input.mp4 -r specified_fps -q:v 2 image %4d.png

对于这个任务我有 3 个问题。

  1. 我原本的期望是,如果我将 fps 翻倍,提取的帧数也会翻倍。但事实并非如此。以一个输入视频为例。对于所有样本因子,我都获得了 2 个额外的帧(80 / 158 / 236 / 392 vs 78 / 156 / 234 / 390)。这是否与从视频中提取帧时的拾取/丢弃帧机制有关?(感谢@Tom Yan)

视频信息

  • 时长:1分18秒
  • 帧率模式:恒定(CFR)
  • 帧率:30.0 FPS
  • 总帧数:2340

配置设置和结果

第一人称射击游戏 实际帧数 正确的帧数
1 80 78
2 158 156
3 236 234
5 392 390
  1. 我检查输出图像,发现不同 fps 提取的帧完全不同。换句话说,例如,fps=1 的第一幅图像与 fps=2 的第一幅图像不同。这合法吗?我有可能获得不同 fps 的一些相同图像吗?

  2. 最后一个问题是,我使用的某些视频,第 1 幅图像与第 2 幅图像之间的差异与第 2 幅图像与第 3 幅图像之间的差异不同。而对于其余图像,差异变得平均。具体来说,从第 1 帧到第 2 帧只有轻微的变化,而从第 2 帧到第 3 帧、第 3 帧到第 4 帧等等,变化相同,这根据指定的 FPS 呈正态分布。我想知道为什么会出现这种情况?它与 I 帧、B 帧、P 帧、GOP 或 IDR 有关吗?

我是这个领域的新手,无法从其他地方找到有用的信息。我已尽力清楚地描述我的问题。请随意发表评论。任何帮助都会对我大有裨益。提前致谢!

相关内容