【发布时间】:2018-03-21 08:32:08
【问题描述】:
我想使用 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 中会更容易吗?
【问题讨论】:
标签: python ffmpeg subprocess