かきかたえんぴつ

いつかどこかで何かの役にたつかもしれないメモ

連番でない PNG 画像をとにかく動画に変換

指定されたディレクトリの PNG 画像を連番ファイル名にリネームしたあげく、ffmpeg を使って MP4 動画に変換してしまう Python コード。encode.py とでも名前を付けて

python encode hoge foo

のように使えば、hoge ディレクトリの PNG 画像から foo.mp4 ができる。

連番の桁数や ffmpeg のパラメータは適当に変更すべし。

import glob
import os
import subprocess
import sys

wd  = '.'
out = 'out'

argc = len(sys.argv)
if(argc > 1):
    wd = sys.argv[1]
if(argc > 2):
    out = sys.argv[2]

files = glob.glob(wd + '/*.png')
i = 0
for f in files:
    print f
    os.rename(f, wd + '/%03d.png' % i)
    i += 1

cmd = 'ffmpeg -r 10 -i ' \
      + wd + '/%03d.png -r 10 -vcodec libx264 ' \
      + out + '.mp4'
print cmd
subprocess.call(cmd, shell=True)