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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值