gpt4 book ai didi

loops - 仅使用 ffmpeg,是否可以使用源 GIF 图像并通过输入 GIF 输出设定长度 > 一个循环的视频?

转载 作者:行者123 更新时间:2023-12-04 22:45:09 24 4
gpt4 key购买 nike

假设我有一个 2 秒长的 8 帧动画 GIF。我想构建一个 30 秒长的视频文件(此时编解码器并不重要),其中包含不断重复的源 GIF。

是否可以仅使用 ffmpeg 来做到这一点? 使用 convert 或其他一些预处理实用程序的答案不算 [The原因是我想在没有该实用程序的 PandaStream 上使用它]。我们还假设 shell 脚本也不在考虑范围内,尽管它可以是多个 ffmpeg 命令。


我尝试过但没有用的东西(虽然也许我做错了,我对 ffmpeg 不是很熟悉):

  1. 使用 ffmpeg docs 中的 -loop_input-loop_output 选项.同时使用 ffmpeg 1.2 和 2.0,我收到了 Unrecognized option 'loop_[input|output]' 错误消息。尽管文档说它已被弃用,但我可能用错了,因为错误是关于无法识别该选项。

  2. -loop 选项。似乎对 GIF -> 视频没有任何作用。我认为这个标志和上面的标志与生成动画 GIF 作为输出有关。

  3. 连接。做类似的事情:

    ffmpeg -i "concat:image.gif|image.gif|image1.gif|image2.gif|image3.gif|image4.gif"image-long.gif

    生成一个 16 帧的 gif(因此两个 gif 被连接起来)这是一个进步,尽管输出 gif 的质量要低得多。


我在这里有点不知所措(我已经尝试了上述概念的许多其他排列),我现在正处于“用棍子戳它”的地步,希望有人已经做到了!

最佳答案

这可能吗?是的。

查看How to concatenate (join, merge) media files ,我们可以将 gif 和转码为 mpeg 流(你可以复制第一个两次):

ffmpeg -i image.gif -f mpegts image1.ts
ffmpeg -i image.gif -f mpegts image2.ts
ffmpeg -i image.gif -f mpegts image3.ts

然后连接它们,输出为 gif

ffmpeg -i "concat:image1.ts|image2.ts|image3.ts" -pix_fmt rgb24 output.gif

从 mp4 或类似文件开始似乎可以得到更好的结果;将第一步替换为

ffmpeg -i image.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts image1.ts

并重复其他副本。

我创建了相同的多个副本,因为如果我尝试多次 concat: 同一个文件 (concat:image1.ts|image1.ts|image1.ts ) 它不起作用。

享受

关于loops - 仅使用 ffmpeg,是否可以使用源 GIF 图像并通过输入 GIF 输出设定长度 > 一个循环的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18883144/

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