【问题标题】:ImageMagick to ffmpeg using python and subprocessImageMagick 到 ffmpeg 使用 python 和子进程
【发布时间】:2017-03-02 17:24:36
【问题描述】:

我正在尝试使用

在一些图像之间进行混合
blend = Popen(['convert', 'test_images/*.jpg', '-delay', '10', '-morph', '10', '-'], stdout=PIPE)

并将输出通过管道传输到 ffmpeg 以从图像序列中写入视频

video = Popen(['ffmpeg', '-i', '-', '-f', 'image2pipe', '-r', '30', '-c:v', 'libx264', '-pix_fmt', 'yuv420p', 'test.mp4'], stdin=PIPE)

for _ in range(15):
    video.stdin.write(blend.stdout.read())
video.stdin.close()

我试图在内存中完成所有操作,而不是写入磁盘。我目前得到的只是一个 50kb 的 mpeg4 文件,它没有打开。

【问题讨论】:

    标签: python ffmpeg imagemagick subprocess pipe


    【解决方案1】:

    我制作了 4 张从红色、橙色、黄色到蓝色的图像,如下所示:

    convert -size 256x256 xc:red    1.png
    convert -size 256x256 xc:orange 2.png
    convert -size 256x256 xc:yellow 3.png
    convert -size 256x256 xc:blue   4.png
    

    并且,为了快速检查,将它们一起变形为一个 34 帧的动画 GIF:

    convert [1234].png -morph 10 result.gif
    

    然后我检查了ffmpeg 在其stdin 上可以读取的内容,它似乎能够读取连接在一起的多个PPM(便携式像素图)文件,所以我告诉 ImageMagick PPM 文件如下并将其输入ffmpeg:

    convert [1234].png -morph 10 ppm:- | ffmpeg -f image2pipe -framerate 30 -i - output.mpg
    

    注意选项的顺序很重要:-f image2pipe 需要用作输入选项(-i 之前)。

    我制作了一个无法发布的有效 MPG 视频,但它可以工作。

    我想现在您可以将文件放入ffmpeg,您可以四处游荡并获得您所寻求的输出类型——希望如此!一些实验和来自@LordNeckbeard 的一些友好建议似乎表明这应该可行:

    convert [1234].png -morph 10 ppm:-  | ffmpeg -f image2pipe -framerate 30 -i - -c:v libx264 -pix_fmt yuv420p test.mp4 
    

    【讨论】:

    • @LordNeckbeard 感谢您填补我所知道的空白!团队合作规则:-)
    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2015-01-13
    • 2010-11-30
    • 2019-06-21
    相关资源
    最近更新 更多