根据图像创建视频脚本,同时指定显示每张图像的时间长度?

根据图像创建视频脚本,同时指定显示每张图像的时间长度?

似乎有几种方法可以将图像转换为视频,但它们似乎都只允许您显示每个视频固定的时间。有人知道一种方法来编写从图像文件创建视频的脚本,让您指定显示每张图片的长度吗?

例如

magicSoftware.exe out=video.mp4 | in=file1.png time=100ms | in=file2.png time=400ms

答案1

我想不出有任何工具可以将此作为一个简单的一次性命令来完成;但是,您可以将图像分别转换为视频(长度各异),然后将这些视频连接在一起 - 我会为此使用 ffmpeg。

ffmpeg -f image2 -loop 1 -i input1.png -t 6 -crf 22 -preset veryfast 01.ts
ffmpeg -f image2 -loop 1 -i input2.png -t 9 -crf 22 -preset veryfast 02.ts
ffmpeg -f image2 -loop 1 -i input3.png -t 4 -crf 22 -preset veryfast 03.ts

-t设置输出持续时间(以秒为单位)。您也可以使用秒的分数,因此-t 2.2持续时间为 2.2 秒。如果您希望以视频帧为单位指定长度,则可以使用-vframesframes:v默认情况下,此命令将为您提供每秒 25 帧。然后,将 MPEG TS 文件连接在一起形成单个 MP4:

ffmpeg -i "concat:01.ts|02.ts|03.ts" -c copy output.mp4

当然,可以编写脚本(我知道如何在 bash 中执行此操作,但我对 Windows 上的脚本编写不了解)。

相关内容