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

Cor*_*rey 3 ffmpeg

我看到这个页面介绍了如何以数字方式处理图像。但我有一个图像目录,例如:

ADAM SANDLER.jpg
JOHN DOE.jpg
SAM SMITH.jpg
Run Code Online (Sandbox Code Playgroud)

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

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

编辑

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

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

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

Gya*_*yan 6

您可以使用 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
Run Code Online (Sandbox Code Playgroud)

如果没有,并假设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
Run Code Online (Sandbox Code Playgroud)

-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
Run Code Online (Sandbox Code Playgroud)