无法保存matplotlib动画

ren*_*ger 6 python animation ffmpeg matplotlib save

我正在尝试使用ffmpeg保存一个简单的动画.我按照教程安装ffmpeg,现在我可以从命令提示符访问它.

现在我运行这段代码:

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

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))
    line.set_data(x, y)
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=200, interval=20, blit=True)

mywriter = animation.FFMpegWriter()
anim.save('mymovie.mp4',writer=mywriter)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
   File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 523, in runfile
    execfile(filename, namespace)
  File "C:\Users\Renger\.xy\startups\b.py", line 23, in <module>
    anim.save('mymovie.mp4',writer=mywriter)
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 609, in save
    with writer.saving(self._fig, filename, dpi):
  File "C:\Python27\lib\contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 166, in saving
    self.setup(*args)
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 156, in setup
    self._run()
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 183, in _run
    stdin=subprocess.PIPE)
  File "C:\Python27\lib\subprocess.py", line 711, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
    startupinfo)
WindowsError: [Error 2] Het systeem kan het opgegeven bestand niet vinden
Run Code Online (Sandbox Code Playgroud)

最后一个荷兰语的句子意味着:系统无法找到指定的文件.

这些错误意味着什么,我该如何解决?

Pad*_*ham 12

您需要指定您的路径ffmpeg:

在linux上我使用:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
plt.rcParams['animation.ffmpeg_path'] = '/usr/bin/ffmpeg'
Run Code Online (Sandbox Code Playgroud)

您显然必须指向您的Windows .exe而不是'/ usr/bin/ffmpeg'

如果您尚未ffmpeg安装,可以在此处获取

  • 使用/斜杠或原始字符串将工作r'C:...'\'在python中转义字符. (2认同)
  • 我必须在导入 `matplotlib.animation` 之前设置 `rcParam`。可能与 Matplotlib (`__version__ == '1.5.2'`) 的变化或我的 Windows 安装的特性有关。 (2认同)

小智 6

对于我在Windows上使用的一些动画"动画":

plt.rcParams['animation.ffmpeg_path'] ='E:\\Media\\ffmpeg\\bin\\ffmpeg.exe'
FFwriter = animation.FFMpegWriter()
anim.save('basic_animation.mp4', writer = FFwriter, fps=30)
Run Code Online (Sandbox Code Playgroud)

路径应该与\ \而不是文件夹之间的/或\