AE脚本获取当前预览时间的方法

编程入门 行业动态 更新时间:2024-10-11 13:26:09

AE<a href=https://www.elefans.com/category/jswz/34/1771291.html style=脚本获取当前预览时间的方法"/>

AE脚本获取当前预览时间的方法

该方法仅对部分情境进行了测试,实际应用可能存在很多缺陷,希望有大神给出更加好的方法。

代码如下:

var s = app.project.numItems; 
s = app.project.item(s).time;
s = timeToCurrentFormat(s, 30);alert(s, 'alert dialog');

表达式讲解

1. 第一行app.project.numItems得到的是当前项目面板中的素材总数量(包括文件、文件夹)(背景知识见AE脚本 app.project.item(index) 讲解)

2. 获得了素材总数量,假设该值为34,那么第二行的app.project.item(s).time就表示第34个素材(item)的当前时间值

为什么要取最后一个item的时间值呢?因为不同的item其时间值是不一样的。我的最后一个素材是视频文件,所以得到的时间值正好是当前预览时间值。比如我的时间线调在0:00:30:02这个位置,那么此时我获得的时间值就是30.1134467801134

3. 显然上面这个时间值是不方便的,我们还要对它进行一次转制,转换表达式是一个全局通用的表达式,所以我们可以直接写timeToCurrentFormat(s, 30)

第二个参数是帧率,表示“30fps”,这个值是我随便取的,所以可能与实际情况不符,改进方法详见文末。

4. 最后一行alert(s, 'alert dialog');就很简单了,只是弹出一个对话窗口,窗口标题为“alert dialog”,窗口内容为转码后的时间值(即本文中的0:00:30:02

该方法存在的缺陷

  1. 如果最后一个item不是视频,会导致时间值出错
  2. 该方法效率和稳定性都比较低
  3. 帧速率是自己随手取的,可能会与实际视频帧率不一致
  4. 理论上应该有更简单稳定的方法来实现,希望有大神能够指点一下

一些改进

通过判断条件来准确地获得含有视频的合成项

之前我们是用最后一个item来取时间值的,所以肯定有非常大的问题,为了保证我们获得的是一个视频item,可以利用一个判断条件:

var s = app.project.numItems; // 获得项目面板的文件(及文件夹)总数// 通过遍历来得到视频item
// 为了节省时间,我选择从倒数第一个往前数
for (i = s; i > 0; i--){if (app.project.item(i).hasVideo && app.project.item(i).typeName == '合成') {// 这个判断条件为:1. 该item必须含有视频;2. item的类型必须是“合成”而非“素材”或“文件夹”s = app.project.item(i).time;break;} else if (i == 1) {// 如果遍历不到的话,就会报视频缺失的错误alert("there is no video compItem found!", 'warning');}
}

利用表达式获取当前视频的帧率

之前我们是随便取了一个值作为帧率,当该取值与实际视频帧率不符时,会导致时间码的末尾数字不相同。比如源素材的预览时间是0:00:30:02,而我们得到的会是0:00:30:03

下面我们来获取当前视频的帧率并交给变量x持有。完整代码如下:

var s = app.project.numItems; 
for (i = s; i > 0; i--){if (app.project.item(i).hasVideo && app.project.item(i).typeName == '合成') {s = app.project.item(i).time; // 获取该合成视频的当前时间(其格式为“30.1134467801134”)var x = app.project.item(i).frameRate; // 获取当前视频的帧速率s = timeToCurrentFormat(s, x); // 对时间进行转制并应用该帧速率break;} else if (i == 1) {alert("there is no video found!", 'warning');}
}alert(s, 'dialog');

参考

After Effects CS6 Scripting Guide - p15, 32, 36, 120

更多推荐

AE脚本获取当前预览时间的方法

本文发布于:2024-03-12 23:34:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732682.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:脚本   时间   方法   AE

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!