问题

问题

我尝试了 StackExchange 上找到的多种将静态图像转换为 mp4 的不同选项。但尚未完全成功。如能得到任何帮助,我将不胜感激。

ffmpeg -i ../*.jpg -c:v libx264 -crf 0 -y output.mp4

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

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

这 17 张图片是测试集的一部分。最终,我希望使用此方法生成 6 天的延时摄影。

答案1

问题

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

ffmpeg -i 001.jpg 002.jpg 003.jpg -c:v libx264 -crf 0 -y output.mp4

假设您的输入文件名为001.jpg002.jpg003.jpg等。

因此现在001.jpg只有输入,而002.jpg003.jpgoutput.mp4是输出文件。由于您使用了危险-y选项(自动覆盖而不询问),因此002.jpg003.jpg已被覆盖。

解决方案

使用-pattern_type glob选项:

ffmpeg -framerate 10 -pattern_type glob -i "*.jpg" -c:v libx264 -crf 0 output.mp4

这在 Windows 中可能不起作用。

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

ffmpeg -i %03d.jpg -c:v libx264 -crf 0 output.mp4

对于image-0001.jpg等:

ffmpeg -framerate 24 -i image-%04d.jpg -c:v libx264 -crf 0 output.mp4

或者添加cat

cat *.jpg | ffmpeg -framerate ntsc -i - -c:v libx264 -crf 0 output.mp4

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

答案2

ffmpeg -r 1 -loop 1 -i image.jpg -i audio.mp3 -acodec copy -r 1 -shortest output.mp4

您还可以拉伸生成的视频/图像

ffmpeg -r 1 -loop 1 -i image.jpg -i audio.mp3 -acodec copy -r 1 -shortest -vf scale=1280:720 output.mp4

相关内容