Я попытался сохранить анимацию 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 является », режим„термометру“в 0x7f3de99164b0>. Эта переменная также имеет атрибут со значением ''. Значение этого строкового значения, а не имя, которое я пытался назначить файлу, мне не понятно.
Я знаю, что моя анимация в порядке, потому что я видел, как она работает. Он имеет только 500 кадров, поэтому я не думаю, что он слишком велик. Если у кого-нибудь есть идеи о том, как я должен преследовать эту ошибку Runtime, я бы очень признателен.
Возможно ли, что вы забыли опубликовать фактическую ошибку? Что такое сообщение об ошибке? – hitzg
@hitzg - Я полагаю, что научит меня публиковать сразу перед сном. Я просто добавил сообщение об ошибке Runtime. – user1245262
У меня были одни и те же проблемы, и я тоже не мог понять. Я думаю, что это связано с 'libx264', и я считаю, что это связано с размером пикселя фигуры (я думаю, что x264 не может обрабатывать произвольные размеры: высота и ширина должны быть кратными 2 и т. Д.); Я попытался с добавлением фильтра обрезки в avconv/ffmpeg, но это не сработало ... В итоге я просто изменил фигуру на различные значения и получил ее для работы. – hitzg