gpt4 book ai didi

animation - FFMPEG 控制延迟和循环以生成 APNG

转载 作者:行者123 更新时间:2023-12-04 22:46:16 34 4
gpt4 key购买 nike

我有一个(随机选择的)JPG 图像,我想使用 ffmpeg 将其制作成 APNG 动画(以测试过程)。它们的尺寸均相同 (256x256)。但我似乎无法获得正确的语法来控制帧延迟和循环控制(永远循环)。从图像序列创建 APNG 时是否可以使用 ffmpeg 设置这些参数?如果是这样,有人可以提供正确的语法和/或显示示例命令吗?我搜索了 ffmpeg 文档,似乎找不到相关语法。

我可以执行以下操作,但它不接受 -delay 或 -loop。我使用 Imagemagick 来导入图像。

这可以工作,但不会循环,并且运行速度非常快。

magick lena.jpg mandril3.jpg monet2.jpg zelda1.jpg PNG:- | ffmpeg -i - x.apng

这会给出有关延迟和/或循环的错误:

magick lena.jpg mandril3.jpg monet2.jpg zelda1.jpg PNG:- | ffmpeg -i - -delay 1000 -loop -1 x.apng

我也很想知道是否可以直接在 ffmpeg 中指定图像序列作为输入,而不使用 ImageMagick。

抱歉,我是 ffmpeg 的新手。我使用的是 ffmpeg 4.2.1。

最佳答案

循环

您可以使用-plays输出选项设置循环。 0 是无限的,1 没有循环,2 将播放两次,等等。

-plays 是 APNG 复用器的特定选项(又名 private option )。您可以使用 ffmpeg -h muxer=apng 来查看特定复用器的私有(private)选项。请参阅What are all codecs and formats supported by FFmpeg?了解更多示例。

APNG 的另一个私有(private)选项是 -final_delay ,用于在最后一帧之后强制延迟。接受以秒为单位的值。

向 ffmpeg 提供图像

图像解复用器

最常见的方法是使用 image demuxer .

它接受编号序列,例如 image_001.pngimage_002.png 等:

ffmpeg -framerate 3 -i image_%03d.png -plays 0 output.apng

或者一个 glob(至少在 Linux 和 macOS 上):

ffmpeg -framerate 1 -pattern_type glob -i "*.png" output.apng

使用 -framerate 输入选项设置延迟/计时,如上面的示例所示。这是图像解复用器的私有(private)选项。

管道

您可以像在问题中那样将图像通过管道传输到 ffmpeg 。与其他工具结合使用可以提供您喜欢的顺序。

例如,使用 sort 有助于您的图像系列使用自然/版本编号,例如 1.png2.png、. ..、10.png 等。否则 ffmpeg 会将它们排序为 1.png10.png2.png

cat $(find . -name '*.png' -print | sort -V) | ffmpeg -framerate 1 -i - -plays 1 output.apng

Concat 解复用器

或者使用concat demuxer如果您想提供文件列表。每个图像可以有自己的持续时间。

  1. 创建input.txt,其中包含:

    file 'lena.jpg'
    duration 1
    file 'mandril3.jpg'
    duration 0.5
    file 'monet2.jpg'
    duration 3
    file 'zelda1.jpg'
    duration 2

    持续时间值以秒为单位。

  2. 连接:

    ffmpeg -f concat -i input.txt -plays 0 output.apng

如果您省略持续时间,并且希望图像之间的延迟/时间均匀,则可以使用-r 输入选项。此示例将以每秒 1 帧的速度播放。

ffmpeg -r 1 -f concat -i input.txt -plays 0 output.apng

另请参阅FFmpeg Wiki: Concatenate .

关于animation - FFMPEG 控制延迟和循环以生成 APNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64021838/

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