【字幕】字幕特效入门

前言

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

python 复制代码
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-background

io = 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.size

def 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_time
        l.end_time = line.end_time

        syl_width = syl.width
        syl_height = syl.height
        scale_x = fill_width / syl_width
        scale_y = fill_height / syl_height

        for pixel in Convert.text_to_pixels(syl):
            x, y = math.floor(syl.left) + pixel.x, math.floor(syl.top) + pixel.y
            print(x,y)
            x2, y2 = x, y
            alpha = ("\\alpha" + Convert.alpha_dec_to_ass(pixel.alpha) if pixel.alpha != 0 else "")
 
            img_x = int(pixel.x * scale_x) % fill_width
            img_y = int(pixel.y * scale_y) % fill_height
 
            color = 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站示例

相关推荐
AI云原生36 分钟前
云原生系列Bug修复:Docker镜像无法启动的终极解决方案与排查思路
运维·服务器·python·docker·云原生·容器·bug
万粉变现经纪人2 小时前
如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
开发语言·python·scrapy·flask·beautifulsoup·pandas·pip
查士丁尼·绵4 小时前
笔试-九宫格三阶积幻方
python·九宫格·三阶积幻方
l1t6 小时前
DeepSeek辅助利用搬移底层xml实现快速编辑xlsx文件的python程序
xml·开发语言·python·xlsx
大飞记Python6 小时前
部门管理|“编辑部门”功能实现(Django5零基础Web平台)
前端·数据库·python·django
查士丁尼·绵8 小时前
笔试-羊狼过河
python
摸鱼的老谭8 小时前
构建Agent该选Python还是Java ?
java·python·agent
鄃鳕9 小时前
python 字典 列表 类比c++【python】
c++·python
可触的未来,发芽的智生9 小时前
新奇特:黑猫警长的纳米世界,忆阻器与神经网络的智慧
javascript·人工智能·python·神经网络·架构
程序员三藏9 小时前
Jmeter接口测试与压力测试
自动化测试·软件测试·python·测试工具·jmeter·接口测试·压力测试