假设我有10张图片,我想将这些图片合并到幻灯片中的视频中。
例如,我想要显示每个图像5秒钟,然后再继续下一个图像5秒钟。
如果可能,那么包含音乐和一些描述性文字也是完美的。
是否有一个示例代码,可能是ffmpeg库?
答案 0 :(得分:11)
我的第一个想法就是用这样的东西来抨击ffmpeg命令。
从图像创建视频
ffmpeg可用于将多个图像拼接成视频。 有很多选项,但以下示例应该足够了 开始吧它需要所有具有文件名的图像 XXXXX.morph.jpg,其中X是数字,并创建一个名为的视频 “output.mp4”。 qscale选项指定图片质量(1是 最高,32是最低的,而“-r”选项用于 指定每秒的帧数。
ffmpeg -r 25 -qscale 2 -i%05d.morph.jpg output.mp4
(这个模糊的网站已经消失了。链接 已被删除。)
其中25表示每秒25张图像。您可以将此设置为1(轻微(1秒)延迟或使用小数,IE:0.5,延迟2秒。
然后,您可以将视频和音频流与此类结合起来。
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -b:a 128k final.mp4
当然选择合适的编解码器。如果你想要一个mp4使用libx264用于视频和aac(内置于ffmpeg而不再是“实验性”)用于音频。
请记住,如果您选择使用这样的方法,默认情况下,当您尝试读取时,ffmpeg输出会转到stderr。如果您愿意,可以将其重定向到标准输出。
答案 1 :(得分:5)
我想到的第一件事是imagemagick。我已经将它与PHP一起用于大量的图像处理,我知道它支持读取大量的视频格式,并且根据该链接它也支持写入一些。
答案 2 :(得分:4)
是的,ffmpeg是适合您的解决方案。我刚刚做了类似的东西 - 一个带有动画缩略图的视频网站。我使用ffmpeg将图像放在一个胺化的gif中。然而,输出可以是你需要的任何东西......不幸的是,在我对这个主题的搜索中,我没有找到任何可以合并你所有的点的示例代码,所以我想你必须用ffmpeg手动尝试..在我的项目中,我在某些部分使用了php视频工具包http://sourceforge.net/projects/phpvideotoolkit/,以使其更容易......
答案 3 :(得分:2)
您可以将混合效果与ffmpeg:
一起使用ffmpeg -framerate 20 \
-loop 1 -t 0.5 -i 1.jpg \
-loop 1 -t 0.5 -i 2.jpg \
-loop 1 -t 0.5 -i 3.jpg \
-loop 1 -t 0.5 -i 4.jpg \
-c:v libx264 \
-filter_complex " \
[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
[0:v][b1v][1:v][b2v][2:v][b3v][3:v]concat=n=7:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
您应该检查以下链接以获得更多ffmpeg:D
的效果