Skip to main content
Participant
June 25, 2025
Question

コンポのデュレーションをテキストに反映させる方法

  • June 25, 2025
  • 2 replies
  • 190 views

コンポジションのデュレーションをテキストのソーステキストでのエクスプレッションにて表示させる方法はありますでしょうか。

理想としては0+0のような表記で数字の値が変わっていくものだと理想通りです。

コンポジション設定によりデュレーションを変えるとテキストもそれに反映されて変わるといった具合にやりたいです。

    2 replies

    Participating Frequently
    June 26, 2025

    アニメなどの秒+コマ表記なら一旦フレーム数にしてfpsで割って商と余りを加工するといった方法がありますが
    timeToFeetAndFramesを使ったほうが簡単かもです。

     

    全体尺の場合

    var fps = 1/thisComp.frameDuration;
    timeToFeetAndFrames(t=thisComp.duration, fps=fps, feetPerFrames=Math.ceil(fps), isDuration=true).replace(/^0{1,2}/,'')

     

    現在の時間の場合 

    var fps = 1/thisComp.frameDuration;
    timeToFeetAndFrames(t=time, fps=fps, feetPerFrames=Math.ceil(fps)).replace(/^0{1,2}/,'')

     

    フィートフレーム表記は0000+00のようになるので先頭の0を2文字まで消すようにしています。

    ただしプロジェクト設定の時間の表示形式がフレームで、フレーム数が1から開始になっている必要があり、コンポジション設定でも確認できますが、一般的にはこの設定になっていると思いますので大丈夫かと思います。

    Community Expert
    June 26, 2025

    0+0は、何を表しているのでしょうか?
    例として、秒数+フレームにすると下記コードで表示できます。

    const d = thisComp.duration;
    const s = Math.floor(d);
    const f = timeToFrames(d - s)
    s + "+" + f

     

    但し、このエクスプレッションでは、デュレーションのフレーム数が00以外の場合、1フレーム異なる値を表示することがあります。

    Community Expert
    June 26, 2025

    <追記>

    フレーム数の計算方法を変えた別案でもインターレースの場合、1フレーム増えてしまいます。
    十分検証してインターレースが全て1フレーム増えている様なら、3行目に -1  をインターレースの時だけ追加することで対処できるかもしれません。

     

    プログレッシブ

    const d = timeToFrames(thisComp.duration);
    const s = Math.floor(thisComp.duration);
    const f = d - timeToFrames(s);
    s + "+" + f

     

    インターレース:

    const d = timeToFrames(thisComp.duration);
    const s = Math.floor(thisComp.duration);
    const f = d - timeToFrames(s) -1;
    s + "+" + f

     

    Community Expert
    June 26, 2025

    <追記>
    下記リンクの「Time Conversion のメソッド(エクスプレッションのリファレンス)」を参考にして、インターレースに対応した方法で変換すればコンポジションのデュレーションを表示できます。
    但し、0+0の表記は、タイムコードではフィルムを使用した撮影になるので表示は異なります。
    After Effects でのエクスプレッション言語 

     

    インターレース:

    const d = thisComp.duration;
    timeToNTSCTimecode(d)