銀月の符号

Python 使い見習いの日記・雑記

AviUtl を Python から自動操縦する

あじさんの「AviUtlControl」と同じ動作を Python ctypes のみで目指してみる、そんな試み。いや遊び。 4 日前から作っていたが、形になってきたので晒してみる。

名前は…pyaviutl.py 。うーん、考え直したほうがいいかも。 pyaviutlcontrol とか pyaviutllib とか? しっくりこない。でも名無しではまずいよなぁ。名前を PyAviUtlLib にしました。

使い方は、こんな感じ。「AviUtlControl」各種と同じ名前、同じ動作(をするかもしれない)の関数がある。引数の順序は Python の都合で入れ替わっていて、ウィンドウハンドルが後ろ。あと、ウィンドウハンドルは省略可能。

from aviutllib import *

# AviUtl 立ち上げ
hwnd = exec_(ur'C:\bin\aviutl\aviutl.exe')
# ファイルを開く
open(ur'S:\movie\spam.avi', hwnd)
# AVI ファイルに(現設定のまま)出力
aviout(ur'S:\movie\ham.avi', hwnd)
# 出力が終わるまで待つ
wait(hwnd)
# ファイルを閉じる
close(hwnd)
# AviUtl を終了する
exit(hwnd)

バグもちの可能性大。普通に subprocess モジュールで「AviUtiControl」の exe を呼び出したほうが無難なのは確定的に明らか。

なので 4 日前作った subprocess を使って「AviUtlControl」を使うモジュールも再掲。