Skip to content

roundhead/tcaxLearn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

TCAX 教程

说是教程,其实也就是按照方便学习的顺序总结了一下milkyjing大神(TCAX的作者)写的各种文档教程。

TCAX 的基本原理

使用ass/ssa 做字幕特效时,可以按句为单位添加各种效果,包括模糊,变换,位移,透明等。 这里 有一份ass/ssa 的命令说明。然而仅靠 这些命令完成一些复杂的特效会过于麻烦,这就是为啥需要TCAX。

TCAX所做的事情很简单。它读入字幕文件(需要有卡拉ok轴),对于卡拉ok的每一个单字,运行一个 python脚本来生成相应动画效果的ass代码。我们可以通过编辑这个python 脚本来控制特效。TCAX可 以为我们的python脚本提供各种相应的数据,包括

_i		  #第_i句, 即当前操作的文字所在的句子序号
_j		  #第_i句中的第_j个文字, 即当前操作文字在该行中的序号
_n		  #第_i句中有_n个文字, 即当前句子所包含的文字数
_start	#句子的开始时间, 单位为10毫秒
_end		#句子的结束时间, 单位为10毫秒
_elapk	#到第_j个字经过的时间, _start + _elapk 到 _start + _elapk + _k 即为当前文字的存在时间, 单位为10毫秒
_k		  #第_j个文字的卡拉OK时间, 单位为10毫秒
_x		  #第_j个文字的水平坐标
_y		  #第_j个文字的垂直坐标
_a		  #第_j个文字的水平跨距, 可以看作文字的宽度, 同样_Fs也可近似看成文字的高度
_txt		#第_j个文字的内容

比如要实现一句的每个字依次出现,只要把出场时间设置在_start+dt*_j 即可。(这里 的dt是两个字之间的时间差,可以随意调整)。

TCAX 安装

首先需要安装一些外部依赖:点我

其中4我用的是k-lite。根据我的经验,要正常播放avs似乎要先安装k-lite然后再安装avsynth。

TCAX本体在这里下载。

另外windows下编辑python脚本文件的工具,我虽然一直用Emeditor, 不过还是要推荐一下atom

初学教程

这里 有一个很好的初级教程, 照着做一做,尝试用一用各种内置特效,可以快速帮助理解TCAX可以做什么。关于该教程提供的实例, 这里附上一些说明:

  • preview.avs 是一个avs文件,可以用任何文本编辑器编辑。avs是avsynth文件的扩展名, 它可以用来处理视频。好处是所有的视频处理流程(缩放,裁剪,滤镜)都是用命令语句完成的,因此 一劳永逸。

    压制不都是要写AVS的吗 by 某驴

    我们这里的这个avs其实只做两件事,一是载入显示ass字幕需要的滤镜,二是载入对 应的影片和字幕。 为了载入滤镜,你需要修改一下preview.avs 文件并将 LoadPlugin 里的地址改成TCAX安装地址。 另外实际做字幕的时候有一些很有用的avs语句,可以在没视频的 时候用一个空白的视频冒充,或者缩放原视频测试字幕在不同分辨率下的效果。(未完待续,之后补充)

  • test.tcc TCAX的主要文件之一,用来告诉TCAX要用读取哪个文件作为卡拉OK轴,使用哪个 python文件作为脚本,还有输出字幕的字体,位置,大小等。

  • test_k.ass 卡拉ok轴,关于如何有效的拉卡拉OK轴,我之后再单独解释。注意,卡拉OK轴 本身是个ass字幕文件,但是它除了时间之外的所有东西都会被忽略,也就是说在这里设置字体,位置, 颜色都是没用的。

这个教程使用的全是内置特效,也就是TCAX实现提供的一些python脚本。学会了这个就可以接着愉快的 学习如何自己写python脚本辣!

进阶-如何给TCAX写python脚本

python 是一种简单易学的脚本语言。

python并不难学过如果仅仅是为了TCAX的话,多改改样例的python脚本就可以大致掌握需要的 知识了(?)(等我有空补充一点简单的python知识)

这里是TCAX作者给出的一个 样例。(猫神八百万= =)以Nekogami_OP.py为例,49行以前可以不用动,后面则是特效的主要部分

  • 49到51 测试是奇数行还是偶数行,给他们设置不同的位置,来实现双行字幕的效果。
  • 55到66和69到79行分别是偶数行和奇数行的进入和淡出效果。以55-66为例:
    • 55-58行计算了单个字的进入和消失效果的关键时间点。t0到t1是进入效果持续的时间段, t2-t3是消失效果持续的时间段。注意这个关键时间点是以10毫秒为单位的,而后面具体动画效果 里涉及到的时间是以毫秒为单位的。
    • 60行描述了这个字进入的时候如何移动。
    • 61行描述了字在进入的时候大小和透明度如何变化(从1.5倍,alpha通道200变成1倍大小, alpha通道0,效果耗时500毫秒,加速度1.2)
    • 62行把上面两个效果实际应用到字上。
    • 64-66行类似。
  • 82行是存在效果,也就是进场之后,出场之前字的状态。
  • 87-95行是卡拉OK效果,也就是这个字被唱到时的效果,注意这里te和ts,效果的开始和结束时间 是怎么算出来的。因为和60-62行本质上是相同的,不多解释了。

我的建议是首先运行tcc文件,看看能不能生成可以观赏的字幕文件。如果可以的话,就随便改一改上面 提到的那些行。修改修改数字,删掉一部分等,看看会出现什么效果。

现在问题来了,如果想加入自己的特效怎么办呢?这里 有一个TCAX可以使用的函数总结,刚刚出现的fsalpha都在这里。这个网页有些过于 简洁了,好在这些函数基本和ass本来的命令同名,所以如果不清楚某个函数怎么用,可以参考本文一 开始提到的ass/ssa命令说明。

(之后补充一些主要会用到的函数)

TCAS-像素级字幕

上面的脚本运行后会给出一个很大的ass文件。然而如果有一些特别的需求,比如嵌入图片,给字加纹 理等,用ass实现就过于麻烦了。因此TCAX还有另一种输出方法,即TCAS。

TCAS的说明在此,然而这东西 有点难用,能不用还是不要用了吧。。。

(上面的链接蛮详细的,等我有空补充细节)

一些注意点

  • 表示绝对时间点的时间(包括\_k,\_start,\_end,\_elapk)都是以10毫 秒为单位的。但是animationmove系列的函数里时间用的是毫秒为单位。这个似乎和ass里面对应位置 的时间单位有关。

  • 彩虹效果如何实现?彩虹渐变其实是在HSV空间里固定S和V,让H从0变到1。在TCAX里,每一行中(_j-1)/(_n-1) 这个量从左到右也是从0变到1,因为第一个字时_j=1,最后一个字时_j=_n。所以只要 从网上抄一个hsv到rgb色域转换的函数,然后给每个字算一下颜色就行啦!!

About

tcax 学习教程

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published