序列模式

序列模式

我有一个文件夹,里面全是从 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.jpgimg2.jpg等。使用img%04d.jpg将期望img0001.jpgimg0002.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 不支持通配符:功能未实现

相关内容