我正在使用 ffmpeg 制作延时视频,效果很好。作为输入,我有名为 001.jpg、002.jpg 等的图像,然后使用命令
ffmpeg -i %3d.jpg -sameq -s 1440x1080 video.mp4
我制作了视频。但是当我想使用多个集合作为输入来制作视频时,问题就出现了。例如,我在一个目录中有两个文件夹 set1 和 set2,每个文件夹都包含前面解释过的格式的照片。
我已经尝试过了
ffmpeg -i ./set1/%3d.jpg -i ./set2/%3d.jpg -sameq -s 1440x1080 video.mp4
但最终只使用第一组数据制作了视频。有没有简单的方法可以做到这一点?
谢谢!
答案1
您需要使用 concat 模块,并且在此示例中,我将帧速率设置为 10,因此您必须使用 filter_complex 。
ffmpeg -framerate 10 -i set1_%04d.jpg \
-framerate 10 -i set2_%04d.jpg \
-framerate 10 -i set3_%04d.jpg \
-filter_complex '[0:0] [1:0] [2:0] concat=n=3:v=1:a=0 [v],[v] fps=10 [vv]' \
-map '[vv]' -s 1440x1080 video.mp4
文档filter_complex句法 : http://ffmpeg.org/ffmpeg-filters.html#Filtergraph-syntax-1
答案2
您可以使用 bash 来扩展文件列表,例如:
对于名为包含的文件inputs.txt
。
-i /path/to/input1.mp4
-i /path/to/input2.mp4
然后仅作为使用复杂过滤图的示例。
ffmpeg `cat inputs.txt | xargs echo` \
-filter_complex \
"
[0:v]trim=0:10[a];
[1:v]trim=10:20[b]
" \
-map "[a]" a.mp4 \
-map "[b]" b.mp4