FFMPEG - 根据目录中按字母顺序排列的图像创建幻灯片视频

FFMPEG - 根据目录中按字母顺序排列的图像创建幻灯片视频

我懂了这一页关于如何用数字方式处理图像。但我有一个图像目录,例如如下所示:

ADAM SANDLER.jpg
JOHN DOE.jpg
SAM SMITH.jpg

我想根据该目录中按字母顺序排列的所有图像创建视频幻灯片。

有什么办法可以做到这一点?

编辑

最后,我尝试制作一个垂直视频发布到 Instagram。这些照片是肖像,所以它需要是一个“垂直”视频。FFMPEG 似乎在这方面遇到了问题,至少在 Quicktime 中播放视频似乎不起作用。它需要是一个 15 秒的视频,并且有 25 张图片。

这是我正在运行的命令,当我在 Quicktime 中打开它时,它只是显示黑色。当我在 VLC 中打开它时,它正在播放,但只显示前几帧。

ffmpeg -r 1 -i img%03d.jpg -c:v libx264 -pix_fmt yuv420p out.mp4

答案1

您可以使用 concat 解复用器。

首先,准备一个文本文件,其中包含按所需顺序排列的所有图像列表。在 Windows 中,您可以从命令提示符在文件夹中运行此命令:

dir *.jpg /b /on > list.txt

现在在每行前面加上file '并在后面加上',这样每行看起来就像

file 'ADAM SANDLER.jpg'

由于 fps 过滤器中存在错误,您可能需要复制最后一行。

现在,如果所有图像都是相同大小,请运行

ffmpeg -f concat -r 1/2 -i list.txt -crf 20 -vf fps=8,format=yuv420p video.mp4

如果不是,并假设1920x1080输出视频大小,运行

ffmpeg -f concat -r 1/2 -i list.txt -vf "scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2,fps=8,format=yuv420p" -crf 20 video.mp4

-r 1/2输入帧率,决定每幅图像的持续时间,在本例中为 2 秒。我将输出帧率设置为,8因为有些播放器可能无法播放输出。CRF 控制质量。较低的值会产生更好的结果,但文件会更大。


对于编辑的Q

使用

ffmpeg -framerate 25/15 -i img%03d.jpg -c:v libx264 -vf "scale=iw*min(1080/iw\,1080/ih):ih*min(1080/iw\,1080/ih), pad=1080:1080:(1080-iw*min(1080/iw\,1080/ih))/2:(1080-ih*min(1080/iw\,1080/ih))/2,fps=30000/1001,format=yuv420p" out.mp4

答案2

您可以使用 ImageMagick 实用程序中的“转换”命令创建动画 gif:

convert -delay 500 -loop 0 *.jpg myimage.gif

这将连接 jpg 文件,以永久循环的方式每隔半秒显示一个文件。

相关内容