当前位置: 首页 > 面试题库 >

从python生成电影而无需将单个帧保存到文件

范稳
2023-03-14
问题内容

我想根据我在matplotlib中的python脚本中生成的帧创建h264或divx电影。这部电影大约有10万张。

在网络上的示例中[例如
1],我只看到了将每个帧另存为png,然后在这些文件上运行mencoder或ffmpeg的方法。就我而言,保存每一帧是不切实际的。有没有办法获取从matplotlib生成的图并将其直接传输到ffmpeg,而不会生成任何中间文件?

用ffmpeg的C-
api编程对我来说太困难了[例如。2]。另外,我需要一种具有良好压缩效果的编码,例如x264,因为电影文件对于后续步骤来说太大了。因此,最好坚持使用mencoder
/ ffmpeg / x264。

管道[3]有什么可以做的吗?

[1]
http://matplotlib.sourceforge.net/examples/animation/movie_demo.html

[2] http://www.ffmpeg.org/ffmpeg-
doc.html#SEC41


问题答案:

现在,该功能(至少从1.2.0起,可能从1.1起)通过MovieWriter类及其animation模块中的子类引入了matplotlib中。您还需要ffmpeg提前安装。

import matplotlib.animation as animation
import numpy as np
from pylab import *


dpi = 100

def ani_frame():
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.set_aspect('equal')
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

    im = ax.imshow(rand(300,300),cmap='gray',interpolation='nearest')
    im.set_clim([0,1])
    fig.set_size_inches([5,5])


    tight_layout()


    def update_img(n):
        tmp = rand(300,300)
        im.set_data(tmp)
        return im

    #legend(loc=0)
    ani = animation.FuncAnimation(fig,update_img,300,interval=30)
    writer = animation.writers['ffmpeg'](fps=30)

    ani.save('demo.mp4',writer=writer,dpi=dpi)
    return ani

有关的文档 animation



 类似资料:
  • (希望有人能帮我解决这个问题)非常感谢!!

  • 我正在编写一个应用程序,它从url下载图像,然后使用AWS-SDK将其上传到S3桶中。 以前,我只是下载图像并将它们保存到磁盘上,就像这样。 然后像这样将图像上传到AWS S3 但我想跳过将映像保存到磁盘的部分。有什么方法可以响应从到一个变量,然后上传它吗?

  • 我尝试用以下代码保存从internet下载的文件 但在运行时,我得到的错误如下 03-04 20:42:51.080 8972-8972/com.example.me.demo2 E/BitmapFactory:无法解码流:java.io.FileNotFoundExcoop: /storage/emulated/0/.tanks/4a100abb-0e55-4062-8c37-f11f4189e

  • 我想从图像序列生成电影。我用了这个代码: 输入图像为png彩色图像,但视频为黑白。

  • 问题内容: 在python中(对于在GUI中创建的一个图形),我可以使用以下方法将图形保存在.jpg和.pdf下: 要么 我想使用一个文件将多个图形保存为.pdf或.jpg(就像在数学实验室中所做的一样)。有人可以帮忙吗? 问题答案: 使用为您解决问题。将您的对象传递给方法。 例如,如果您打开了一大堆对象并将其保存到多页PDF中,则可以执行以下操作:

  • 问题内容: 我有一个表格,要求用户上传2个文件,分别是 file-upload 和 imgupload 。我正在尝试通过ajax保存整个表单。 表单和Ajax代码 控制器代码 问题在于,在控制器代码中,只有1个文件被上传。如果我将文件上传作为第一个上传代码,则仅此文件将被上传,而imgupload将不会被上传。 如果我将imgupload保留为第一个上载代码,则仅此将被上载,而文件上载将不会被上载