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. (you can optionally use mpeg4 lossy, but I think you should use lossless to help avoid washing 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):
    # ...
        writer.grab_frame(facecolor='k')
    

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

Leave a Comment