matplotlib 如何检查哪些编写器可用于保存动画

qojgxg4l  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在使用matplotlib制作一个系统随时间演化的动画。我希望能够将动画保存为文件。我的默认选择是保存为.mp4文件,这意味着我应该像这样使用ffmpeg编写器:

anim.save(filename="system_evolution.mp4", writer="ffmpeg", fps=30)

问题是,我与我的同学共享代码,他们的系统上不一定安装了ffmpeg。在这种情况下,我想回退到使用pillow保存动画的.gif(大多数人使用Anaconda安装Python,所以他们可能也安装了Pillow)。如何检查哪些编写器可用于保存动画?
我想要这样的东西:

if ffmpeg_available():
    print("Saving system_evolution.mp4")
    anim.save(filename="system_evolution.mp4", writer="ffmpeg", fps=30)
elif pillow_available():
    print("Saving system_evolution.gif")
    anim.save(filename="system_evolution.gif", writer="pillow", fps=30)
else:
    print("Please install either ffmpeg to save a mp4 or pillow to save a gif.")

我不知道如何实际检查ffmpegpillow是否可用,这意味着当我试图保存.mp4ffmpeg未安装时,程序崩溃。如何检查?

toe95027

toe950271#

根据this,此模块中的writers对象有一个名为is_available()的方法,可用于检查特定的writer是否可用。
你能做那样的事

import matplotlib.animation as animation

def ffmpeg_available():
    return animation.writers.is_available('ffmpeg')

def pillow_available():
    return animation.writers.is_available('pillow')

if ffmpeg_available():
    print("Saving system_evolution.mp4")
    anim.save(filename="system_evolution.mp4", writer="ffmpeg", fps=30)
elif pillow_available():
    print("Saving system_evolution.gif")
    anim.save(filename="system_evolution.gif", writer="pillow", fps=30)
else:
    print("Please install either ffmpeg to save a mp4 or pillow to save a gif.")

相关问题