MovieWriter ffmpeg不可用;尝试使用<class'matplotlib.animation.PillowWriter'>代替

时间:2020-02-03 05:09:37

标签: python matplotlib ffmpeg

有什么方法可以在没有ffmpeg的情况下使用移动绘图吗?

import matplotlib.animation as animation
from IPython.display import HTML

fig, ax = plt.subplots(figsize=(15, 8))
animator = animation.FuncAnimation(fig, draw_barchart, frames=range(1968, 2019))
HTML(animator.to_jshtml()) 
animator.save('dynamic_images.mp4')

我的代码在上面,我遇到了关键错误.mp4'ValueError: unknown file extension: .mp4

我尝试安装conda install -c conda-forge ffmpeg时遇到SSL问题

  • 有没有办法使用没有ffmpeg的移动图

  • 就像抛出错误一样,可以使用'matplotlib.animation.PillowWriter'

免责声明:我通过了https://www.wikihow.com/Install-FFmpeg-on-Windows链接,但该URL被IT团队屏蔽了

2 个答案:

答案 0 :(得分:5)

这是我对 SO 的第一个回答,所以请保持温和。
上面的答案似乎是个好主意,但它没有回答为什么 matplotlib 内置方法不起作用,所以我决定添加一些解释。

这可能是重复的 (possible duplicate?)。
问题是您缺少 ffmpeg。
如果您使用 conda 作为管理器,请安装缺少的软件包。
你也可以使用 apt、dnf、pacman 或其他你正在使用的工具来做到这一点。

如果您使用的是 conda:
conda install -c conda-forge ffmpeg
ffmpeg on anaconda.org

您可能会错过另一个依赖项,即 Openh264
再次如果使用 conda: conda install -c conda-forge openh264
Openh264 on anaconda.org

如果您仍然缺少更多依赖项,解决它们将取决于您使用的平台。
如果您使用的是 Windows,我建议您尝试使用 miniconda。

就我而言,在使用 conda(我的平台是/是 Fedora)安装 openh264 后,我仍然遇到问题,因为安装的 lib 被称为 libopenh264.so.6 而不是 libopenh264.so.5
无论如何,我决定尝试一下,并在同一目录 (6) 中创建了一个指向以 /lib64/ 结尾的版本的符号链接,并且成功了。

答案 1 :(得分:1)

您可以使用celluloid库将动画剧情另存为.gif

from matplotlib import pyplot as plt
from celluloid import Camera
import numpy as np


# create figure object
fig = plt.figure()
# load axis box
ax = plt.axes()
# set axis limit
ax.set_ylim(0, 1)
ax.set_xlim(0, 10)

camera = Camera(fig)
for i in range(10):
    ax.scatter(i, np.random.random())
    plt.pause(0.1)
    camera.snap()

animation = camera.animate()
animation.save('animation.gif', writer='PillowWriter', fps=2)

输出:

enter image description here