J'ai trouvé ce petit code, et je suis capable d'enregistrer une vidéo (couleurs aléatoires changeant dans une grille) en l'utilisant :
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from scipy import rand
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='xy'), bitrate=3600)
fig = plt.figure()
frames = []
for add in np.arange(15):
base = rand(10, 10)
frames.append((plt.pcolormesh(base, ),))
im_ani = animation.ArtistAnimation(fig, frames, interval=500, repeat_delay=3000,
blit=True)
im_ani.save('Vid.mp4', writer=writer)
J'ai essayé de l'insérer dans ma simulation, je n'obtiens aucune erreur, mais la vidéo est vide, l'image entière est blanche. Pouvez-vous m'aider à résoudre ce problème ? C'est le cas le plus simple où je l'ai obtenu :
class Dummy():
def __init__(self):
self.video=[]
def addFrame(self):
Frame=rand(10,10)
print (Frame)
self.video.append((plt.pcolormesh(Frame),))
def saveVideo(self):
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='XY'), bitrate=3600)
fig = plt.figure()
im_ani = animation.ArtistAnimation(fig, self.video, interval=500, repeat_delay=3000,
blit=True)
im_ani.save('myVid.mp4', writer=writer, dpi=dpi)
Vous pouvez l'essayer :
from scipy import rand
foo=Dummy()
for i in range(20):
foo.addFrame()
foo.saveVideo()