我有一个文件夹,里面全是从 0 到任意数字的图像,我需要将这些图像转换为视频。它们都是 .PNG 文件。这是我使用的命令:
ffmpeg.exe -f image2 -framerate 30 -pattern_type sequence -start_number 1 -r 30 -i "img%%04d.jpg" -s 1280x720 test.avi
当我运行这个时出现这个错误:
[image2 @ 002be580] Could find no file with path 'img%04d.jpg' and index in the range 1-5
img%04d.jpg: No such file or directory
我要做什么才能让它工作?
答案1
序列模式
默认模式类型。img%d.jpg
将期望img1.jpg
、img2.jpg
等。使用img%04d.jpg
将期望img0001.jpg
、img0002.jpg
等。
ffmpeg -framerate 30 -i img%d.jpg -vf scale=1280:-1,format=yuv420p output.mp4
全局模式
glob 通配符模式类型非常灵活。如果 libavformat 在编译时启用了 globbing 支持,则可以使用此模式类型。
ffmpeg -framerate 30 -pattern_type glob -i "*.png" -vf scale=1280:-1,format=yuv420p output.mp4
笔记
查看FFmpeg image2 解复用器文档了解更多信息。
这
scale
筛选在此示例中,将宽度更改为 1280,并且高度将自动计算以保留纵横比。根据您的版本、输入类型(例如 PNG)、编码器(特别是 libx264)和编码选项,
ffmpeg
可能会尝试避免或最小化色度二次采样,但大多数非基于 FFmpeg 的播放器将无法正确解码输出。format
筛选将确保输出使用与这些播放器兼容的色度子采样方案。
答案2
只有这对我在同一目录中运行 cmd 才有效:
ffmpeg -framerate 20 -i Animation%3d.jpg -r 5 -y fileout.mp4
对于名为 Animation000 到 999.jpg 的文件。
这对我不起作用:
ffmpeg -framerate 20 -pattern_type glob -i "*.jpg" -vcodec libx264 out.mp4
它产生了错误:
选择了模式类型“glob”,但此 libavformat 构建 *.jpg 不支持通配符:功能未实现