Я пытаюсь собрать скрипт Python, который использует ffmpy для вывода видео с интервальной съемкой из серии изображений .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).
Эти два аргумента передаются в функцию для построения видео (символы «-» в дате заменяются на «/» для построения пути ввода):
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, хороши, если вы имеете дело с изображениями в одном каталоге, но не смогли найти ничего, что могло бы пройти через несколько каталогов на разной глубине.