【问题标题】:Manipulating image output from shell in python without storing external file在不存储外部文件的情况下,在 python 中操作 shell 的图像输出
【发布时间】:2018-02-27 09:23:38
【问题描述】:

我正在尝试存储一个由 ffmpeg 生成的图像。

使用此命令,我将frame.png 作为外部文件输出:

ffmpeg -flags2 +export_mvs -i video.avi -vf 'select=gte(n\,200),codecview=mv=pf+bf+bb' -vframes 1 frame.png

我希望能够将 frame.png 直接加载到 python 中,可能使用 openCV 但不将其保存在计算机中。

我想到了这样的事情:

cmd = "ffmpeg -flags2 +export_mvs -i video.avi -vf 'select=gte(n\,200),codecview=mv=pf+bf+bb' -vframes 1 frame.png"    

img = cv.imread(sp.Popen(cmd, shell=True, stdout = sp.PIPE, stderr = sp.PIPE).communicate()[0])

但我得到一个错误:

TypeError: 内置操作的参数类型错误

任何线索如何做到这一点?想法是,不应将 frame.png 生成为文件。

【问题讨论】:

  • 你看过python的ffmpeg绑定了吗?
  • 还没有。有什么可以推荐的吗?
  • 有两个项目我能想到ffmpeg-pythonPyAV
  • 谢谢。会看看他们。

标签: python shell opencv ffmpeg imread


【解决方案1】:

您可以将输出文件设置为/dev/stdout(您可能需要使用-f 指定输出格式) 然后你像这样将你的输出重定向到你的python脚本

ffmpeg options /dev/stdout | python your_script.py

然后您可以阅读this question 以了解如何从文件对象中读取图像。只需将StringIO 替换为sys.stdin

【讨论】:

    猜你喜欢
    • 2017-11-07
    • 2021-12-19
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多