从帧开始按顺序制作视频
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 通常提供字典顺序,即 0
到 9
被视为字母,因此,如果您对从 1
到 100
(含)的数字进行排序,它会像 1
、10
、100
、11
、12
...
我不知道 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'
我以顺序格式保存图像- 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 通常提供字典顺序,即 0
到 9
被视为字母,因此,如果您对从 1
到 100
(含)的数字进行排序,它会像 1
、10
、100
、11
、12
...
我不知道 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'