首页 > 解决方案 > 使用 ffmpeg 提取帧并找出它们的偏移量(毫秒)

问题描述

我希望每 2 秒提取 10 个连续帧。(这是因为我希望从“附近偏移”中选择“最好的”)。我知道如何每 x 秒提取一帧:

ffmpeg -i /tmp/V.MP4 -vf fps=1 %02d.jpg

我知道如何从一些起始偏移中提取 10 帧:

ffmpeg -ss 20.0 -i /tmp/V.MP4 -vframes 10 %02d.jpg

我有两个问题:

  1. 如何找到每个输出图像的偏移量?我可以尝试计算它(使用视频 fps,在我的情况下为 29.97),但这听起来是个坏主意 - 数据就在视频中供 ffmpeg 抓取..
  2. 有没有一种有效的方法可以将两个命令“合并”为一个,从而每 x 秒获得 10 个连续帧?

标签: ffmpeg

解决方案


利用

ffmpeg -i source -vf select='eq(n,0)+if(mod(trunc(t)+1,2)*(trunc(t)-trunc(prev_t)),st(1,n),lt(n,ld(1)+10))' -vsync 0 -frame_pts 1 %d.jpg

如何找到每个输出图像的偏移量?

查看 frame_pts 值的含义,在ffmpeg 输出图像文件名和时间位置

这是因为我希望从“附近偏移”中选择“最好的”

缩略图过滤器可以做到这一点。


推荐阅读