Skip to main content
Inspiring
May 23, 2019
解決済み

複数の時間指定でマーカーを自動挿入

  • May 23, 2019
  • 返信数 3.
  • 2169 ビュー

現在、以下のような複数の時間にマーカーをひとつずつ入れています。

こういった作業はスクリプト等を使うことで一度にマーカーを入れることは可能なのでしょうか?

もしくは、他の方法で可能なのでしょうか。

先ほど、こちらの掲示板でスクリプトの可能性についてアドバイスいただきまして

”もしかしたらこれもできるのかも”

と欲が出てきてしまい、連続して質問してしまいました。

この作業が自動化できれば劇的に時間の短縮ができるので、もし、ご存知の方がいましたらアドバイスいただければ非常に助かります。

或いは不可能であれば、その旨お伝えいただければありがたい限りです。

0;00;29;06

0;00;57;20

0;01;39;25

0;02;22;18

0;03;17;15

0;03;35;00

0;04;06;11

0;04;56;24

0;05;26;29

0;06;09;04

0;07;05;15

0;07;36;17

0;08;01;25

0;08;34;13

0;09;24;21

0;09;45;18

0;10;17;15

0;10;52;19

恐れ入りますがよろしくお願いいたします。

    このトピックへの返信は締め切られました。
    解決に役立った回答 Mukaida

    スクリプトでマーカーは追加できます。

    下記サイトに、スクリプトと説明が公開されているのでご確認ください。

    今こそ覚えたいマーカーの基本 at AEP Project

    以前に、Premiere Proのマーカーを追加するスクリプトを下記スレッドに掲載しているので、2個のスクリプトを組み合わせて、コンポジションマーカーを連続で追加するようにしてみました。

    シーケンスマーカーをクリップマーカーに一括変換したい

    注意するところは、時間表示の最後の2桁は、スクリプトでフレーム数から秒数に変換しています。(入力はフレーム数のままで可)

    そのためか?マーカーの時間が1フレームずれる現象が出て、原因もわからないため、もし時間がずれている場合は 入力する時間に1フレーム追加して下さい。

    それと、最初の桁も2桁(00)にしてサンプルと同じ桁数にしてください。

    <追記>

    スクリプト 5行目の設定で、1フレームずれる現象を調整できるようにしました。

    しかし、この時間による方法は、小数点以下の計算で誤差が生じるため、ピッタリの時間にマーカーを追加することは出来ませんでした。

    次の返信(Kenji OKIRUMEさん)にあるスクリプトも試されてはどうでしょう。

    //  <5月24日更新>

    //

    var inTime = new Array('00:00:01:06','00:00:02:11','00:00:04:03','00:00:06:15','00;03;36;28') ;        // ここに イン データ入力

    var adjust = 1 ;         // マーカー位置の誤差を微調整 0 ~ 1

    var comp=app.project.activeItem;

    var fps = comp.frameRate ;

    for (var i=0 ; i < inTime.length ; i++){

        var mkIn= (Number(inTime.slice(0,2))* 3600 + Number(inTime.slice(3,5)) *60 + Number(inTime.slice(6,8))) + (Number(inTime.slice(9,11))+adjust)* comp.frameDuration ;

    var compMarker = new MarkerValue("コンポマーカー");        //マーカーコメント

    compMarker.duration = 0;        //マーカーデュレーション

    comp.markerProperty.setValueAtTime(mkIn, compMarker);

    }

    スクリプトの操作は、Extend Script Toolを使用してください。

    このスクリプトは、エラー時の対応は組み込んでいませんが、誤動作の際の対処はESTでスクリプトを停止できます。

    <追記 2>

    スクリプトでマーカーを追加すると下図のように、±1 フレーム以内の誤差が出ます。

    修正方法は、マーカーのプロパティを表示して時間を再設定してOKすれば、手作業でマーカーを追加したのと同じ位置に移動します。

    コンポジションマーカーおよびレイヤーマーカーをコピーする作業であれば、下記スクリプトで正確にコピーできます。

    redefinery.com: rd: Copy Comp Markers

    redefinery.com: rd: Copy Markers

    コピーの場合は、コピーもペーストも秒単位の時間で処理するために、誤差はありません。

    返信数 3

    Community Expert
    May 25, 2019

    下記の方法にすれば、正確にマーカーを追加できます。

    まず、時間は末尾の2桁は秒数表示にするため、マーカーの位置にインジケーターを移動させて、下記のスクリプトを実行します。

    var aTime=app.project.activeItem.time;

    alert(aTime)

    現在時間が表示されるので、コピーしてメモをします。

    コピーできないときは、コンテキストメニューのコピーを実行してください。

    メモをしたデータを下記スクリプトに入力して、実行するとコンポジションマーカーが作成されます。

    var inTime = new Array('2.63596930263597','6.90690690690691','11.9786453119786') ;        // ここに データ入力

    var comp=app.project.activeItem;

    var fps = comp.frameRate ;

    for (var i=0 ; i < inTime.length ; i++){

        var mkIn= Number(inTime);

    var compMarker = new MarkerValue("コンポマーカー");        //マーカーコメント

    compMarker.duration = 0;        //マーカーデュレーション

    comp.markerProperty.setValueAtTime(mkIn, compMarker);

    }

    Kenji OKIRUME
    Legend
    May 23, 2019

    こういうのがありました。

    322_MarkerCommentEditor - AEエンジョイ勢

    UIパネルがあるので分かり易いですし、

    既に追加されているマーカー情報の取得と変更が出来て便利そうです。

    ただし、単位が秒数(+ミリ秒)ではなくフレーム数でした。

    挙げて頂いているタイムは秒数(+ミリ秒)秒数(+フレーム数)だと思いますが、

    これをフレーム数に変換できれば一気にコピペでいけるのではないでしょうか?

    Mukaidaさんもそうですが、スクリプト書ける方ってスゴイですね!

    ー追記ー

    ①下記のような記載がありました。

    追加できるマーカーはレイヤーマーカーだけのようです。

    ②コンポジションマーカーの情報を取得した際に、

    エフェクトコントロールパネルとプロジェクトパネルの順番が入れ替わる現象がありました。

    取得前はプロジェクトパネルを左側に置いてました。

    ③コンポジション設定において「0フレームから開始」がデフォルト設定のようです。

    変更している場合はそのフレーム数だけAeの表示とズレます。

    ザッと触ってみただけですが、ご参考になれば…。

    MukaidaCommunity Expert解決!
    Community Expert
    May 23, 2019

    スクリプトでマーカーは追加できます。

    下記サイトに、スクリプトと説明が公開されているのでご確認ください。

    今こそ覚えたいマーカーの基本 at AEP Project

    以前に、Premiere Proのマーカーを追加するスクリプトを下記スレッドに掲載しているので、2個のスクリプトを組み合わせて、コンポジションマーカーを連続で追加するようにしてみました。

    シーケンスマーカーをクリップマーカーに一括変換したい

    注意するところは、時間表示の最後の2桁は、スクリプトでフレーム数から秒数に変換しています。(入力はフレーム数のままで可)

    そのためか?マーカーの時間が1フレームずれる現象が出て、原因もわからないため、もし時間がずれている場合は 入力する時間に1フレーム追加して下さい。

    それと、最初の桁も2桁(00)にしてサンプルと同じ桁数にしてください。

    <追記>

    スクリプト 5行目の設定で、1フレームずれる現象を調整できるようにしました。

    しかし、この時間による方法は、小数点以下の計算で誤差が生じるため、ピッタリの時間にマーカーを追加することは出来ませんでした。

    次の返信(Kenji OKIRUMEさん)にあるスクリプトも試されてはどうでしょう。

    //  <5月24日更新>

    //

    var inTime = new Array('00:00:01:06','00:00:02:11','00:00:04:03','00:00:06:15','00;03;36;28') ;        // ここに イン データ入力

    var adjust = 1 ;         // マーカー位置の誤差を微調整 0 ~ 1

    var comp=app.project.activeItem;

    var fps = comp.frameRate ;

    for (var i=0 ; i < inTime.length ; i++){

        var mkIn= (Number(inTime.slice(0,2))* 3600 + Number(inTime.slice(3,5)) *60 + Number(inTime.slice(6,8))) + (Number(inTime.slice(9,11))+adjust)* comp.frameDuration ;

    var compMarker = new MarkerValue("コンポマーカー");        //マーカーコメント

    compMarker.duration = 0;        //マーカーデュレーション

    comp.markerProperty.setValueAtTime(mkIn, compMarker);

    }

    スクリプトの操作は、Extend Script Toolを使用してください。

    このスクリプトは、エラー時の対応は組み込んでいませんが、誤動作の際の対処はESTでスクリプトを停止できます。

    <追記 2>

    スクリプトでマーカーを追加すると下図のように、±1 フレーム以内の誤差が出ます。

    修正方法は、マーカーのプロパティを表示して時間を再設定してOKすれば、手作業でマーカーを追加したのと同じ位置に移動します。

    コンポジションマーカーおよびレイヤーマーカーをコピーする作業であれば、下記スクリプトで正確にコピーできます。

    redefinery.com: rd: Copy Comp Markers

    redefinery.com: rd: Copy Markers

    コピーの場合は、コピーもペーストも秒単位の時間で処理するために、誤差はありません。

    Inspiring
    May 25, 2019

    Mukaidaさま Kenji OKIRUMEさま

    貴重なアドバイスを頂きましてありがとうございました。

    スクリプトの使い方が慣れていないので返信するのに時間がかかりまして大変失礼いたしました。

    1フレームくらいの誤差は全然許容範囲ですので、Mukaidaさまに最初に書いていただいたスクリプトを使わせて頂こうと思います。

    こんなに短時間に、こんなに素晴らしいスクリプトを書いてくださりまして本当にありがとうございました。

    Kenji OKIRUMEさまにも大変親身にアドバイスいただきまして本当にありがとうございました。

    大変助かり感謝に堪えません。

    Community Expert
    May 25, 2019

    beijings31041233さん

    スクリプトが動作したようで安心しました。

    ネットに貼られているスクリプトを使う場合は、Adobe製品全般でAdobe ExtendScript Toolkitを使えば、スクリプトメニューのないアプリでもスクリプトは動作します。

    下記リンクにESTKの簡単な使用方法も記載しています。

    シーケンスマーカーをクリップマーカーに一括変換したい

    あと、時間データの:と;は、どちらでも動作するようになっています。

    Premiereから出力したデータを元に作ったスクリプトなので、:をそのまま使っています。