Adobe Media Encoder CS5編 指定した映像ファイルをエンコードする

Adobe Premiere CS5とセットになっているのが映像のエンコード処理を行うのがAdobe Media Encoder CS5です。役割分担としてはPremiereで編集し映像エンコードをMedia Encoderが行うことになります。PremiereはあまりJavaScriptから制御することができませんが、Media EncoderはJavaScriptによっていろいろ制御することができます。フォーマットを指定してエンコードするのはもちろんですし、定期的にフォルダを監視して処理することもできます。ただし、イン点とアウト点を指定してエンコードするようなことはできません。やはり編集機能はPremiereにまかされているようです。
以下のスクリプトは特定の場所にある映像ファイルをH.264形式でYouTube用にエンコードするものです。●●●●はユーザー名(ユーザーフォルダ名)を指定してください。★★★★にはエンコードする元の映像ファイル名、▲▲▲▲にはエンコードし保存するファイル名を指定してください。なお、書き出されるファイルと同じファイル名がある場合には▲▲▲▲_1のように番号が付いて別名で保存されます。


// 指定した映像ファイルをエンコードする
var basePath = "/Users/●●●●/";
var srcFile = basePath+"Desktop/★★★★";
var saveFile = basePath+"Desktop/▲▲▲▲";
var eh = app.getEncoderHost();
var encoder = eh.createEncoderForFormat("H.264");
encoder.loadPreset("YouTube SD");
encoder.encode(srcFile, saveFile);
eh.runBatch();

違う形式でエンコードしたいと思う人は多いでしょう。その場合、形式は

var encoder = eh.createEncoderForFormat("H.264");

の行で指定します。H.264を別の形式名(QuickTimeとか)にします。そしてプリセットは

encoder.loadPreset("YouTube SD");

の行で指定します。形式名やプリセット名はMedia Encoderのポップアップから選択できる名前になります。
ただ、全ての形式とプリセットを調べるのは面倒です。そのような場合は以下のスクリプトを実行すればテキストファイルに全ての形式と対応するプリセットが保存されます。

// プリセットを保存する
(function(){
var savefile = File.saveDialog("保存するファイル名を入れて下さい");
if (!savefile) return;
if (!savefile.open("w")){
alert("ファイルを保存できません");
return;
}
var eh = app.getEncoderHost();
var format = eh.getFormatList(); // 形式一覧を取得
for(var i=0; i<format.length; i++){
var encoder = eh.createEncoderForFormat(format[i]);
savefile.writeln("■形式:"+format[i]);
var list = encoder.getPresetList();
for(var j=0; j<list.length; j++){
savefile.writeln(" "+list[j].split("#")[1]);
}
}
})();

Media Encoder CS5では一部不具合があり、プリセット名が正しく記録されていないものもあります。また、カスタムで作成したプリセットも番号の羅列になってしまいます。

[サンプルをダウンロード]