从帧开始按顺序制作视频

Make a video in sequential order from frames

我以顺序格式保存图像- 0.jpg、1.jpg、---、99.jpg、100.jpg。我正在使用 ffmpeg 进行转换,从这些帧制作视频:

cmd1 = 'ffmpeg -framerate 25 -pattern_type glob -i "/home/ubuntu/17/1_1/*.jpg" /home/ubuntu/17_a.avi'

但是 ffmpeg 并没有按顺序读取图像。如何制作按顺序拍摄帧的视频。

但是 ffmpeg 并没有按顺序读取图像。如何制作按顺序拍摄帧的视频。

globs 通常提供字典顺序,即 09 被视为字母,因此,如果您对从 1100(含)的数字进行排序,它会像 1101001112...

我不知道 ffmpeg 的 glob 是否有使用 natsort 的选项,但是如果你可以重命名你的文件,那么使用 python 应该很容易用零填充,从而进行字典顺序排序与自然排序相同。请使用您的 jpg 文件创建目录的副本,然后 运行 在 python 代码

之后
import glob,os
for jpg in glob.glob("*.jpg"):
    os.rename(jpg,jpg.zfill(7))

应该重命名

0.jpg, 1.jpg, ---,99.jpg, 100.jpg

000.jpg, 001.jpg, ---,099.jpg, 100.jpg

然后 运行 你的 ffmpeg 命令并检查它是否正常工作。 .zfill 确实用零填充到指定宽度,我使用 7 作为姓氏 100.jpg 有 7 个字符。如果是 1000.jpg,则至少需要 8 个,依此类推。

ffmpeg 的默认行为是以连续的数字序列读取图像。但是由于您指定了 glob 模式,它会使用该模式。删除 pattern_type 并在文件名字段中指定正确的模式。

ffmpeg -framerate 25 -i "/home/ubuntu/17/1_1/%d.jpg" /home/ubuntu/17_a.avi'