ffmpeg -r 1/5 -start_number 2 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

这一行工作得很好,但我想从另一个文件夹中的图像创建一个视频文件。 我文件夹中的图像名称是:

img001.jpg
img002.jpg
img003.jpg
...

我如何从不同的文件夹输入图像文件?例如:C: \ mypics

我尝试了这个命令,但ffmpeg只生成了第一个图像(img001.jpg)的视频。

ffmpeg -r 1/5 -start_number 0 -i C:\myimages\img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

当前回答

我发现这很有用,并尝试了一下

Ffmpeg -framerate 1 -pattern_type glob -i '*.jpg' -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4

来源:https://shotstack.io/learn/use-ffmpeg-to-convert-images-to-video/

其他回答

您的文件应该命名为depth_00001.png depth_00002.png等,以确保正确的顺序

如果它们被称为depth_1.png depth_2.png,那么您可以用这个命令批量重命名它们为所需的命名

for f in depth_[0-9]*; do mv "$f" "$(printf 'depth_%05d' "${f#depth_}" 2> /dev/null)"; done; for f in depth_[0-9]*; do mv "$f" "$f.png"; done;

步骤2)然后使用标准选项运行ffmpeg

ffmpeg -framerate 30 -i depth_%05d.png -pix_fmt yuv420p -c:v libx264 depth.mp4

步骤3)如果失败了(我在Windows上就是这样),那就试试这个

cat depth_*.png | ffmpeg -f image2pipe -framerate 30 -i - -pix_fmt yuv420p -c:v libx264 depth.mp4

注意:当我使用png时,步骤2失败了-但当我使用图像魔法将png转换为jpg时,步骤2工作了

下面是我用来进行转换的命令

for image in *.png; do magick convert "$image" "${image%.*}.jpg"; done;

此外,我发现这个命令在验证输出视频的长度是否符合预期方面很有用

ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 depth.mp4

我发现这很有用,并尝试了一下

Ffmpeg -framerate 1 -pattern_type glob -i '*.jpg' -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4

来源:https://shotstack.io/learn/use-ffmpeg-to-convert-images-to-video/

参见从图像创建视频幻灯片- FFmpeg

如果你遇到问题,比如第一张图像被跳过或只显示一帧,那么使用fps视频过滤器而不是-r输出帧率

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4

或者,格式视频过滤器可以添加到过滤器链中,以取代-pix_fmt yuv420p,如“fps=25,format=yuv420p”。这种方法的优点是可以控制先使用哪个筛选器

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4

我测试了下面的参数,它为我工作

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4

下面的参数也工作,但它总是跳过第一个图像

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4

从放置在不同文件夹中的图像制作视频

首先,将图像路径添加到imagepath .txt,如下所示。

# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate

file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'

示例用法如下;

"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"

-safe 0参数防止不安全的文件名错误

相关链接

FFmpeg从放置在不同文件夹中的图像制作视频

FFMPEG中间指南/图像序列

Concatenate - FFmpeg

Cat *.png | ffmpeg -f image2pipe -i - output.mp4

从维基

从视频中创建帧:

ffmpeg\ffmpeg -i %video% test\thumb%04d.jpg -hide_banner

可选:删除帧你不想在输出视频 (比使用-ss & -t修剪视频更准确)

然后从图像/帧创建视频,例如:

ffmpeg\ffmpeg -framerate 30 -start_number 56 -i test\thumb%04d.jpg -vf format=yuv420p test/output.mp4