这两个 FFMPEG 命令有什么区别?

这两个 FFMPEG 命令有什么区别?

我正在尝试拍摄 5 张名为 (1,2,3,4 和 5.jpg) 的静态图像,并将它们转换成 25 秒的视频,每张图像时长 5 秒。

ffmpeg -y -r 25 -loop 1 -t 5 -i 1.jpg -s 1080x1920 video1.mp4
ffmpeg -y -r 25 -loop 1 -t 5 -i 2.jpg -s 1080x1920 video2.mp4
ffmpeg -y -r 25 -loop 1 -t 5 -i 3.jpg -s 1080x1920 video3.mp4
ffmpeg -y -r 25 -loop 1 -t 5 -i 4.jpg -s 1080x1920 video4.mp4
ffmpeg -y -r 25 -loop 1 -t 5 -i 5.jpg -s 1080x1920 video5.mp4
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
(where files is the list of video1-5.mp4)

对比

ffmpeg -y -r 25 -loop 1 -t 5 -i %d.jpg -s 1080x1920 video.mp4 

第二条命令耗时太长了,我等它完成都等得不耐烦了,但第一条命令几秒钟就完成了。没有其他文件可以匹配,%d.jpg所以它不能引入额外的文件。

在我看来,这些命令的作用是一样的,所以可能是我理解不足。是不是因为第二个命令在合并视频时需要重新编码,这需要很长时间?

谢谢!

答案1

第二条命令似乎错误,您输入 -t 5,但那将是序列的总时间而不是每个图像的时间,如果您想设置每个图像的时间,您必须使用类似:-r 1/5 或设置列表文件中的持续时间:

file '1.jpg'
duration 5
file '2.jpg'
duration 5
file '3.jpg'
duration 5

由于您的图像似乎是按顺序排列的,因此您可以使用类似这样的方法:

ffmpeg -f image2 -r 1/5 -i "%d.jpg" -vf "scale=1920:-2:force_original_aspect_ratio=decrease" -c mjpeg -y -r 3 output.mp4

除非您有大量图像,否则该命令实际上不会花费很长时间......

相关内容