python - 在python中使用vid.stab将ffmpeg的输出文件捕获到一个变量中
问题描述
我正在尝试编写一个 python 脚本来使用 ffmpeg 和 vid.stab 库来稳定视频。我的问题是输出文件似乎没有通过标准输出,所以使用 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。)
有没有办法获取结果文件的内容?使用上面的代码运行脚本时,它会正常执行,但文件是使用默认名称创建的,并且变量保持为空。
解决方案
您需要为过滤器记录数据指定标准输出,而不是 ffmpeg 的转码输出,这是您当前-f null pipe:1
所做的。
但是,与大多数其他使用内部 avio_open 的过滤器不同,vidstabdetect 过滤器使用 POSIX fopen 打开转换数据的目标。对于fopen,pipe:1
是不能接受的。正如您所确认的,对于 Windows,CON
和对于 linux /dev/stdout
, 是必需的。
推荐阅读
- reactjs - 在组件中创建全选复选框功能
- python - 为什么我在 Python 中的快速排序功能不起作用?
- javascript - 为什么只有一张卡片翻转?
- javascript - API 与 websocket 一起休息
- python - Pyspark:从表中读取数据并写入文件
- javascript - 通用处理程序后如何生成警报或js函数
- haskell - 比较两个字符串列表并删除部分匹配的项目
- asp.net-core - 如何在 Asp.net Core 应用程序中创建文本文件
- mysql - 外键列是否可以在同一引用表的一行中具有多值?
- java - Java通过接口反射提取泛型类型参数