gpt4 book ai didi

Python运行带有子进程的cm​​d命令(ffmpeg)并在执行某些代码之前等待cmd关闭

转载 作者:行者123 更新时间:2023-12-04 22:58:41 27 4
gpt4 key购买 nike

所以我使用 ffmpeg 来调整视频的大小,这需要一点时间,所以在代码继续之前我必须等待 cmd 关闭。我还没有找到解决方案,我希望真正了解他们的东西的人可以教我一种方法。我可能只是在做一些迟钝的事情......
无论如何,我已经尝试了多种方法,例如使用 subprocess.Propen(),然后使用 pope() 来查看它何时不返回“None”,还尝试了诸如 subprocess.run() 和 subprocess.CompletedProcess() 之类的东西,但我就是无法得到它工作有人可以解释一下是否有办法做到这一点,而我只是做错了吗? :)

这是我尝试过的一个例子

p = subprocess.Popen("start ffmpeg -y -i "+DIR+"/post.mp4 -vf scale="+str(nW)+":"+str(nH)+" "+DIR+"/post_r.mp4", shell=True)
while p.poll() is None:
time.sleep(1)
print("alive")
else:
print("cmd exited")

同样,每当我输入 shell=False 时,它​​都会立即中断,并且出现此错误:
FileNotFoundError: [WinError 2] 系统找不到指定的文件

最佳答案

不要使用 subprocess.Popen()如果您只需要在等待时运行该过程。旧版 subprocess.call()或现代 subprocess.run()专为此用例而设计。

shell=False您需要自己将命令行拆分为列表。您可以调用shlex.split()为了方便,但自己做并不难。

subprocess.run(['ffmpeg', '-y', '-i', DIR+"/post.mp4",
'-vf', 'scale=' + str(nW) + ":" + str(nH), DIR+"/post_r.mp4"])
start看起来你在 Windows 上,当然还有 start也是外壳的一个特征;如果你没有外壳, start不可用(但也没有用)。

关于Python运行带有子进程的cm​​d命令(ffmpeg)并在执行某些代码之前等待cmd关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59336839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com