8

我正在尝试从图像序列中创建视频。但我必须以不同的秒数显示每个图像。如何使用 FFMPEG 做到这一点。

提前致谢。

4

2 回答 2

7

FFmpeg wiki中有一些提示。这一个示例(wiki 中的倒数第二个)尤其可能适合您的需求:

ffmpeg -loop 1 -f image2 -i img.png -c:v libx264 -t 30 out.mp4

其中-t(示例中为 30)后面的数字是视频的持续时间(以秒为单位)。

只需像这样多次执行该命令:

ffmpeg -loop 1 -f image2 -i intro.png -c:v libx264 -t 5 out1.mp4
ffmpeg -loop 1 -f image2 -i someimage.png -c:v libx264 -t 15 out2.mp4
ffmpeg -loop 1 -f image2 -i someotherimage.png -c:v libx264 -t 25 out3.mp4
ffmpeg -loop 1 -f image2 -i outro.png -c:v libx264 -t 10 out4.mp4

然后合并生成的视频(如果需要):

  1. 创建一个文本文件(例如videos.txt:),其中列出了视频文件名。

    file 'out1.mp4'
    file 'out2.mp4'
    file 'out3.mp4'
    file 'out4.mp4'

  2. 运行此命令(如果需要更改文件名)

    ffmpeg -f concat -i videos.txt -c copy final_video.mp4

有关视频合并(连接)的更多信息可以在wiki中找到。

于 2013-06-18T16:18:12.813 回答
2

其中ffmpeg包括一个关于此的部分:https ://trac.ffmpeg.org/wiki/Slideshow

这是一个例子:

示例内容input.txt

file '/path/to/dog.png'
duration 5
file '/path/to/cat.png'
duration 1
file '/path/to/rat.png'
duration 3
file '/path/to/tapeworm.png'
duration 2
file '/path/to/tapeworm.png'

然后运行:

ffmpeg -f concat -i input.txt -vsync vfr -pix_fmt yuv420p -framerate 30 output.mp4

于 2020-02-14T18:07:22.157 回答