Я пытаюсь скомпилировать изображения, содержащиеся в данном каталоге D
, в видео mp4 из скрипта Python.Я решил использовать ffmpeg и, следовательно, вызывал его через subprocess.run()
.
Когда я запускаю следующую команду из другого каталога, кроме D
:
ffmpeg -framerate 30 -pattern_type glob -i 'path/to/D/*.jpg' -vcodec libx264 -y movie.mp4
, она работает нормально.
То же самое происходит, когда я выполняю команду из скрипта python с параметром shell=True
:
subprocess.run(" ".join(["ffmpeg", "-framerate", "30", "-pattern_type", "glob", "-i", "'path/to/D/*.jpg'", "-vcodec", "libx264", "-y", "movie.mp4"]), shell=True)
Однако я знаю, что полагаться на shell=True
не рекомендуется.Я попытался использовать subprocess.run
без этой опции:
subprocess.run(["ffmpeg", "-framerate", "30", "-pattern_type", "glob", "-i", "'path/to/D/*.jpg'", "-vcodec", "libx264", "-y", "movie.mp4"])
, но это привело к следующей ошибке:
'path/to/D/*.jpg': No such file or directory.
Почему звонок наОшибка ffmpeg при вызове через subprocess.run
с опцией shell=False
?