100個のAVIをMP4にエンコードしたい、かつ状態も確認したかったので、Media EncoderではなくAfter Effectsで出力するスクリプトを作成しました。
[追記]動画を直接レンダーキューに入れるほうが早かったです
スクリプトを使わなくても標準機能で対応可能でした。
プロジェクトパネルの動画素材をレンダーキューへドラッグすると、個別の出力項目として登録できます。
登録しただけではレンダリングは始まらないため、形式・出力先・対象項目を確認して開始します。

選択した全ての動画を個々にコンポジションに入れるスクリプト
選択した動画素材を、それぞれ個別のコンポジションとして新規作成・配置するスクリプトです。
(function () {
if (!app.project) { alert("Open a saved practice project first."); return; }
var selected = app.project.selection.slice(0);
var valid = [], skipped = 0, made = 0;
for (var i = 0; i < selected.length; i++) {
var x = selected[i];
if (!(x instanceof FootageItem) || !x.hasVideo || x.mainSource.isStill ||
x.footageMissing || !isFinite(x.width) || Math.floor(x.width) != x.width || x.width < 4 || x.width > 30000 ||
!isFinite(x.height) || Math.floor(x.height) != x.height || x.height < 4 || x.height > 30000 ||
!isFinite(x.duration) || x.duration <= 0 || x.duration > 10800 ||
!isFinite(x.frameRate) || x.frameRate < 1 || x.frameRate > 99 ||
!isFinite(x.pixelAspect) || x.pixelAspect < 0.01 || x.pixelAspect > 100) {
skipped++; continue;
}
valid.push(x);
}
if (!valid.length) { alert("No supported moving-image footage selected."); return; }
app.beginUndoGroup("Create selected video compositions");
try {
for (var j = 0; j < valid.length; j++) {
var item = valid[j];
var comp = app.project.items.addComp(item.name, item.width, item.height,
item.pixelAspect, item.duration, item.frameRate);
comp.layers.add(item);
made++;
}
alert("Created: " + made + ", skipped: " + skipped);
} catch (e) {
alert("Stopped after " + made + " completed items: " + e.toString() +
"\nUndo this group or reopen your saved practice copy.");
} finally { app.endUndoGroup(); }
}());
選択したコンポジションをレンダーキューへ追加する
プロジェクトパネルで選択したコンポジションをまとめてレンダーキューに追加するスクリプトです。
(function () {
if (!app.project) { alert("Open a saved practice project first."); return; }
var queue = app.project.renderQueue;
if (queue.rendering) { alert("Stop rendering before adding items."); return; }
var selected = app.project.selection.slice(0), comps = [];
for (var i = 0; i < selected.length; i++) {
if (selected[i] instanceof CompItem) { comps.push(selected[i]); }
}
if (!comps.length) { alert("Select compositions in the Project panel."); return; }
var added = 0;
try {
for (var j = 0; j < comps.length; j++) {
var item = queue.items.add(comps[j]);
item.render = false;
added++;
}
alert("Added, not enabled for rendering: " + added +
"\nSet unique outputs and formats, then enable only the intended items.");
} catch (e) {
alert("Stopped after " + added + " items: " + e.toString() +
"\nInspect the practice queue; no render was started.");
}
}());
この修正版は追加項目のレンダリングを無効にし、自動開始しません。
既存キューの有効状態は変更しないので、出力時は意図しない既存項目が有効になっていないかも確認します。
After Effectsの基本的な操作や関連Tipsは、こちらのまとめからご覧いただけます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。 修正版は本文下の練習用ZIPを使います。リンク先リポジトリには旧版が含まれるため、同じコードとして扱わないでください。
レンダリングや書き出しを高速化する設定や手順についても別記事で解説しています。




2素材と対象外の項目で確かめる練習
別名保存した練習プロジェクトで、1920×1080・30fps・2秒の動画AとB、静止画、音声、フォルダーを選びます。
ファイル→スクリプト→スクリプトファイルを実行からcreate-video-comps.jsxを選びます。
タイムラインの式欄では実行しません。
動画だけが対象です。
静止画・音声のみ・リンク切れ・コンポジション・フォルダーや、寸法・継続時間・フレームレートが対応範囲外の素材は除外します。
動画AとBの2コンポジションが作成され、各動画が1レイヤー入るかを確認します。
作成した2コンポジションだけをプロジェクトパネルで選び、queue-selected-comps.jsxを実行します。
追加2項目のチェックはオフのままにし、出力モジュールで目的の形式を選びます。
拡張子だけを.mp4へ変えてもMP4への変換にはなりません。
| 対象 | 確認する状態 | 出力先 |
|---|---|---|
| Aのコンポジション | 動画Aの寸法・2秒・30fps | A専用の未使用ファイル名 |
| Bのコンポジション | 動画Bの寸法・2秒・30fps | B専用の別ファイル名 |
| 既存キュー | 元の設定を保持 | 今回出力するものだけ有効にする |
保存先に同名ファイルがないこと、出力範囲が2秒であることを確認してから、2項目を有効にしてレンダリングします。
出力した動画を開き、寸法・長さ・映像と音声を確認します。
再実行は別のコンポジションやキュー項目を追加するため、重複が不要なら実行前の保存コピーへ戻します。
コンポジション作成と名前変更はUndoグループを使いますが、レンダーキューの復元まで同じUndoで戻るとは扱いません。
エラー時は途中追加分を確認し、練習前のプロジェクトへ戻します。
2026年10月3日にAPI資料とローカルのテストダブルで制御を確認しました。
AE本体でのスクリプト・レンダリング・Undoは未検証です。
練習用スクリプト4本をダウンロードできます。
確認資料(2026年10月3日):Adobe公式 素材管理。
まとめ
- 素材動画を直接レンダーキューへドラッグ&ドロップする方法が最も手軽
- 個別のコンポジションとして整理・調整したい場合は1つ目のスクリプトを活用
- 大量のコンポジションを一括登録する場合は2つ目のスクリプトが便利
