アニメーションファイルを出力する

さらに昨日の続き。
昨日の方法は、画像を繰り返し再描画して動いているように見せるものであったが、今回はmpgファイルとしてアニメーションを出力する方法を検討する。

matplotlibのexamplesの中の movie_demo.pyを読む。一部を抜粋。

import os, sys
from pylab import *

files = []
figure(figsize=(5,5))
ax = subplot(111)
for i in range(50):
    cla()
    imshow(rand(5,5), interpolation='nearest')
    fname = '_tmp%03d.png'%i
    savefig(fname)
    files.append(fname)

os.system("mencoder 'mf://_tmp*.png' -mf type=png:fps=10 -ovc lavc -lavcopts vcodec=wmv2 -oac
                 copy -o animation.mpg")
#os.system("convert _tmp*.png animation.mng")

for fname in files: os.remove(fname)

for文の箇所で50枚絵を描いて、savefigで図に保存している。ここは分かる。
filesには最後にファイルを削除するためにファイル名を保存しておく。これも分かる。
なのでポイントは、最後にファイルをまとめて動画ファイルにするところだ。
os.system("mencoder ...としているが、ここが動かない。ライブラリリファレンスを見ると、os.systemというのはサブプロセスを起動するから、mencoderというコマンドがないとダメということか。

調べたらmencoder.exeをWindowsにインストールできそうだ。なので必要になったらインストールして試してみよう。この方法はひとまずこれまで。