Lossless .avi Matplotlib plot/movie sequences

Related: write lossy compressed Matplotlib video

A large time series of line plots or images using Matplotlib is shared most easily as a movie file.

Example of Matplotlib movie write

In example matplotlib_writeavi.py, just four added lines of code do the AVI writing.

  1. first line tells Matplotlib to use FFmpeg
  2. second line tells Matplotlib to make a lossless FFV1 video at 15 frames/sec. One can optionally use codec='mpeg4', but lossy encoding can wash out details of plots.
  3. third line says to use 100 DPI (smaller DPI–smaller file and movie size)
import matplotlib.animation as anim


Writer = anim.writers['ffmpeg']
writer = Writer(fps=15, codec='ffv1')
# ...
with writer.saving(fg, fn,100):
# ...

If you have problems playing back the .avi file, try omitting the codec='ffv1' parameter.

Minimum AVI frame rate

Note that using less than 3 fps can invoke bugs on VLC. VLC has trouble with slow frame rate video from any source