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):
    # ...
        writer.grab_frame(facecolor='k')
    

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

Tags: ,

Categories:

Written by Michael Hirsch, Ph.D. //

Comments