loops - 使用 ffmpeg 仅使用某些帧创建无限循环动画

标签 loops animation ffmpeg

我可以使用以下命令创建动画 gif。

ffmpeg -i wrist_0001.png -vf palettegen=16 palette.png

ffmpeg -i wrist_%04d.png -i palette.png -filter_complex "fps=20,scale=720:-1:flags=lanczos[x];[x][1:v]paletteuse" logo.gif
我想知道该怎么做是:
  • 仅使用前 20 帧创建另一个动画 gif,动画将无限循环 (动画结束时没有暂停) .
  • 仅使用 的前 20 帧创建另一个动画 gif。动画播放然后在结束时暂停 3 秒然后继续。 (没完没了地)示例:(播放动画 - 暂停 3 秒 - 播放动画 - 暂停 3 秒 - 播放动画 - 暂停 3 秒...)

  • 注意:我试图避免输入手腕_0001.png 手腕_0002.png ......是否可以将手腕_0001.png 转换为手腕_0020.png?

    最佳答案

  • 仅使用前 20 帧创建另一个动画 gif,动画会无限循环(动画结束时不会暂停):
    ffmpeg -framerate 20 -i wrist_%04d.png -filter_complex "scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=16[p];[s1][p]paletteuse" -frames:v 20 -loop 0 20framesloop.gif
    
  • 当使用一组图像作为输入时,将帧速率设置为 -framerate image demuxer输入选项。您的原始命令默认为 25 fps,然后使用 fps 过滤器转换为 20 fps,这意味着正在丢弃帧。
  • -loop 0是 GIF muxer 的默认设置,但我添加它是为了展示如果您想更改循环它是如何工作的。 0 表示无限循环。
  • 此示例在一个命令中制作 GIF,如 How do I convert a video to GIF using ffmpeg, with reasonable quality? 所示。

  • 仅使用动画播放的前 20 帧创建另一个动画 gif,然后在结束时暂停 3 秒然后继续。 (不休)
    最有效的方法是重新混合上一步中的 GIF:
    ffmpeg -i 20framesloop.gif -c copy -final_delay 300 -loop 0 3secpause.gif
    
    -final_delay 300以厘秒为单位取值,因此 3 秒为 300 厘秒。见 ffmpeg -h muxer=gif了解更多信息。
  • 关于loops - 使用 ffmpeg 仅使用某些帧创建无限循环动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68524738/

    相关文章:

    javascript - Dojo:遍历链式动画?

    css - 如何让css3动画永远循环

    maven - 如何循环目录中的文件,并根据每个文件名执行一些任务?

    ffmpeg - 无法使用 FFMPEG 对视频进行转码

    ffmpeg - 使用FFMpeg时如何在双引号内转义引号、双引号和冒号

    ffmpeg - 如何将 ffplay 作为无窗口进程运行?

    java - java中重新启动双循环的方法

    javascript - 在 for 循环中更改 SVG 行的 strokeDashoffset

    android - TranslateAnimation - 动画仅在第二次后起作用

    javascript - Highcharts 条形图不会动画