AE怎么导入SRT文件?不需要任何脚本插件,却能一键生成
自CC2018版本的AE以来,您可以导入JSON文件以创建数据驱动的动画。那么,JSON文件基本上只是文本吗?所以这让我思考; “如果我尝试导入SRT文件而不是JSON会怎样?” 事实证明,如果在导入文件对话框中省略文件掩码(所有文件(*。*)),您实际上可以导入* .srt文件。运用
footage(“filename.srt”).sourceText
如果显示SRT文件的(完整)内容,则作为textLayer的源文本上的表达式。我现在要做的就是解析内容,获取及时,出时和实际的子,并在正确的时间显示所有内容。请注意,我不是程序员,所以可能有一个比这更好,更有效,更漂亮的解决方案,但这是我的工作解决方案:
var subFile = “sub.srt”;
var lines = footage(subFile).sourceText.split(‘\n\r\n’);
for (n = 0; n
if (time >= srt(lines, n).start && time
sourceText = srt(lines, n).sub;
break;
} else {
sourceText = “”;
}
}
//————————————
function srt(lines, i) {
origin = lines[i].split(‘\n’);
ID = parseInt(origin[0]);
startText = origin[1].match(/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]/)[0].replace(“,”, “:”);
endText = origin[1].match(/\s[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]/)[0].replace(‘ ‘, ”).replace(“,”, “:”);
var subtitle = “”;
for (var j = 2; j
}
return {id:ID, start:parseTime(startText), end:parseTime(endText), sub:subtitle};
}
//————————————
function parseTime(str) {
hours = parseInt(str.split(‘:’)[0]);
minutes = parseInt(str.split(‘:’)[1]);
seconds = parseInt(str.split(‘:’)[2]);
millisesconds = parseInt(str.split(‘:’)[3]);
t = (hours*60*60) + (minutes*60) + seconds + (millisesconds/1000);
t = Math.round(t*100)/100;
return t;
}
您只需将上面的表达式放在TextLayer的Source Text属性中,并将“sub.srt”替换为导入的字幕文件的名称。
本站仅供资源信息交流学习,不保证资源的可用及完整性,有任何问题请联系站长
加入终身VIP:全站资源免费+售后答疑服务 了解一下,网站的发展方向以终身VIP为主
转载文章请注明出处
果味酱CG小屋 » AE怎么导入SRT文件?不需要任何脚本插件,却能一键生成