gpt4 book ai didi

ffmpeg - 以相等的时间/间隔从视频创建多个缩略图

转载 作者:行者123 更新时间:2023-12-04 23:19:47 26 4
gpt4 key购买 nike

我需要使用 ffmpeg 在同一时间从视频中创建多个缩略图(例如 12 个)。
因此,例如,如果视频是 60 秒 - 我需要每 5 秒提取一次屏幕截图。

我使用以下命令在第 5 秒内获取帧。

ffmpeg -ss 5 -i video.webm -frames:v 1 -s 120x90 thumbnail.jpeg

有没有办法用一个命令获得多个缩略图?

最佳答案

获取持续时间(可选)

Get duration using ffprobe 。这是一个可选步骤,但如果您要编写脚本或自动执行下一个命令,这将很有帮助。

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4

示例结果:
60.000000

每 5 秒输出一帧

使用 select 过滤器:
ffmpeg -i input.mp4 -vf "select='not(mod(t,5))',setpts=N/FRAME_RATE/TB" output_%04d.jpg

或者
ffmpeg -i input.mp4 -vf "select='not(mod(t,5))'" -vsync vfr output_%04d.jpg
  • 文件将命名为 output_0001.jpgoutput_0002.jpgoutput_0003.jpg 等。有关更多信息和选项,请参见 image muxer documentation
  • 要调整 JPEG 质量,请参阅 How can I extract a good quality JPEG image from a video with ffmpeg ?

  • 输出特定数量的等距帧

    这将从 60 秒持续时间的输入中输出 12 帧:
    ffmpeg -i input.mp4 -vf "select='not(mod(t,60/12))'" -vsync vfr output_%04d.jpg

    您必须手动输入输入的持续时间(在上面的示例中显示为 60)。请参阅下面的自动方法。

    使用 ffprobe 自动提供持续时间值

    重击示例:
    input=input.mp4; ffmpeg -i "$input" -vf "select='not(mod(t,$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $input)/12))'" -vsync vfr output_%04d.jpg

    带刻度过滤器

    使用 scale 过滤器的示例:
    ffmpeg -i input.mp4 -vf "select='not(mod(t,60/12))',scale=120:-1" -vsync vfr output_%04d.jpg

    关于ffmpeg - 以相等的时间/间隔从视频创建多个缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69031424/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com