jam*_*pez 8 subprocess ffmpeg python-3.x
我创建了一个简单的方法,可以像在终端中一样执行命令
from subprocess import PIPE, run
class Command_Line():
@staticmethod
def execute(command):
result = run(command, stdout=PIPE, stderr=PIPE, universal_newlines=True, shell=True)
print(result)
return result.stdout
Run Code Online (Sandbox Code Playgroud)
我对上面代码的问题是它不会等到任务/进程完成。假设我使用 ffmpeg 通过以下代码更改视频的帧速率
import Command_Line as cmd
cmd.execute('ffmpeg -i "000000004.avi" -c copy -y -r 30 "000000004.avi"')
Run Code Online (Sandbox Code Playgroud)
问题是输出视频,因为它没有完成这个过程。我已经搜索了如何等待有没有办法检查子进程是否仍在运行? 但无法将其与我的代码合并。你能分享一下你的经验吗?
谢谢
小智 8
subprocess.run()是同步的,这意味着系统将等到它完成后再继续执行下一个命令。subprocess.Popen()做同样的事情,但它是异步的(系统不会等待它完成)。您可以尝试使用importlib.reload命令重新加载文件。然后它可能会找到您生成的文件。
| 归档时间: |
|
| 查看次数: |
11317 次 |
| 最近记录: |