SSA/ASS动态字幕详解
一、基础篇:
我们先来了解一下ssa的基本结构,用记事本打开ssa文件,如下:
[Script Info]
ScriptType: v4.00
Collisions: Normal
PlayResX: 384
PlayResY: 288
Timer: 100.0000
[V4 Styles]
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,17,&HEFEFEF,&H000000,&H000000,&H0F0F0F,-1,0,1,1,0,2,30,30,2,0,1
ps:顺便讲一下ASS字幕格式:
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic,Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: ChText,宋体,17,&H00FFFFFF,&H00000000,&H00FF8000,&H00FF8000,-
1,0,0,0,100,100,0,0,1,1,2,2,0,0,2,134
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:04.16,0:01:00.46,Default,,0000,0000,0000,,--==圣城家园SCG字幕组仅供翻
译交流使用禁止用于商业用途
Dialogue: Marked=0,0:01:04.16,0:02:00.46,Default,,0000,0000,0000,,翻译:卉木萋萋听雨浪子\N校对:inmelae时间轴:九洲客
Dialogue: Marked=0,0:02:06.67,0:02:09.13,Default,,0000,0000,0000,,如果被他们发现了...
Dialogue: Marked=0,0:02:09.34,0:02:11.30,Default,,0000,0000,0000,,这儿的酒有上百万瓶
Dialogue: Marked=0,0:02:11.50,0:02:12.99,Default,,0000,0000,0000,,你觉得他们会知道少了一瓶么?
下面开始分析:
ssa/ass文件主要分为三大部分:[Script Info]、[v4 Styles]和[Events],各部分具体功能如下:[Script Info]——该部分包含了这个字幕文件的大致信息,"[Script Info]"在ssa字幕中必须是该脚本的第一行
ScriptType:v4.00版本号,默认即可(这个会影响字幕特效的一些命令,ssa用v4.00,ass用v4.00+)Collisions: Normal当字幕发生冲突时的处理方法,基本上都是Normal,没见过其他的-_-
PlayResX:该字幕所加载的影片的X轴长度。
PlayResY:该字幕所加载的影片的Y轴长度。
Timer: 100.0000时间的精确程度,用默认的100.0000即可。
PlayResX,PlayResY就是将屏幕画成坐标,左上角为(0,0),右下脚为(PlayResX,PlayResY)这两个数值最好与要转换出的影片的分辨率相同,这样在[Events]部分里确定坐标比较方便。
[v4 Styles]——该部分包含了这个字幕文件的样式与风格,包括字体,颜色,字号等等(注意英文的大小写)
Format行:该行是ssa/ass字幕样式的参数名称
Name:对一种字幕样式的命名。在[Events]部分里将引用该项。
Fontname:字体类型。就是仿宋体,黑体等。(※一定是你C:\WINDOWS\Fonts目录下有的字体)Fontsize:字体大小。常用范围8~72
PrimaryColour:主体颜色。6位十六进制BGR值,格式为&HBBGGRR(关于颜色后面详细介绍)SecondaryColour:第二颜色。格式同上。当一行字幕为了防止和其他字幕重叠而被自动移开时,为了以示区别就会显示出这种颜色。
TertiaryColour:边框颜色。ass中该字段为OutlineColour(描边颜色),格式同上
BackColour:阴影颜色。格式同上
Bold:是否使用粗体。0为关闭,1或-1为开启
Italic:是否使用斜体。0为关闭,1或-1为开启
Underline:下划线。0为关闭,-1为开启
Strikeout.:删除线。0为关闭,-1为开启
ScaleX:水平标尺。描述文字的宽度,单位[%]
ScaleY:竖直标尺。描述文字的高度,单位[%]
Spacing:字间距。字符之间的额外间隔,单位[像素]
Angle:角度。字幕行预先旋转过的角度,可以为浮点小数。单位[°]
BorderStyle:边框样式。1=描边+投下阴影,3=不透明方框(效果自己试验)
Outline:边框宽度。如果BorderStyle为1,那么这个字段指定描边的宽度,取值为0~4,数值越大,边框越粗
Shadow:阴影深度。如果BorderStyle为1,那么这个字段指定投下的阴影的深度,取值为0~4,数值越大,阴影越厚
Marked:标记符号.Marked=0为未标记,Marked=1为已标记
Start:字幕开始时间。精确到0.01秒,格式为0:00:00:00(Hrs:Mins:Secs:hundredths),注意小时的位置只有一位数
End:字幕结束时间。
Style:字幕样式名称。引用的是[v4 Styles]部分中的Name项,呼应上文。如果引用的样式不存在或者名称不对时,将采用缺省样式(Default)。如果[v4 styles]部分不存在"Default"样式的定义,将采用软件作者的缺省定义:字体使用"Aria",主色为白色,字符集为Western
Name:角色名。表示在对话中,这句话是哪个角色说的,只起一个注释作用,一般省略,省略后只留一个逗号。不要和[v4 Styles]部分的Name搞混。
MarginL:左边距。对[v4 Styles]部分的MarginL值进行重新设定。0000表示按照样式中定义的边距来显示,若不为零,则代替原值,此时原值不再起作用。
MarginR:右边距。对[v4 Styles]部分MarginR值进行重新设定。用法同上。
MarginV:垂直边距。对[v4 Styles]部分MarginV值进行重新设定。用法同上。
Effect:简易变换效果。可写可不写这是为方便使用动态效果而定义的代码,包含以下三种特效,只能选其一。
Scroll up;y1;y2;delay字幕向上滚动,y1,y2定义了向上滚动的字幕的出现位置和消失位置,delay是该段字幕移动时的延迟量,取值1~???,上限不定,数值越大,速度越慢。具体换算为文字每移动1,所需时间为(1000/delay)秒。
Scroll down;y1;y2;delay字幕向下滚动,方法同上。
Banner;delay;lefttoright,强制字幕做单行横向移动,lefttoright=0时,字幕由右向左移动,lefttoright≥1时,字幕由左向右移动。Banner主要用在片头的郑重声明。
Text:字幕文字区。在这里,我们可以添加各种静态、动态代码,来改变字幕文字的属性,实现绚丽的特效。
Dialogue语句:字幕的具体内容部分,所有的字幕内容都以Dialogue语句来表现。语句的书写格式就是Format语句说明的格式。
如果单纯的作为视频的字幕,到这里就可以了。当然我们是为了制作动态水印字幕,所以还要还要用到各种各样的代码来完成。
二、进阶篇:
静态代码:
※注意:所有代码必须以\开头,除换行和空格代码外,其余代码必须放在{ }内
\n换行。好像是当字幕在一行显示不完时才换行,不是很清楚
\N强制换行。
\h强制空格。示例:Dialogue:Marked=0,0:00:00.86,0:00:30.62,Default,,0000,0000,0000,,zgliu\h制作
{\b?}加粗。?=1,开启加粗;?=0,关闭加粗。
{\i?}斜体。?=1,开启斜体;?=0,关闭斜体。
{\u?}下划线。?=1,开启下划线;?=0,关闭下划线。
{\fn???}字体。???=字体名称。
{\fs???}字号。???=字体大小。
{\fsp???}字间距。???取值0~PlayResX
{\fsc(x or y)???}文字的高宽比。X为宽度,Y为高度,???为百分比,100%为正常。
{\bord???} 文字轮廓。???取值0~∞,取值越大轮廓越粗,0为无轮廓。
{\shad???}阴影深度。???取值0~∞,取值越大阴影越深,0为无阴影。
{\fr[x/y/z]?}字体旋转。x为绕x轴旋转,y为绕y轴旋转,z为绕z轴旋转(使用时选其一);? 为旋转角度(为正时逆时针转,为负时顺时针转)。
{\a&H(00~FF)&}更改字体透明度。00为不透明,FF为全透明
{\<1/2/3/4>a(00~FF)&H&}主/次/外框/阴影透明度设定
{\an?}设定字幕在屏幕上位置。?=1~9,位置分布按照小键盘数字的顺序。
{\k?}卡拉OK效果时,第二颜色的持续时间。单位0.01秒,比如{\k70} 就是持续0.7秒。如果{\k70}后面没有字幕文字,就在当前位置停留0.7秒。
{\c&H(bbggrr)&}更改主字幕颜色。bbggrr为六位的十六进制RGB值, 但是顺序与RGB相反,所以用BGR表示(比如,黄色的RGB值为FFFF00,我们就要写成00FFFF)。
{\<1/2/3/4>c&H(bbggrr)&}主/次/外框/阴影字幕颜色设定
{\r[