Friday 11 November 2011

After Effects 字幕挿入スクリプト

クライエントの要望で動画に字幕を入れる作業をする事になりました。一つずつフォーマットをしていたのでは日が暮れるので、こちらのスクリプトを使いました。
{
 // Subtitle generator by !Rocky
 // modified by Colin Harman ( http://colinharman.com/ ) to work on a Mac
 //
 // Save this code as
 // "subtitles.jsx"
 //
 // Create a text file with your subtitles.
 // Each line of text is one on-screen line.
 // To have several lines on-screen at the same time,
 // simply separate them with a pipe ( | ) character.
 // eg "Character 1 talks|Character 2 interrupts"
 //
 // Create a new text layer in your comp, adjust its position,
 // make sure the text's centered, so it looks nice
 // Add markers (Numpad *) where each subtitle line must be shown/hidden.
 // With the text layer selected, run the script, and select the subtitles file.
 // Enjoy!

 function makeSubs() {
  var layer = app.project.activeItem.selectedLayers[0];

  if (layer.property("sourceText") != null) {
   var textFile = File.openDialog("Select a text file to open.", "");
   if (textFile != null) {
    var textLines = new Array();
    textFile.open("r", "TEXT", "????");

    while (!textFile.eof)
     textLines[textLines.length] = textFile.readln();

    textFile.close();

    var sourceText = layer.property("sourceText");
    var markers = layer.property("marker");

    for (var i = sourceText.numKeys; i >= 1; i--)
     sourceText.removeKey(i);

    var line = 0;
    var subTime, subText;
    for (var i = 1; i <= markers.numKeys; i++) {
     subTime = markers.keyTime(i);
     sourceText.setValueAtTime(0, " ");

     if ((i % 2) == 0) {
      subText = " ";
     }
     else {
      subText = textLines[line].replace("|", "\x0d\x0a");
      line++;
     }
     sourceText.setValueAtTime(subTime, new TextDocument(subText));
    }
   }
  }
 }
 makeSubs();
}

これを適当な名前、例えば'subtitle.jsx'として保存してテキストファイルで別に字幕ファイルを作製、改行で画面を区切る。後はAFのコンポジションにテキストレイヤーを追加して、字幕が表示される所と消える所にマーカーを付けて(Macだとcontrol+8)いき、スクリプトを走らせるだけ。

便利なものがあり、動画編集のハードルも下がってきていますね。将来はもっと動画編集が簡単になってくれるといいですね。

No comments:

Post a Comment