【问题标题】:Extract a thumbnail from a specific video frame从特定视频帧中提取缩略图
【发布时间】:2013-12-22 07:22:37
【问题描述】:

给定一个特定的帧,我需要使用 ffmpeg 从视频中提取图像(缩略图)。

例如我能做到:

ffmpeg -i test.mp4 -ss 00:01:14.35 -vframes 1 out2.png

我可以从特定时间 (00:01:14.35) 提取图像,但我需要的是从特定帧中提取图像。

【问题讨论】:

  • 具体帧是什么意思?
  • 希望this link 能有所帮助。
  • 我指的是视频的第 866 帧或第 1350 帧。
  • 它是superuser.com/questions/459313/… 的副本,不是吗?
  • @ptQa 不!这不是重复的!

标签: ffmpeg


【解决方案1】:

或者只是

-vf "select=eq(n\,100)" 100.png

-vframes 选项可以省略

【讨论】:

    【解决方案2】:

    使用以下方法

    ffmpeg -ss 00:10:20 -t 1 -s 400x300 -i <INPUT_FILE> -f mjpeg <OUTPUT_FILE>
    

    -ss 和后面的时间参数告诉 ffmpeg 你希望在什么时候截屏。在此示例中,ffmpeg 将在 10 分 20 秒的位置进行拍摄。 -t 告诉 ffmpeg 你只想要 1 张照片,-s 是图片的大小,-f 告诉它制作照片(但不限于 jpg)。 例如,为 Batman.avi 在 1 小时 12 分 30 秒点生成 png 截图:

    ffmpeg -ss 01:12:30 -t 1 -s 400x300 -i Batman.avi -f mjpeg Batman.png
    

    【讨论】:

    • -f mpeg 选项会显着增加提取图像的大小。你可以省略它
    • 有问题的是,按帧,而不是按时间!
    【解决方案3】:

    要到达某个特定的帧,您应该使用过滤器选择。从视频中提取第 100 帧的命令应如下所示:

     ffmpeg -i in_video.avi -vf "select=gte(n\,100)" -vframes 1 out_img.png
    

    【讨论】:

    • 您还可以将结果通过管道传输到stdout,如果您从另一个进程调用ffmpeg,这很有用:ffmpeg -i sample_video.mp4 -vf "select=gte(n\,100)" -vframes 1 -f image2pipe pipe:1 | cat &gt; my_img.jpg - 但是,我还没有设法输出除@987654325 之外的其他格式@.
    • 我猜这里的 100 是第 101 帧,因为它是从 0 开始的。
    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 2013-09-13
    • 1970-01-01
    • 2014-04-14
    • 2011-07-20
    • 2011-08-23
    • 2015-07-25
    • 2020-03-03
    相关资源
    最近更新 更多