我正在尝试将一个使用ffmpy的Python脚本放在一起,以从一系列.jpg图像中输出延时视频。图像按日期存储在目录中,以年为父,然后是月,然后是天,并按顺序编号:
.../2019
/01
/01
/0000.jpg
0001.jpg
...
000n.jpg
...
/31
/0000.jpg
0001.jpg
...
000n.jpg
...等等。
该脚本接受两个参数:日期和格式。格式可以是'mp4'或'webm',日期可以是年份(2019),年份和月份(2019-01)或年份,月份和日期(2019-01-01)。 / p>
将这两个参数传递给函数以构建视频(日期中的“-”字符替换为“ /”以构建输入路径):
def create_video(format):
input_path = os.path.join(location, 'images', date_path, '**/*.jpg')
input_options = '-loglevel info -pattern_type glob -framerate 18'
output_path = os.path.join(location, 'videos', '{0}.{1}'.format(args.date, args.format))
if args.format == 'mp4':
output_options = '-c:v libx264 -vf "scale=1280:-1,hqdn3d=luma_spatial=1" -pix_fmt yuv420p'
else:
output_options = '-c:v libvpx -vf "scale=1280:-1,hqdn3d=luma_spatial=1" -b:v 1M -c:a libvorbis'
ff = ffmpy.FFmpeg(
'inputs={{{0}: {1}}}'.format(input_path, input_options),
'outputs={{{0}: {1}}}'.format(output_path, output_options)
)
ff.run()
问题是试图让ffmpy遍历目录树;当我尝试运行脚本时,出现了“ FileNotFoundError:[Errno 2]没有这样的文件或目录”错误。
我也尝试过这种方法,但是它给出了相同的“未找到”错误:
input_path = os.path.join(location, 'images', date_path)
input_options = '-loglevel info -pattern_type glob -i **/*.jpg -framerate 18'
有没有一种方法可以使ffmpy遍历目录以查找图像,而无需创建if...elif...else
语句来为每个日期模式构建不同的输入路径?如果您要处理单个目录中的图像,那么我在Google上找到的所有结果都可以,但是却找不到能够遍历不同深度的多个目录的任何内容。