全局模式

全局模式

我有所有这些 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 的构建链接。

另请参阅

相关内容