Generating movie from python without saving individual frames to files

后端 未结 6 1285
天涯浪人
天涯浪人 2020-11-29 16:16

I would like to create an h264 or divx movie from frames that I generate in a python script in matplotlib. There are about 100k frames in this movie.

In examples on

6条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-29 17:15

    This functionality is now (at least as of 1.2.0, maybe 1.1) baked into matplotlib via the MovieWriter class and it's sub-classes in the animation module. You also need to install ffmpeg in advance.

    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
    

    Documentation for animation

提交回复
热议问题