【问题标题】:Select keyframe closest to a particular instant with FFMPEG使用 FFMPEG 选择最接近特定时刻的关键帧
【发布时间】:2012-11-06 10:01:47
【问题描述】:

我有一个由某些第三方软件创建的 MP4 视频。我不知道关键帧是否定期。我已经成功地使用 FFMPEG 提取了对应于第 3 分钟(180 秒 * 帧/秒)的视频帧。

我想要做的是将“最接近”的关键帧提取到第三分钟 - 因为通常情况下,我使用当前成功的代码提取的帧不是关键帧,因此是模糊的。

我知道有一种方法可以提取 FFMPEG 中的所有个关键帧,但有没有一种方法可以提取视频中最接近特定时间的关键帧?

【问题讨论】:

  • 上述问题的一个变体是 - 如果我有多个帧(图像),有没有办法以编程方式识别哪个是关键帧?

标签: ffmpeg mp4 keyframe


【解决方案1】:

您可以使用select filter 选择“I”帧(也称为关键帧)。

 ffmpeg -ss 3:00 -i "my_video.mkv" -map 0:v:0 -filter:v "select=eq(pict_type\,I)" -vframes 1  3_min.jpg

在上面的例子中,我们是 FFmpeg 到:

  • 转到下一个输入的三分钟标记-ss 3:00
  • 定义输入-i "my_video.mkv"
  • 从第一个输入中选择:一个视频轨道:特别是第一个-map 0:v:0
  • 在视频-filter:v "select=eq(pict_type\,I)" 上使用魔术选择过滤器
  • 只从电影-vframes 1中抓取一个帧
  • 定义图像的保存位置,以及什么格式(可以更改为.bmp.png等...)3_min.jpg

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多