我有所有这些 jpeg 格式的图像,我想将它们流式传输到 AVI 中。我尝试使用 ffmpeg 和以下命令这里但我收到错误“没有这样的文件或目录”。
我的确切命令是(来自包含所有这些文件的文件夹):
ffmpeg -f image2 -i frame_%d.jpg view.avi
我该怎么做?另外,我该如何对特定范围的图像执行此操作?假设我只想要 500 到 1000 帧,所以我想要 frame_0500.jpg 到 frame_1000.jpg?
答案1
正确的命令应该是
ffmpeg -f image2 -i frame_%04d.jpg view.avi
表示%04d
数字长度为 4 个字符,以零填充(0000-9999)。
如果您想做一个范围,我只需将您想要的文件移动到它们自己的目录中。
使用 GUI 很容易,但使用命令行也可以
mv frame_0[5-9]* newfolder
mv frame_1000* newfolder
答案2
全局模式
ffmpeg
对于使用非古老构建的glob 模式的人来说,这是最灵活的方法:
ffmpeg -framerate 10 -pattern_type glob -i "*.png" -pix_fmt yuv420p output.mkv
顺序
这将转换一系列编号输入,,,image-0001.png
等等image-0002.png
:
ffmpeg -framerate 30000/1001 -i image-%04d.png -pix_fmt yuv420p output.mkv
- 如果您想从特定图像开始,请添加
-start_number
(例如)作为输入选项。-start_number 100
cat
您还可以使用cat
管道将您的图像传输到ffmpeg
:
cat *.jpg | ffmpeg -framerate ntsc -f image2pipe -c:v mjpeg -i - -pix_fmt yuv420p output.mp4
笔记
输出将使用与输入相同的帧速率。如果您未声明,
-framerate
则将使用默认值 25。您还可以添加-r
输出选项,例如-r 25
,如果您想ffmpeg
以特定速率读取输入,然后删除或复制帧以实现不同的输出帧速率。根据您的输入、
ffmpeg
版本和所选编码器,ffmpeg
将尝试避免或最小化色度二次采样。虽然从技术角度来看这可能是好事,但它可能会产生非基于 FFmpeg 的播放器无法播放的输出。添加-pix_fmt yuv420p
将确保您的输出在编码为 H.264 视频时可播放。由于开发非常活跃,建议使用最新版本
ffmpeg
,以避免已经修复的错误。请参阅FFmpeg 下载页面包含适用于 Windows、OS X 和 Linux 的构建链接。
另请参阅
- image2 解复用器文档以获取更多信息、选项和示例。
- FFmpeg 和 x264 编码指南以获得有关获得高质量输出的帮助。
- FFmpeg 幻灯片显示图像 - 仅显示一帧了解潜在的常见问题及其解决方法。