3
votes

MovieWriter (ffmpeg) non disponible PyCharm (Windows)

J'ai suivi les instructions pour télécharger ffmpeg et ajouter le chemin selon Matplotlib-Animation "No MovieWriters Available" Bien que je puisse taper la version à la fois dans l'invite de commande et dans Bash sur la console Windows, PyCharm bien-aimé me prévient:

ani = anim.FuncAnimation(fig, animate, frames = 14, init_func = init, interval = 500, repeat = False)
plt.show()
ani.save("Inno.mp4", writer=writer)

lorsque j'essaye d'enregistrer l'animation:

Requested MovieWriter (ffmpeg) not available


0 commentaires

3 Réponses :


3
votes

Vous pouvez spécifier le chemin ffmpeg directement comme suit:

where ffmpeg 

ou essayez d'appeler votre cmd en appelant le ffmpeg pour vous assurer que le chemin a correctement défini son chemin dans vos variables d'environnement.

pour obtenir le chemin après vous être assuré que le chemin est correctement défini, écrivez dans votre cmd:

plt.rcParams['animation.ffmpeg_path'] = 'ffmpeg path on your machine' (e.g.: "C:\FFmpeg\bin\ffmpeg.exe")


4 commentaires

En effet, votre code ne fait aucune erreur qui désactive l'affichage de l'animation. Cependant, comme l'enregistrement se trouve au bas du script, après avoir fermé la fenêtre de la figure, je vois: _tkinter.TclError: nom de commande invalide "pyimage10" , après _tkinter.TclError: impossible invoquer la commande "wm": l'application a été détruite Exception dans le rappel Tkinter


1) PyCharm met un certain temps à afficher la simulation. 2) Le film enregistré est très, très accéléré. 3) Cependant, il est SAUVEGARDÉ et je construis un monument mental d'or pour vous!


Parce que le code affichera la simulation après avoir complètement enregistré l'animation.


Pourriez-vous ajouter des informations sur le passage à votre réponse? Je suppose que cela aiderait d'autres lecteurs.



0
votes

Je suggère ce qui suit pour montrer la simulation pendant un temps t (par exemple 3000 ms ici) puis enregistrer l'animation avant de fermer l'animation car le problème dans votre code est de fermer l'animation avant de créer la sauvegarde afin que le backend tk ne parvienne pas à trouvez la figure à dessiner à l'intérieur. Je suggère ce qui suit:

def close():
    animation.save("Inno.mp4", writer='ffmpeg')
    plt.close()


timer = fig.canvas.new_timer(interval = 1000) 
timer.add_callback(close)

plt.show(block=False)
timer.start()
plt.show()


0 commentaires

3
votes

Windows 10: 1) ouvert: invite Anaconda 2) feu: conda install -c conda-forge ffmpeg 3) redémarrez votre environnement

A travaillé pour moi.


0 commentaires