鴨川のはりねずみ

matplotlibでWebM動画を作成

matplotlib で作成したアニメーションは mp4 で保存することが多いですが, 直接 WebM 形式で出力することもできます. ただし, その場合コーデックを明示的に指定する必要があります. 現時点では av1 のエンコード速度は個人ユースでは実用に耐えないレベルで遅いので1, おそらく vp9 が唯一の選択肢でしょう. 私の体感では, 解像度 1200x1200, 30 fps (interval=33) のアニメーションを vp9 で出力するならば, ビットレート 2178 kb/s もあればデフォルトの mp4 と遜色のないクオリティのアニメーションが作れると思います.

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig = plt.figure( figsize=(12, 12) )
ax = fig.add_subplot(111)

def update(angle):
    ax.cla()
    # 実装は省略 #
    
anim = FuncAnimation(fig, update, frames=range(128), interval=33)
anim.save("anim.webm", writer="ffmpeg", codec='libvpx-vp9', bitrate=1024*3)
#plt.show()
plt.close()
1

rav1e と libaom の速度比較は一年以上前の記事が多く, 最新の動向が気になるところです.