使用ffmpeg和matplotlib

时间:2015-07-02 18:34:35

标签: python animation ffmpeg save

我是这里的新手和python中的新手,即时通过matplotliib的animation.FuncAnimation做一些动画。动画效果很好但是我在保存动画方面遇到了问题。这是动画代码的一部分。

import numpy as np 
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()

line,  = ax.plot(range(N),sin(x[0,:]),'o-')
ax.axis([0,1,-1,1])

def animate(i):
    line.set_ydata(sin(x[i,:]))  # update the data
    return line,

def init():
    line.set_ydata(np.ma.array(x[0,:], mask=True))
    return line,

ani = animation.FuncAnimation(fig, animate, np.arange(1, 10000),
    interval=25, init_func=init, blit=True)
ani.save('2osc.mp4', writer="ffmpeg")
plt.show()

其中x [:,]是先前设置的。 ani.save将动画的每一帧保存为保存电影的.npg图像实例。我不知道这是不是它是如何工作的,我必须用.npg与另一个程序做电影或如果我做错了。 Obs:我以前安装了ffmpeg,它似乎工作正常。

1 个答案:

答案 0 :(得分:1)

对我来说,这段代码似乎运行良好:

import numpy as np 
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots(1,1)
x=np.linspace(np.pi,4*np.pi,100)
N=len(x)
ax.set_xlim(len(x))
ax.set_ylim(-1.5,1.5)
line,  = ax.plot([],[],'o-')

def init():
    line.set_ydata(np.ma.array(x[:], mask=True))
    return line,

def animate(i, *args, **kwargs):
    y=np.sin(x*i)
    line.set_data(np.arange(N),y)            # update the data
    return line,

ani = animation.FuncAnimation(fig, animate, init_func=init, 
     frames=100, interval=10, blit= False, repeat = False)
ani.save('2osc.mp4', writer="ffmpeg")
fig.show()

您可以使用以下命令安装ffmpeg库:

sudo apt-get install ffmpeg