我尝试了 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.jpg
、002.jpg
、003.jpg
等。
因此现在001.jpg
只有输入,而002.jpg
、003.jpg
、output.mp4
是输出文件。由于您使用了危险-y
选项(自动覆盖而不询问),因此002.jpg
和003.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