我正在尝试将给定目录D
中包含的图像从python脚本编译成mp4视频。我决定使用ffmpeg,因此通过
subprocess.run()
。
当我从D
以外的其他目录发出以下命令时:
ffmpeg -framerate 30 -pattern_type glob -i 'path/to/D/*.jpg' -vcodec libx264 -y movie.mp4
它工作正常。
当我使用shell=True
选项从python脚本发出命令时,会发生同样的事情:
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.
为什么通过subprocess.run
选项通过shell=False
调用ffmpeg失败?