我的主要目标是用 Blender 渲染文件制作视频,这些文件是带有增量数字名称的 PNG 文件。我知道我可以使用-i %4d.png
,但在很多 Blender 动画的情况下,相同的帧会重复出现,因此与其再次渲染这些帧,不如重用相同的现有帧。所以,我想知道我是否应该告诉 ffmpeg 这件事。
例如,假设我有 100 张图片:0001.png
到0100.png
。如果我想用以下格式创建一部电影,该怎么办:0001.png
到0030.png
,然后是两次0031.png
到0060.png
,然后是0061.png
到0100.png
。有什么语法可以将其描述为输入吗?类似于(假设)
ffmpeg -i 0001.png-0030.png|2:0031.png-0060.png|0061.png-0100.png
如果没有这样的语法,我是否可以按顺序指定输入文件名的简单列表(全部 130 个)?例如:
0001.png
0002.png
0003.png
...
0030.png
0031.png
...
0060.png
0031.png
...
0100.png
答案1
全局模式
复制您想要重复的图像:
0001.png 0002.png 0003.png 0003b.png 0003c.png 0004.png
然后使用 glob 模式类型图像分离器:
ffmpeg -framerate 25 -pattern_type glob -i "*.png" -vf format=yuv420p -movflags +faststart output.mp4
我做了以下假设:
- 您正在使用 Linux 或 macOS。Windows 无法使用 glob 模式。
- 您想要 MP4 输出。
连接解复用器
替代方法是使用适用于所有操作系统的 concat 解复用器。
包含
input.txt
以下内容:file '0001.png' file '0002.png' file '0003.png' file '0003.png' file '0004.png'
然后使用连接解复用器:
ffmpeg -f concat -i input.txt -vf format=yuv420p -movflags +faststart output.mp4