Lossless .avi Matplotlib plot/movie sequences

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

In matplotlib_writeavi.py, just four added lines of code do the AVI writing. First line tells Matplotlib to use FFmpeg. 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. 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):
# ...
   writer.grab_frame(facecolor='k')

For problems playing back the .avi file, try omitting the codec='ffv1' parameter.

Minimum AVI frame rate: less than 3 fps can invoke bugs on VLC. VLC has trouble with slow frame rate video from any source.


Related: write lossy compressed Matplotlib video