AE怎么导入SRT文件?不需要任何脚本插件,却能一键生成

自CC2018版本的AE以来,您可以导入JSON文件以创建数据驱动的动画。那么,JSON文件基本上只是文本吗?所以这让我思考; “如果我尝试导入SRT文件而不是JSON会怎样?” 事实证明,如果在导入文件对话框中省略文件掩码(所有文件(*。*)),您实际上可以导入* .srt文件。运用

  1. footage(“filename.srt”).sourceText  

如果显示SRT文件的(完整)内容,则作为textLayer的源文本上的表达式。我现在要做的就是解析内容,获取及时,出时和实际的子,并在正确的时间显示所有内容。请注意,我不是程序员,所以可能有一个比这更好,更有效,更漂亮的解决方案,但这是我的工作解决方案:

  1. var subFile = “sub.srt”;  
  2.   
  3. var lines = footage(subFile).sourceText.split(‘\n\r\n’);  
  4.   
  5. for (n = 0; n < lines.length; n++) {  
  6. if (time >= srt(lines, n).start && time < srt(lines, n).end) {  
  7. sourceText = srt(lines, n).sub;  
  8. break;  
  9. } else {  
  10. sourceText = “”;  
  11. }  
  12. }  
  13.   
  14. //————————————  
  15. function srt(lines, i) {  
  16. origin = lines[i].split(‘\n’);  
  17. ID = parseInt(origin[0]);  
  18. startText = origin[1].match(/^[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]/)[0].replace(“,”, “:”);  
  19. 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(“,”, “:”);  
  20. var subtitle = “”;  
  21. for (var j = 2; j < origin.length; j++) {  
  22. subtitle = subtitle + origin[j] + ‘\n’;  
  23. }  
  24. return {id:ID, start:parseTime(startText), end:parseTime(endText), sub:subtitle};  
  25. }  
  26.   
  27. //————————————  
  28. function parseTime(str) {  
  29. hours = parseInt(str.split(‘:’)[0]);  
  30. minutes = parseInt(str.split(‘:’)[1]);  
  31. seconds = parseInt(str.split(‘:’)[2]);  
  32. millisesconds = parseInt(str.split(‘:’)[3]);  
  33. t = (hours*60*60) + (minutes*60) + seconds + (millisesconds/1000);  
  34. t = Math.round(t*100)/100;  
  35. return t;  
  36. }  

您只需将上面的表达式放在TextLayer的Source Text属性中,并将“sub.srt”替换为导入的字幕文件的名称。

积分获取方式:发文赚钱+签到积分+推广返利+充值
本站仅供资源信息交流学习,不保证资源的可用及完整性,有任何问题请联系站长
加入终身VIP:全站资源免费+售后答疑服务 了解一下,网站的发展方向以终身VIP为主
你可以填一下网站发展的问卷调查:https://www.wenjuan.com/s/auY7vaL/ 以便我更好帮助你
转载文章请注明出处
果味酱CG小屋 » AE怎么导入SRT文件?不需要任何脚本插件,却能一键生成

发表回复