当前位置: 首页 > news >正文

【字幕】字幕特效入门

前言

最近两周调研了一下字幕特效的底层程序逻辑,因为工作内容的原因,就分享几个自己找的链接具体细节就不分享了,CSDN也是我的个人笔记,只记录一些简单的内容用于后续自己方便查询,顺便帮助一下正在苦苦查阅资料入门的路人。总体来说先利用Aegisub学习ASS文件的字幕特效标签,然后借助脚本编写复杂的特效脚本,例如Python的pyonFX,以及c上位机python脚本的TCAX。Aegisub的lua脚本。如果是剪辑人员可以采用Pr+Ae以及剪映。本文章是程序化的字幕特效实现。
GITHUB pyonFX
Aegisub - 大神之路
关键字
字体添加背景

from pyonfx import *
import numpy as np
from PIL import Image
import math#https://stackoverflow.com/questions/50297272/how-to-draw-text-with-image-in-backgroundio = Ass("in.ass")
meta, styles, lines = io.get_data()
img_path = "d:\Download\CgdkT.png"   fill_image = Image.open(img_path)
fill_image = fill_image.convert('RGBA')
fill_np = np.array(fill_image)
fill_width, fill_height = fill_image.sizedef romaji(line, l, fill_np, fill_width, fill_height):p_sh = Shape.rectangle()for syl in Utils.all_non_empty(line.syls):l.start_time = line.start_timel.end_time = line.end_timesyl_width = syl.widthsyl_height = syl.heightscale_x = fill_width / syl_widthscale_y = fill_height / syl_heightfor pixel in Convert.text_to_pixels(syl):x, y = math.floor(syl.left) + pixel.x, math.floor(syl.top) + pixel.yprint(x,y)x2, y2 = x, yalpha = ("\\alpha" + Convert.alpha_dec_to_ass(pixel.alpha) if pixel.alpha != 0 else "")img_x = int(pixel.x * scale_x) % fill_widthimg_y = int(pixel.y * scale_y) % fill_heightcolor = fill_np[img_y, img_x]color_bgr = "&H{:02X}{:02X}{:02X}&".format(color[2], color[1], color[0])l.text = f"{{\\p1\\an7\\1c{color_bgr}\\pos({x},{y}){alpha}}}{p_sh}"io.write_line(l)for line in lines:if not line.comment:romaji(line, line.copy(), fill_np, fill_width, fill_height)io.save()
io.open_aegisub()
#ALKOON

Tips:除了主颜色外,其它颜色设置为透明
在这里插入图片描述
基本字幕特效
lua语法
国语视界
TCAX
B站示例

http://www.lryc.cn/news/401765.html

相关文章:

  • Ubuntu 24.04安装Jellyfin媒体服务器图解教程
  • css3 中的伪类和伪元素
  • 人工智能导论-知识图谱
  • LabVIEW液压数据采集测试系统
  • 工业三防平板助力工厂生产数据实时管理
  • LabVIEW人工模拟肺控制系统开发
  • 达梦 ./disql SYSDBA/SYSDBA报错[-70028]:创建SOCKET连接失败. 解决方法
  • Autosar RTE配置-Assembly和Delegation的使用-基于ETAS软件
  • 【网络安全】PostMessage:分析JS实现XSS
  • liosam复现
  • Flutter实战小案例
  • uniapp转小程序,小程序转uniapp方法
  • WPF中Frame
  • 大数据基础:Doris重点架构原理
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • k8s核心操作_存储抽象_K8S中使用ConfigMap抽取配置_实现配置热更新---分布式云原生部署架构搭建032
  • 【前端】SpringBootWeb 篇-入门了解 Spring Cache、Spring Task与WebSocket 框架
  • 应用最优化方法及MATLAB实现——第4章代码实现
  • 搜维尔科技:Riablo提供一种创新的康复解决方案,通过激活本体感觉,并通过视听反馈促进神经肌肉的训练。
  • NodeJS技巧:在循环中管理异步函数的执行次数
  • debian 实现离线批量安装软件包
  • 远程开机准备工作
  • PGCCC|【PostgreSQL】PCA+PCP+PCM等IT类认证申报个税退税指南
  • 让AI语言模型自由飞翔:LangChain框架的奇妙世界
  • solidity基础语法(以太坊solidity合约)
  • 【机器学习实战】电力需求预测挑战赛 Datawhale AI 夏令营 task2
  • 【设计模式】【创建型模式】【02工厂模式】
  • FPGA设计中的流水线 -分割大的计算电路可以更快的处理数据。
  • GNU/Linux - U-BOOT的GPIO command
  • 35.UART(通用异步收发传输器)-RS232(2)