python - 保存 Matplotlib 动画时出错

标签 python matplotlib

我试图保存 Matplotlib 动画,但出现了一个奇怪的错误。 (我相信)相关代码的片段是:

  def showMovie(self):
    frameFnc = self.getNoisyImage
    initFnc =  self.initImage

    movie = animation.FuncAnimation(self.movieFig, frameFnc,
                                frames = len(self.noiseArrays),
                                init_func = initFnc,
                                interval=1, blit=True,
                                repeat = True)


    movie.save("test.mp4", fps=10, extra_args=['-vcodec', 'libx264'])
    print "Saved movie"
    plt.ion()
    plt.show()



if __name__ == '__main__':
    z = noiseTester()
    z.makeStaticNoiseImages()
    z.readPredList()
    z.showMovie()

我得到的错误如下:

Traceback (most recent call last):
  File "noiseTest6.py", line 134, in <module>
    z.showMovie()
  File "noiseTest6.py", line 123, in showMovie
    movie.save("test.mp4", fps=10, extra_args=['-vcodec', 'libx264'])
  File "/usr/lib/pymodules/python2.7/matplotlib/animation.py", line 718, in save
    writer.grab_frame(**savefig_kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/animation.py", line 204, in grab_frame
    dpi=self.dpi, **savefig_kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1421, in savefig
    self.canvas.print_figure(*args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 2220, in print_figure
**kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 497, in print_raw
    renderer._renderer.write_rgba(filename_or_obj)
  RuntimeError: Error writing to file

当我检查时,filename_or_obj 是一个 ',模式为 'wb' at 0x7f3de99164b0>。此变量还有一个name 属性,值为''。这个字符串值的含义,而不是我试图分配给文件的名称,我不清楚。

我知道我的动画没问题,因为我已经看到它的效果了。它只有 500 帧,所以我认为它不会太大。如果有人对我应该如何追查此运行时错误有任何想法,我将不胜感激。

最佳答案

好吧,使用来自@hitzg 的关于 libx264 的信息,我只是去掉了指定其用途的参数——即

movie.save("test.mp4", fps=10, extra_args=['-vcodec', 'libx264'])

被替换为

movie.save("test.mp4", fps=10)

现在,一切似乎都在起作用。

关于python - 保存 Matplotlib 动画时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30701945/

相关文章:

python - Py2Exe 的单个可执行文件

python - 如何减少 matplotlib 中的颜色条宽度?

python - 3D 中的 matplotlib 等高线标签

python - 如何在 Python 3 中向后搜索几行?

python - 同时添加所有图例标签以进行绘图 (Python)

matplotlib - 如何删除 FancyArrowPatch 的箭头尖端和目标点之间的空白?

python - 如何使 QLabel 的边框看起来像 QTreeWidget 等其他小部件的边框?

python - 如何使用 Python 通过 HTTP 将远程图像复制到 gtk.gdk.pixbuf?

python - 为什么 "assert 211 == 211"失败了?

具有宽轮廓的 Python 图像库椭圆