2012-07-26

複数のaepファイルを順次起動してスクリプトを自動実行する

はじめに

複数のaepファイルを自動起動して、各々のaepに対してスクリプトやプラグインを自動実行する手法です。

AEのコマンドライン起動時の引数に、’-r’ スイッチを使用する事で、スクリプトを引数として実行する事ができます。
起動時に引数に指定するスクリプトの中に、処理を施したいaepファイルを列挙して、Open&Closeします。

‘-r’ スイッチについては、下記リンク先を参照して下さい。
http://help.adobe.com/ja_JP/aftereffects/cs/using/WSD2616887-A41E-4a39-85FE-957B9D2D3843.html

コード

下記コードを、”aepproject.jsx”など適当なファイル名で保存して下さい。

aepfiles = [
	"C:/AEPProject/test1.aep",
	"C:/AEPProject/test2.aep",
	"C:/AEPProject/test3.aep",
];
var aep;
for (var fname in aepfiles) {
	aep = new File( aepfiles[fname] );
	if (aep.exists){
		proj = app.open(aep);
		if (proj){
 
			//ここに、任意の処理を記述します。
			//さしあたりaepファイル名を表示しています。
			alert(app.project.file.name);
 
			proj.close(CloseOptions.DO_NOT_SAVE_CHANGES);
		}
	}
	aep.close();
}
app.quit();


コマンドラインから、
C:\AEPProject>"C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\AfterFX.exe" -r C:\AEPProject\aeproject.jsx
のように起動します。

使用例

http://ae-users.com/jp/tips/scripts-tips/2009/04/aftereffectsをスクリプトで制御2-プロジェクトにフォルダ/
を参考に、「複数のaepファイルに、特定の名前のフォルダを自動追加する」事を行ってみます。

addfolder.jsxincを作成しておきます。

function addfolder(num) {
	app.project.items.addFolder("富士山"+num);
}


aepproject.jsxからaddfolder関数を呼び出してみます。

#include "C:/AEPProject/addfolder.jsxinc"
 
aepfiles = [
	"C:/AEPProject/test1.aep",
	"C:/AEPProject/test2.aep",
	"C:/AEPProject/test3.aep",
];
 
var aep;
for (var fname in aepfiles) {
	aep = new File( aepfiles[fname] );
	if (aep.exists){
		proj = app.open(aep);
		if (proj){
			//ここで、addfolder.jsxincのaddfolder関数を呼び出しています。
			addfolder(fname);
			//Save automatically on close.
			proj.close(CloseOptions.SAVE_CHANGES);
		}
	}
	aep.close();
}
app.quit();


応用例

rubyを用いたjsxファイル作成例です。
特定フォルダ以下にあるaepファイルを列挙したjsxを作成して、AfterFX.exeを起動します。

下記コードを、”aepproject.rb”など適当なファイル名で保存して下さい。

#coding:utf-8
 
path = ARGV[0].gsub("\\",'/')
aep = Dir.glob(File.join(path,"/**/*.aep"));
 
jsx = File.expand_path(File.join(path, "aepproject.jsx"))
open(jsx, "w") do |f|
	while l = DATA.gets
		l.sub!("REPLASE", aep.map{|a| "\"" + File::expand_path(a) + "\""}.join(",\n"))
		f.puts(l)
	end
end
 
ae = "C:\\Program Files\\Adobe\\Adobe After Effects CS6\\Support Files\\AfterFX.exe"
jsx = jsx.gsub('/','\\\\')
exec("#{ae}", "-r", "#{jsx}")
 
__END__
#include "C:/AEProject/addfolder.jsxinc"
 
aepfiles = [
REPLASE
];
 
var aep;
for (var fname in aepfiles){
	aep = new File( aepfiles[fname] );
	if (aep.exists){
		proj = app.open(aep);
		if (proj){
			addfolder(fname);
			proj.close(CloseOptions.SAVE_CHANGES);
		}
	}
	aep.close();
}
app.quit();


コマンドラインから、
C:\AEPProject>ruby aepproject.rb C:\AEPProject
のように実行します。

終わりに

このような手法にニーズがあるのか分からないですが、とりあえず公開してみました。
今回の例では、外部のjsxincに記述した関数を呼び出していますが、

app.executeCommand(app.findMenuCommandId("メニューの文字列"));

等と組み合わせれば、プラグインの呼び出しも可能だと思います。
色々工夫して頂ければ幸いです。



この投稿にタグはありません。タグはどなたでも追加出来ます![タグを追加する]


この記事の投稿者について:naku4316

フィードバック

1 Star2 Stars3 Stars4 Stars5 Stars
(評価回数:4 , 平均:5.00)
Loading...Loading...

この記事に対する 9 の反応があります


  1. 1 AEUSERS(AEP Project) 7月 26th, 2012 at 13:16

    新着記事 : 複数のaepファイルを順次起動してスクリプトを自動実行する http://t.co/ixNHGMrc

  2. 2 小池屋カアラ 7月 26th, 2012 at 13:34

    改良して指定したスクリプトかどうかを調べるチェッカーに出来れば良いかも知れません RT @AEUSERS: 新着記事 : 複数のaepファイルを順次起動してスクリプトを自動実行する http://t.co/PNjuVfRV

  3. 3 Kohei Tanada 7月 26th, 2012 at 14:11

    新着記事 : 複数のaepファイルを順次起動してスクリプトを自動実行する http://t.co/ixNHGMrc

  4. 4 CGWORLD.jp 7月 27th, 2012 at 02:43

    複数のaepファイルを順次起動してスクリプトを自動実行する|AEP PROJECT… http://t.co/PqE3efiM

  5. 5 ふじただよ 7月 27th, 2012 at 02:44

    めも RT @CGWjp: 複数のaepファイルを順次起動してスクリプトを自動実行する|AEP PROJECT… http://t.co/sJIDa4Eb

  6. 6 se_tech 7月 27th, 2012 at 03:45

    新着記事 : 複数のaepファイルを順次起動してスクリプトを自動実行する http://t.co/ixNHGMrc

  7. 7 kuboyama 10月 24th, 2012 at 10:52

    @nisitake くやしいけど俺あんまり実写扱わないからなぁ。スクリプト書けたらそういう風に組めそうだけど、難易度高いな。http://t.co/rgRV7mK2

  8. 8 Lina 11月 17th, 2016 at 10:41

    Wham bam thank you, ma’am, my queositns are answered!

  1. 1 複数のaepファイルを順次起動してスクリプトを自動実行する | スクリプト - After Effects - 動画編集ソフト - アプリケーション | Jishuu.net Pingback on 9月 8th, 2012 at 00:21

コメントをどうぞ!




特集