Сохранить анимацию Matplotlib

Я пытаюсь сделать анимацию пакета волн и сохранить его как фильм. Все, кроме сохранения, работает. Подскажите, пожалуйста, что я делаю не так? При переходе в очередьani.save('MovWave.mp4') он говорит мне:

    writer = writers.list()[0]
IndexError: list index out of range

Я, конечно, пытался погуглить, но я даже не знаю, что это значит.

ОБНОВИТЬ: я могу позвонитьffmpeg в консоли сейчас. Это говорит, что у меня есть версия ffmpeg0.10.7-6:0.10.7-0jon1~precise установлен. Я обновил код и запустил программу, но теперь я получаю следующую ошибку:

Traceback (most recent call last):
  ani.save('MovWave.mpeg', writer="ffmpeg")
  writer.grab_frame()
  dpi=self.dpi)
  self.canvas.print_figure(*args, **kwargs)
  self.figure.dpi = origDPI
  self.dpi_scale_trans.clear().scale(dpi, dpi)
  self._mtx = np.identity(3)
  from numpy import eye
  File "<frozen importlib._bootstrap>", line 1609, in _handle_fromlist
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

Обновление 2: Очевидно, есть ошибка при использовании python 3.3, как указал doctorlove. Я сейчас пытаюсь использовать Python 2.7 вместо. Теперь он создает MPEG-файл, но не может быть воспроизведен, и его размер составляет всего ~ 150 кБ.

Обновление 3: Итак, я попробовал точно такой же код на моей машине Win7, и он также работает в Python 3.3. Но у меня та же проблема, что и раньше, с Python 2.7. Созданный mpeg-файл не может быть воспроизведен и занимает всего несколько сотен килобайт.

#! coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time
time.clock()

def FFT(x,y):
    X = (x[-1]-x[0])/len(y)
    f = np.linspace(-2*np.pi/X/2,2*np.pi/X/2,len(y))
    F = np.fft.fftshift(np.fft.fft(y))/np.sqrt(len(y))
    return(f,F)

def FUNCTION(k_0,dx,c,t):
    y = np.exp(1j*k_0*(x-c*t))*np.exp(-((x-c*t)/(2*dx))**2 )*(2/np.pi/dx**2)**(1/4)
    k,F = FFT((x-c*t),y)
    return(x,y,k,F)

#Parameter
N = 1000
x   = np.linspace(0,30,N)
k_0 = 5
dx  = 1
c   = 1

l = [k_0,c,dx]

fig = plt.figure("Moving Wavepackage and it's FFT")
sub1 = plt.subplot(211)
sub2 = plt.subplot(212)
sub2.set_xlim([-10,10])
sub1.set_title("Moving Wavepackage and it's FFT")
sub1.set_ylabel("$Re[\psi(x,t)]$")
sub1.set_xlabel("$t$")
sub2.set_ylabel("$Re[\psi(k_x,t)]$")
sub2.set_xlabel("$k_x$")


n = 50
t = np.linspace(0,30,n)
img = []
for i in range(n):
    x,y,k,F = FUNCTION(k_0,dx,c,t[i]) 

    img.append(plt.plot(x,np.real(y),color="red", axes=plt.subplot(211)))
    img.append(plt.plot(k,np.real(F),color="red", axes=plt.subplot(212)))

ani = animation.ArtistAnimation(fig, img, interval=20, blit=True, repeat_delay=0)

ani.save('MovWave.mpeg', writer="ffmpeg")

print(time.clock())
plt.show()

Ответы на вопрос(2)

Ваш ответ на вопрос