Help us understand the problem. What is going on with this article?

Adobe Premiere: MV作成のための自動マーカー打ち込みスクリプト

More than 3 years have passed since last update.

この記事は 慶應義塾大学SFC村井&徳田研 Advent Calendar 2015 の3日目の記事です。


ミュージックビデオを作るとき、大事なのは映像と音楽の同期です。動きとテンポがシンクロしていると、それだけでかっちょいいムービーになります。

しかし、意外にも動画編集ソフトのAdobe Premiereは、自動BPM検出どころか一定間隔でマーカーを打つ機能すらありません。仮にBPM160で5分の動画だと、手動で800個のマーカーを打つ地獄になります。それは嫌です。

Adobe ExtendScript

Adobe製品のGUIをJavaScript(ES5?)から操作できる「ExtendScript」というものがあります。公式のドキュメントがほぼ皆無なので知名度も低いですが、今回のような単純作業には非常に有用です。

スクリーンショット 2015-12-03 23.47.23.png

マーカーを扱うためのAPI

MarkerCollectionオブジェクト

Markerオブジェクトの作成や削除、取得を行えます。

// MarkerCollection
var numMarkers:number;
function createMarker(t:number):Marker;
function deleteMarker(m:Marker):void;
function getFirstMarker():Marker;
function getLastMarker():Marker;
function getNextMarker():Marker;
function getPrevMarker():Marker;

Markerオブジェクト

マーカーそのものです。色などのスタイルは操作できません。Premiereには4種類のマーカーがありますが、初期値ではコメントマーカーになります。

// Marker
var comments:string;
var name:string;
var start:Time;
var end:Time;
function setTypeAsChapter():void;
function setTypeAsComment():void;
function setTypeAsSegmentation():void;
function setTypeAsWeblink():void;
/* 以下略 */

Timeオブジェクト

タイムコード(時間軸)を扱うために使います。

// Time
var seconds:number;
var ticks:number;

音源にシンクロしたマーカーの打ち方

例えば0.1秒ちょうどにマーカーを打つコードは以下になります。

var Markers = app.project.activeSequence.markers;
Markers.createMarker(0.1);

"ちょうど"と書きましたが、残念ながらこれは嘘で、実際にはGUI上で取得した時間とExtendScriptで指定した時間とでは0.03秒程度ずれます。(なぜ?)
そこで、バッドノウハウ気味ですが最初の拍の位置に手動でマーカーを打って、その秒数をExtendScriptで取得し、BPMに応じて一定間隔でマーカーを追加していくスクリプトにしました。

var MUSIC_LENGTH = 290; // 楽曲の長さ(秒)
var MUSIC_BPM = 130; // 楽曲のBPM

var Markers = app.project.activeSequence.markers;
var firstMarker = Markers.getFirstMarker();
var startTime = firstMarker.start.seconds;
var endTime = startTime + MUSIC_LENGTH;
var interval = 60 / MUSIC_BPM;

for (var i = startTime; i < endTime; i += interval) {
    Markers.createMarker(i);
}

after.png
final.png

おわりに

GUIは直感性などで優れている反面、繰り返しや単純作業が多いとかえって負担になることもあります。
ExtendScriptによって、GUIとCUIの良いとこどりをした制作ができますので、ぜひ活用してみてください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away