2017-12-23 5 views
0

ffmpeg를 설치하고 경로에 추가하고 명령 프롬프트에서 작동하는지 확인했지만 애니메이션을 저장할 수 없습니다. 나는 그것을 저장하려고 시도하지 않을 때 움직일 sin wave를 만들려고 시도했으나 시연 할 때 오류가 발생합니다.ffmpeg를 사용하여 Matplotlib 애니메이션을 저장할 수 없습니다.

from __future__ import division 

import numpy as numpy 
from matplotlib import pyplot as pyplot 
from matplotlib import animation 

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

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

def animate(i): 
    x = numpy.linspace(0, 2, 1000) 
    y = numpy.sin(2 * numpy.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, repeat=False) 

FFwriter = animation.FFMpegWriter() 
anim.save('animation_testing.mp4', writer = FFwriter) 

pyplot.show() 

이렇게하면 동일한 오류가 반복적으로 발생하므로 각 프레임을 반복하는 것으로 가정합니다. 이 _blit_clear에 오류가 언급 한 이후

Traceback (most recent call last): 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\backends\backend_wx.py", line 212, in _on_timer 
    TimerBase._on_timer(self) 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\backend_bases.py", line 1273, in _on_timer 
    ret = func(*args, **kwargs) 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\animation.py", line 910, in _step 
    still_going = Animation._step(self, *args) 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\animation.py", line 769, in _step 
    self._draw_next_frame(framedata, self._blit) 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\animation.py", line 787, in _draw_next_frame 
    self._pre_draw(framedata, blit) 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\animation.py", line 800, in _pre_draw 
    self._blit_clear(self._drawn_artists, self._blit_cache) 
    File "c:\users\james\appdata\local\enthought\canopy\user\lib\site- 
packages\matplotlib\animation.py", line 840, in _blit_clear 
    a.figure.canvas.restore_region(bg_cache[a]) 
KeyError: <matplotlib.axes._subplots.AxesSubplot object at 0x0000000009C04DD8> 

나는 FuncAnimation에서 False로 블릿을 변경했지만, 내가 저장하려고하지 않았을 때 다음은 pyplot.show()에서 애니메이션을하지 않을 것입니다.

오류의 위치가 확실하지 않으므로 해결 방법을 찾을 수 없습니다.

나는 윈도우 10, 파이썬 2.7.6 및하기 matplotlib 버전 1.4.2

많은 감사를 사용하고 있습니다!

+0

이것은 ffmpeg와 완전히 관련이없는 것처럼 보입니다. 그것은 던져지는 matplotlib 오류입니다. 이것은 버그 일 수 있습니다. wx 백엔드를 사용하고 있습니다. 일반적으로 사용되는 것은 아닙니다. 백엔드로 "TkAgg"또는 "Qt4Agg"를 사용하여 위와 같은 실행에 문제가 없으며 블리 팅을 사용하거나 사용하지 않습니다. 어쨌든 시스템, OS, python 및 matplotlib 버전, how/where에 대해 제공 할 수있는 많은 정보로 질문을 업데이트해야합니다. – ImportanceOfBeingErnest

+0

필자는 백엔드를 변경했으며 이제는 오류없이 실행되지만 mp4 파일이 끝나면 여전히 존재하지 않으므로 새로운 오류가 발생합니다. 아직도, 나는 이것이 진전이라고 생각하고 나는 백엔드를 어떻게 바꿀지 결코 알지 못할 것이다! 또한 제안한대로 시스템 세부 사항을 업데이트했습니다. – jtpointon

+0

matplotlib 버전이 오래되었으므로 wx 백엔드에서 작동하게하려면 최신 matplotlib로 먼저 업데이트하는 것이 좋습니다. 그런 다음 wx 백엔드를 사용하여 오류가 지속되면 버그 보고서를 제출할 수 있습니다. 파일이 나타나지 않는 문제는 ffmpeg와 관련이 있습니다. 그러나 출력을 생성 할 수없는 경우 일부 메시지가 반환되어야합니다 (다른 폴더에있을 수도 있습니다). Appart에서는 가능한 한 ' FFMpegWriter' 그리고'FFMpegFileWriter'를 대신 사용해보십시오. – ImportanceOfBeingErnest

답변

0

추가;

pyplot.switch_backend('backend') 

여기서 백엔드는 TkAgg 또는 Qt4Agg가 내 문제를 해결했습니다.

나를 위해 ImportanceOfBeingErnest에 감사드립니다.

관련 문제