gpt4 book ai didi

带有ffmpeg的python子进程没有输出

转载 作者:行者123 更新时间:2023-12-04 23:14:45 24 4
gpt4 key购买 nike

我想使用 ffmpeg 的场景变化检测来提取场景变化时间戳。我必须在数百个视频上运行它,所以我想使用一个 python 子进程来循环一个文件夹的所有内容。
我的问题是,我用于在单个视频上获取这些值的命令涉及将输出传送到一个文件,这似乎不是子进程调用内部的一个选项。

这是我的代码:

 p=subprocess.check_output(["ffmpeg", "-i", sourcedir+"/"+name+".mpg","-filter:v", "select='gt(scene,0.4)',showinfo\"","-f","null","-","2>","output"])

这个告诉 ffmpeg 需要一个输出
 output = "./result/"+name
p=subprocess.check_output(["ffmpeg", "-i", sourcedir+"/"+name+".mpg","-filter:v", "select='gt(scene,0.4)',metadata=print:file=output","-an","-f","null","-"])

这个没有给我任何错误,但没有创建文件

这是我直接与 ffmpeg 一起使用的原始命令:
ffmpeg -i input.flv  -filter:v "select='gt(scene,0.4)',showinfo"  -f null  - 2> ffout

我只需要将此命令的输出写入文件,有人知道我如何使它工作吗?
有没有比 subprocess 更好的方法?或者只是另一种方式?在 C 中会更容易吗?

最佳答案

您可以重定向 stderr直接从 Python 输出,无需 shell=True这可能导致外壳注入(inject)。

它很简单:

with open(output_path, 'w') as f:
subprocess.check_call(cmd, stderr=f)

关于带有ffmpeg的python子进程没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49401435/

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