将 python 中 vid.stab 的 ffmpeg 输出文件捕获到变量中

Capturing output file of ffmpeg with vid.stab in python into a variable

我正在尝试使用 ffmpeg 和 vid.stab 库编写 python 脚本来稳定视频。 我的问题是输出文件似乎没有通过标准输出,所以使用 subprocess.Popen() returns 一个空变量。

cmd1=["ffmpeg", "-i","./input.MOV", "-vf", "vidstabdetect=stepsize=6:shakiness=10:accuracy=15", "-f","null","pipe:1"]
p = subprocess.Popen(cmd1, stdout=subprocess.PIPE)
vectors, err = p.communicate()

问题在于 vibstabdetect 采用名为 result 的过滤器,并将文件输出到那里指定的任何位置,而 stdout 仍然为空。 (如果没有指定结果,则默认为 transforms.trf。)

有没有办法获取结果文件的内容? 当 运行 上面代码的脚本执行时没有错误,但是文件是用默认名称创建的,变量保持为空。

您需要为过滤器日志记录数据指定标准输出,而不是 ffmpeg 的转码输出,这是您当前的 -f null pipe:1 所做的。

但是,vidstabdetect 过滤器使用 POSIX fopen 打开转换数据的目标,这与使用内部 avio_open 的大多数其他过滤器不同。对于 fopen,pipe:1 是不可接受的。对于 Windows、CON 和对于 linux,/dev/stdout 正如您确认的那样是必需的。