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

问题描述 投票:0回答:1

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

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。)

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

python video ffmpeg image-stabilization
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.