【问题标题】:Extract first non black keyframe with FFMPEG使用 FFMPEG 提取第一个非黑色关键帧
【发布时间】:2012-03-12 13:32:41
【问题描述】:

我正在尝试使用 ffmpeg 从视频关键帧中提取缩略图,我的命令行是:

ffmpeg -i video.mp4 -vframes 1 -s 200x200 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 0 -f image2 video.jpg

但是它提取的关键帧是全黑的(我猜视频以黑色帧开头)...有没有办法自动从视频中提取第一个非黑色关键帧没有寻找特定时间(我必须管理多个持续时间长的视频)?

谢谢

【问题讨论】:

    标签: ffmpeg keyframe


    【解决方案1】:

    我想不出单独使用 ffmpeg 的解决方案。但是,如果您提取前几个关键帧(例如通过调高 -vframes 20),则可以使用 ImageMagic 对其进行分析。将图像减少为一种灰度颜色,它将从图片中选择平均灰度值。类似的命令行

    convert avatar.jpeg -colors 1 -type grayscale -format '%c' histogram:info:
    

    这将产生类似的输出

    16384: ( 80, 80, 80) #505050 gray(80)
    

    (我以 Simone 的头像图片为例。)最后一个数字对您的情况最有趣。它表示图像的暗度,0 表示理想的黑色,255 表示纯白色。一个 sed 脚本可以轻松提取它

    convert ... | sed 's/^.*(\(.*\))$/\1/'
    

    将其与一些 shell 脚本混合,以找到灰度值高于给定阈值的第一张图像并将其用作缩略图。

    【讨论】:

      【解决方案2】:

      使用 thumbnail=num_frame 选项,您可以选择何时提取帧,但我不知道是否可以提取第一个非黑色关键帧。 http://ffmpeg.org/ffmpeg.html#thumbnail

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-04
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多