将静止图像转换为带有过渡的视频

时间:2012-11-16 10:56:20

标签: imagemagick

我想从静止图像创建视频,最好使用ImageMagick和/或ffmpeg。我找到的最佳指南是:http://www.itforeveryone.co.uk/image-to-video.html

这种方法有效,但是这个命令

convert *.JPG -delay 10 -morph 10 %05d.morph.jpg

对我不起作用,因为延迟设定了静止图像和变形图像的时间。

我想出了一套四个图像(1.jpg ... 4.jpg)的解决方案,附加了一个黑色图像0.jpg:

convert -size 800x600 xc:'rgba(0,0,0,1)' 0.jpg
convert \
\( -set delay 1 0.jpg 1.jpg -morph 10 \) \
\( -set delay 60 1.jpg \) \
\( -set delay 1 1.jpg 2.jpg -morph 10 \) \
\( -set delay 60 2.jpg  \) \
\( -set delay 1 2.jpg 3.jpg -morph 10 \) \
\( -set delay 60 3.jpg         \) \
\( -set delay 1 3.jpg 4.jpg -morph 10 \) \
\( -set delay 60 4.jpg         \) \
\( -set delay 1 4.jpg 0.jpg -morph 10 \) \
 output.mpg

这就是我想要的,除了它

  1. 看起来很复杂,
  2. 我显然不能抛出一个' *。jpg'在那里,它可以在目录中的任何图像集上工作。
  3. 现在我可以用python或bash我的方式来自动化这个脚本,但我的直觉是我监督了一些明显的东西会把上面的剧本变成漂亮的单行程?或者至少不那么丑陋的东西?

    提前致谢。

2 个答案:

答案 0 :(得分:3)

我没有找到允许在那里投掷'* .jpg'的解决方案。但是使用-duplicate可以将其清理一下。我使用的是不同于常量的常量,但这里是:

convert \
\( 0.png 1.png -morph 23 -duplicate 25,-1 \) \
\( 1.png 2.png -morph 23 -duplicate 25,-1 \) \
\( 2.png 3.png -morph 23 -duplicate 25,-1 \) \
\( 3.png 4.png -morph 23 -duplicate 25,-1 \) \
\( 4.png 0.png -morph 23 \) \
output.mpg

我知道这个问题现在有点老了。如果,自从您发布以来,您已找到一个允许在其中投掷'* .jpg'的解决方案,我很乐意看到它。

答案 1 :(得分:1)

我在阅读同一篇文章后发现了这篇文章。我能够使用hack工作,而不是可以可靠地自动化的东西。但是,有一次我会使用这些说明,这对我有用。

我无法获得我的批次205顺序编号和相同大小的图像进行转换。我会等待10-15分钟,输出文件夹中不会出现任何内容。我把处理分成100个批次,它会在2-3分钟后处理完毕。我想205张图片太大了。

这要求我使用-scene参数

调整输出命名序列
convert 00*.jpg -delay 10 -morph 10 frames/%05d.morph.jpg
convert 01*.jpg -delay 10 -morph 10 -scene 1079 frames/%05d.morph.jpg
convert 02*.jpg -delay 10 -morph 10 -scene 2169 frames/%05d.morph.jpg
ffmpeg -i frames/%05d.morph.jpg -c:v libx264 -vf fps=25 -pix_fmt yuv420p output.mp4