ハレとケ

システム、インフラ、AI、デザイン

【ExtendScript】After Effectsから指定のコンポを自動レンダリングするスクリプト





最終的なコード

// autoRender.jsx

project          = app.project;
project_path 	 = project.file.path;
mian_compo_index = 2

render(mian_compo_index);

function render(compo_index) {
	var item   = project.item(compo_index);
	var renq   = project.renderQueue.items.add(item);
        var f_name = project_path + "/auto_render.mp4";
        var OM     = renq.outputModules[1];

	OM.applyTemplate("ロスレス圧縮(アルファ付き)");
	OM.file = new File(f_name);

	if (app.project.renderQueue.canQueueInAME == true) {
		app.project.renderQueue.queueInAME(true);
	} else {
		alert("レンダリングに失敗しました。");
	}
}



スクリプトを起動してから、自動でレンダリングされるまで。




コンポジションを指定する

コンポジションを指定するには、プロジェクトパネルのインデックスを使う。
注意が必要なのは、最初のアイテムのインデックスは0ではなくて、1。

// appはAEのグローバル変数
var item = app.project.item(compo_index);

Application object - After Effects スクリプトリファレンス




レンダーキューにコンポジションを追加

上記で指定したコンポジションをレンダーキューへ追加

project  = app.project;
var item = project.item(compo_index);

// レンダーキューに追加
var renq = project.renderQueue.items.add(item);

RenderQueueItem object - After Effects スクリプトリファレンス




レンダリングオペレーション

レンダリングする際の設定をする。

var OM = renq.outputModules[1];

//  出力モジュールテンプレートを指定
OM.applyTemplate("ロスレス圧縮(アルファ付き)");

// 出力ファイル名を指定
OM.file = new File(f_name);

OutputModule object - After Effects スクリプトリファレンス





AME(Adobe Media Encoder)に追加してレンダリングする

canQueueInAME

After Effectsのレンダーキューアイテムの中にキューされたレンダーアイテムが存在しているかどうかを示します。このアトリビュートがtrueを返した場合のみqueueInAME()でAME(Adobe Media Encoder)のキューに追加可能です。

// AE内のレンダーキューにレンダリング待ちのアイテムがあるかどうか
if (app.project.renderQueue.canQueueInAME == true) {

    // AME(Adobe Media Encoder)に追加
    // 引数はすぐにレンダーするかどうか
    // false の場合はAMEのキューに追加はするが、レンダリングは開始しない
    app.project.renderQueue.queueInAME(true);

} else {
    alert("レンダリングに失敗しました。");
}

canQueueInAME - After Effects スクリプトリファレンス



ENJOY !



f:id:kijnmb-1110:20170708192333p:plain