使用 ffmpeg 创建从静止图像 (jpg) 到 mp4 的游戏中时光倒流

use*_*875 1 ffmpeg timelapse

我尝试了在 StackExchange 上找到的许多不同选项,用于将静止图像转换为 mp4。我还没有完全成功。任何帮助,将不胜感激。

ffmpeg -i ../*.jpg -c:v libx264 -crf 0 -y output.mp4
Run Code Online (Sandbox Code Playgroud)

生成的 mp4 包含视频长度为 00:00 的第一张图像。看起来它正在工作。流映射显示流映射中的所有 17 个图像 (0-16)。我在输出文本中看到它确定图像分辨率为 1280x800,这是正确的。

我不确定它是否相关,但初始图像大约为 93KB。mp4 是 504KB。

这 17 张图像是测试集的一部分。最终,我希望用这个方法来生成一个 6 天的延时。

llo*_*gan 5

问题

ffmpeg*命令中的通配符扩展为:

ffmpeg -i 001.jpg 002.jpg 003.jpg -c:v libx264 -crf 0 -y output.mp4
Run Code Online (Sandbox Code Playgroud)

这是假设你的输入文件被命名为001.jpg002.jpg003.jpg,等。

所以 now001.jpg是唯一的输入002.jpg003.jpg,output.mp4是输出文件。由于您使用的是危险-y选项(无需询问而自动覆盖)002.jpg003.jpg因此已被覆盖。

解决方案

使用-pattern_type glob选项:

ffmpeg -framerate 10 -pattern_type glob -i "*.jpg" -c:v libx264 -crf 0 output.mp4
Run Code Online (Sandbox Code Playgroud)

这在 Windows 中可能不起作用。

或者告诉它输入是一个序列。对于001.jpg等:

ffmpeg -i %03d.jpg -c:v libx264 -crf 0 output.mp4
Run Code Online (Sandbox Code Playgroud)

对于image-0001.jpg等:

ffmpeg -framerate 24 -i image-%04d.jpg -c:v libx264 -crf 0 output.mp4
Run Code Online (Sandbox Code Playgroud)

或者添加一个cat

cat *.jpg | ffmpeg -framerate ntsc -i - -c:v libx264 -crf 0 output.mp4
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅图像解复用器文档