非常详细又非常基本的ASS代码

 

学好SSA主要从两个方面着手:一个是SSA文件的组成结构;一个是SSA代码。

一.SSA文件的组成结构

SSA文件主要由三大部分组成:[Script Info]部分,[v4 Styles]部分和[Events]部分。

1.[Script Info]部分

PlayResX: 384
PlayResY: 288

384×288是标准的4:3画面分辨率之一。ssa字幕里的坐标(字幕的位置)即根据这2个数值的范围来定义。16:9宽银幕的片子略做调整即可。
这里主要介绍文件本身和制作者的信息,这里面最重要的两项是PlayResX和PlayResY,它实际上是按给定的PlayResX和PlayResY数值将屏幕按比例化分,屏幕的左上角坐标为(0,0),右下角坐标为(PlayResX数值,PlayResY数值).这两个值最好是和视频文件的长宽相同,这样在下面 [Events]部分文本位置坐标的设定很方便而且准确.
当然这两个值也可能和原视频文件的长宽不同,比如视频文件尺寸为640×360,而PlayResX:384,PlayResY: 288,如同前面所说的,它是将屏幕长宽按384:288来化分的.一旦这样划定,下面的各种坐标设定都要以384和288为根据.
特别要注意的是:对于一个已经存在并且文本坐标都设置好的SSA文件,如果它的PlayResX和PlayResY数值和视频文件的长宽尺寸不符(包括成比例的情况,比如视频文件尺寸为640×360,而 PlayResX:320,PlayResY: 180),我们不要简单的把PlayResX和PlayResY数值改成屏幕尺寸,这样将导致字幕失真,是因为文本部分的尺寸并没有改,仍按照原来的PlayResX和PlayResY数值设定.如果有较多的坐标设定,就不要改原来的PlayResX和PlayResY数值,在原基础上编辑.

2.[V4 Styles]部分

这是个存放[Events]部分里所用到的各种字体信息的地方.可以存在多种字体,每种字体有多种特征.当[Events]部分的Name项引用到这里的某种字体时,则意味这该字体的各种特征也被引用.字体的特征还可以在文本行中修改,这将在[Events]部分讨论.
常见的字体属性有Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
我们可以再定义一个Style,并命名为mine,如Style: mine,华文新魏,18,&HFF0000,&HFF80FF0,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134
即可以这样:

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle,Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,华文彩云,18,&Hff0000,&Hff8080,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134
Style: mine,华文新魏,18,&HFF0000,&HFF80FF0,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134
有了具体经验后,一般可以不作调整,需要改动的可以是“Fontname”,如改成黑体, “Fontsize”,做字幕字号24比较合适。至于最后的“Encoding”,134表示简体中文的编码,繁体中文的编码为136。
下面对各项作一说明,并列出属性的取值及范围
Name —字体名称—[Events]部分将引用该项,比如Default,Font1等
Fontname —所使用的字型—比如黑体,楷体_GB2312等.对新载入的SSA文件,VOBSUB不会识别出宋体以外的字型,都按宋体输出.但可以在DirectVobSub中重新定义
Fontsize —字体大小—常用范围8-72
PrimaryColour —主体颜色—颜色格式为&HXXXXXX,十六进制,X取值为0-f
SecondaryColour —次要颜色—格式同上,卡拉OK中使用,即变色前的颜,变色后显示主体颜色
TertiaryColour —边框颜色—格式同上
BackColour —阴影颜色—格式同上

下面是一些常用颜色的代码,以便在文件中直接添加和编辑:
&Hffffff 白 &H8080ff 浅红
&H000000 黑 &H80ffff 浅黄
&H0000ff 深红 &HFF8000 亮蓝
&H00ffff 深黄 &H80ff00 浅绿
&Hff0000 深蓝 &H00ff00 亮绿
&H008000 深绿 &Hff00ff 紫红(偏紫)
&H0080ff 橙 &H8000ff 紫红(偏红)
&Hff0080 紫 &Hffff00 浅蓝

Bold —粗体—0关闭,-1开启
Italic —斜体—0关闭,-1开启

BorderStyle —边框样式—取值1:正常,取值3:有一覆盖区域
Outline —边框宽度—取值范围1-4,数字越大边框越宽
Shadow —阴影距离—取值范围0-4,数字越大阴影越厚
Alignment —对齐方式—这是重中之重,学懂对齐方式等于学懂了一半的SSA,其用法将在下面的代码部分作详细的介绍,这里只作简单的说明(下面各位置的数字就是Alignment的取值,很好记:从1-11,没有4和8这两个数,其余都是连续排列):
左 中 右
上 5 6 7
中 9 10 11
下 1 2 3
MarginL —字幕距左边的距离—取值范围0-PlayResX的数值
MarginR —字幕距右边的距离—取值范围0-PlayResX的数值
MarginV —字幕高度—取值范围0-PlayResY的数值

AlphaLevel—字体透明度—透明度格式为&HXX,十六进制,X取值为0-f
Encoding —编码—简体134,繁体138
3.[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
从这里开始就是字幕部分了,以“Dialogue: Marked=0,0:00:01.34,0:00:02.05,Default,,0000,0000,0000,,”定义开头。如果只是单纯做字幕用,那么这句后面就是字幕部分了,而字幕的格式根据[V4 Styles]里设置的来显示。Default可以换用上面设置的mine,那么显示的格式是按照mine里面设定!
这里是将[v4 Styles]部分中已定义的字体提供给字幕,并能对字体的各属性重新定义;通过特定的SSA代码实现特效.
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Marked—标记—一般都设为0
Start —字幕开始时间—格式0:00:00.00最小单位0.01秒
End —字幕结束时间—格式同上
Style —字体名称—引用的是[v4 Styles]部分中的Name项
Name —名字—注意这个Name和[v4 Styles]部分中的Name完全不同,相当于注释,一般省略,省略后只留一逗号.
MarginL—是对[v4 Styles]部分MarginL值的重新设定,0000表示采用原值;若不为零,则代替原值(此时原值不再起作用)
MarginR—是对[v4 Styles]部分MarginR值的重新设定,用法同上
MarginV—是对[v4 Styles]部分MarginV值的重新设定,用法同上
Effect—这里是SSA为编辑人员方便使用动态效果而自定义的代码,有Scroll up,Scroll down,Banner和Karaoke四种形式.为集中学习这里就不作介绍将其放到SSA代码部分说明.
Text—字幕区—在这里可以添加代码改变字体属性,实现多种特效
其实[v4 Styles]部分就是一个存放各种字体以及该字体属性初始值的一个场所,它的大小,颜色,字幕所在的位置等信息都放在这里;而[Events]部分则是把[v4 Styles]部分中的各个字体应用到文本中去,并且能够对已定义的字体的各种属性进行修改以达到需要的效果.打个比方,几种不同类型的木材,具有各自的原始尺寸颜色,经过加工改变大小涂上新的颜色(或者直接使用原料),从而做成各种家俱材料.[v4 Styles]部分就相当于放置这些原始木材的仓库,而[Events]部分则是执行怎样加工木材并将其安装到家俱上.

二.下面介绍SSA代码的用法

SSA代码

首先对下面代码中用到的符号说明一下:
<..>—参数
[..]—可选项
<../..>—任选其中一项
规定:所有代码之前加\
所有代码放在括号{}内,\N,\n,\h例外。
\N—换行—换行后两行之间没有空隙
\n—空格—或直接按空格键,超出范围自动换行
\h—空格—或直接按空格键

\b<0/1>—粗体—0关闭,1开启
\i<0/1>—斜体—0关闭,1开启

\bord<width>—边框宽度—width取值范围1-4,数字越大边框越宽
\shad<depth>—阴影距离—depth取值范围0-4,数字越大阴影越厚

\r<style>—改变字体—比如Default,Font1等
\r\r—恢复成最初的字体
\fn<font name>—改变字型—比如黑体,楷体_GB2312等
\fs<font size>—改变字号—常用范围8-72
\fsc<x/y><percent>—字符缩放—x代表水平方向,y代表垂直方向,perecet取不小于0的数(小数也可以).默认大小为100(即100%)
\fsp<pixels>—调整字间距—pixels取值在实数范围内,可以是正数,零,负数.默认值为0
\fr[<x/y/z>]<degrees>—旋转—x代表水平方向,y代表垂直方向,z是垂直于屏幕的坐标轴.degrees为正数时是逆时针旋转,为负数时是顺时针旋转.

\c&H<XXXXXX>—改变颜色—颜色格式为&HXXXXXX,十六进制,X取值为0-f,作用相当于\1c&H<XXXXXX>
\1c&H<XXXXXX>—改变主体颜色—格式同上
\2c&H<XXXXXX>—改变次要颜色—格式同上
\3c&H<XXXXXX>—改变边框颜色—格式同上
\4c&H<XXXXXX>—改变阴影颜色—格式同上

\alpha&H<XX>—改变透明度—透明度格式为\alpha&HXX,十六进制,X取值为0-f,同时改变字幕所有部分的透明度,取值越大,透明度越强
\1a&H<XX>—改变主体透明度—格式同上
\2a&H<XX>—改变次要透明度—格式同上
\3a&H<XX>—改变边框透明度—格式同上
\4a&H<XX>—改变阴影透明度—格式同上

\move(<x1>, <y1>, <x2>, <y2>[, <t1>, <t2>])—移动效果
x1,y1—移动开始的位置
x2,y2—移动结束的位置
t1,t2—移动开始和结束时间,省略后以字幕开始和结束时间为准
\pos(<x>, <y> )—位置改变—x和y是是改变位置后的坐标

\t([<t1>, <t2> ], [<accel>], <style modifiers> )—动态效果—可同时使用多个效果
t1,t2—动态效果开始和结束时间,单位为1毫秒,省略后以字幕开始和结束时间为准
accel—控制动态效果的运动速度,它的作用范围较大,能影响多行文本的动态速度. 默认值为1.当0<accel<1时,速度从快到慢减速运动;accel>1时,速度从慢到快加速运动
style modifiers可以使用的效果有\bord,\shad,\fsc<x/y>,\fsp,\fs,\fr[< x/y/z>],\move, \c,\<1/2/3/4>c,\alpha,\<1/2/3/4>a

\fad(<t1>, <t2> )—淡出淡入效果—单位为1毫秒,如2000就是2秒
t1—显示使用的时间,是时间段
t2—消失使用的时间,是时间段
\fade(<a1>, <a2>, <a3>, <t1>, <t2>, <t3>, <t4> )—淡出淡入效果—透明度必须用十进制表示,范围0-255
a1—显示开始时的透明度
a2—显示结束到消失开始时的透明度
a3—消失结束时的透明度
t1,t2—显示的开始和结束时间,是时间点
t3,t4—消失的开始和结束时间,是时间点

Scroll up;<y1>;<y2>;<delay>;[<range>]—字幕从下向上移动
Scroll down;<y1>;<y2>;<delay>[;<range>]—字幕从上向下移动
y1—字幕出发处的垂直坐标
y2—字幕终止处的垂直坐标
delay—速度,表示移动一象素所用的时间,单位为0.001秒/1象素,delay=20表示1秒移动50象素的距离.由此可计算出头字幕从初始坐标到达终点坐标所用的时间为: (y1-y2的绝对值)*(delay/1000)(秒),delay越小移动速度越快.
range—上下淡出淡入范围

Banner;<delay>;[<lefttoright>;[<range>]]—字幕横向移动,移动从屏幕边线出发到边线终止
delay用法同上
lefttoright—0从右向左移动,1从左向右移动
range—左右的淡出淡入范围

Karaoke—卡拉OK,下面是代码表示
\K<duration> 卡拉OK,有平滑效果,时间单位是0.01秒,{\K200}XXX表示用2秒来显示歌词XXX,后面没有字符表示停顿一段时间
\a<alignment>—设置对齐方式,不同的位置alignment取以下相应的值
左 中 右
上 5 6 7
中 9 10 11
下 1 2 3

学习SSA代码注意事项:

1. 在不同的对齐方式下,位置参数即坐标值的说明(括号内的数字是不同对齐方式的ssa代码):
上对齐: MarginV的值是上端字幕到顶部的距离
上左对齐时(5): MarginL是左端字幕到左边的距离
MarginR无效
上中对齐时(6): MarginL不是实际距离(文本中心在水平方向上向左到屏幕中线的实际距离=(1/2)MarginL) (注:为了定位方便,此时不要同时设置MarginL和MarginR的值)
MarginR不是实际距离(文本中心在水平方向上向右到屏幕中线的实际距离=(1/2)MarginR)
上右对齐时(7): MarginR是右端字幕到右边的距离
MarginL无效
下对齐: MarginV的值是下端字幕到底部的距离
对MarginR和MarginL的分析同上
左对齐: MarginL是左端字幕到左边的距离
MarginR无效
左上对齐时(5): MarginV的值是上端字幕到顶部的距离
左中对齐时(9): MarginV无效(文本中心在垂直方向上位于屏幕一半的地方)
左下对齐时(1): MarginV的值是下端字幕到底部的距离
右对齐: MarginR是右端字幕到右边的距离
MarginL无效
对MarginV的分析同上
中心对齐(10): MarginL不是实际距离(文本中心在水平方向上向左到屏幕中线的实际距离=(1/2)MarginL) (注:为了定位方便,此时不要同时设置MarginL和MarginR的值)
MarginR不是实际距离(文本中心在水平方向上向右到屏幕中线的实际距离=(1/2)MarginR)
MarginV无效(文本中心在垂直方向上位于屏幕的一半处)
准确设置字幕位置的步骤:
第一步:确定当前文本的对齐方式(对字幕位置的初步设定)
第二步:可用两种方法最终确定字幕位置:
a调节MarginL,MarginR,MarginV参数来设置(一般只调[Events]部分中的MarginL,MarginR,MarginV值)
b不调节MarginL,MarginR,MarginV参数,而是用某些代码(比如\move,\pos代码)对字幕初始位置重新设定

1)一般来说,在使用1,2,3,5,6,7这六种对齐方式的条件下可以通过调节[Events]部分的MarginL, MarginR, MarginV值来准确控制字幕在屏幕中的位置,而用9,10,11这三种对齐方式时则不能用改变MarginL, MarginR, MarginV数值的方法来调节字幕在垂直方向上的位置,此时文本中心在垂直方向上始终位于屏幕的一半处.

2)对齐方式也会影响到Text中某些代码(比如\move,\pos代码)对字幕初始位置的重新设定:
A.采用上中对齐或下中对齐方式时,代码中水平坐标值是文本水平中心的坐标值;
上中对齐时,代码中垂直坐标值是上端字幕到顶部的距离
下中对齐时,代码中垂直坐标值是下端字幕到顶部的距离(注:这一点和MarginV值不同)
B.采用上左对齐时,代码中水平坐标值是左端字幕到左边的距离
代码中垂直坐标值是上端字幕到顶部的距离
其余类推
C.采用中心对齐时,代码中水平坐标值是文本水平中心的坐标值
代码中垂直坐标值是文本垂直中心的坐标值

3)另外,由于[V4 Styles]部分和[Events]部分中的MarginL,MarginR,MarginV值的设定都会影响到\move代码对字幕初始位置的重新设定(对\pos代码没有影响),因此[V4 Styles]部分的MarginL,MarginR,MarginV值要设定的相对小一些(最好在0-30这个范围),而此时也不再设定 [Events]部分的MarginL,MarginR,MarginV值,即都为0000.

4)特效Scroll up,Scroll down中的坐标值则是文本起点和终点在屏幕中的位置.

5)对齐方式也对决定了代码\fr中旋转所围绕的中心

2.{}内可以有多个代码,比如:{\fs25\fad(300,500)}和{\fs25}{\fad(300,500)}作用一样

3.每一代码的有效范围从该代码之后到下一个相同代码出现之前的所有文本内容(在同一行内)

4.字幕淡入淡出时间包括在字幕的起始和终止时间之内

5.注意代码\move和特效Scroll,Banner的区别和联系:
当文本内容为单行或单列时,完全可以用\move代码代替Scroll或Banner,而多行多列则是不行的.这是因为在用\move时,当文本的头字幕从起点坐标到达终点坐标时,该动作已完成,不管后面还有多少文本内容.而用Scroll或Banner则不一样,它要求在作用范围内的所有文本内容都必须到达终点坐标才算完成动作.
在速度的控制方面\move中字幕移动的速度是由字幕的显示时间决定的,时间越短,速度越快;而Scroll或Banner中字幕移动的速度是由参数delay所决定的,delay的值越小,速度越快.

6.当使用多个动态效果的叠加时,字幕运动变化的时间往往超过代码中规定的时间(动态效果越多,速度越慢),以至总时间超过字幕的显示时间.

怎么样?都看明白了吗?你现在就可以自己编写自己的水印了!编写水印时可要有耐心,要反复的试,时间一点也不能错呀!
{\pos(315,20)}
位置设置,如JRvS的水印出现在右上角。
(x,y)x相当于水平位置,从左到右增大。y是垂直位置,从上到下增大。
数值范围根据ssa字慕[script Info]内定义的范围,即
PlayResX: 384
PlayResY: 288
{\t(\frx1440)}、{\t(\fry1440)}、{\t(\frz1440)}
转动的效果,frx是绕X轴转动,fry是绕Y轴转动,frz是绕Z轴转动,就像风车转动一样(注意都是小写)
如:
Dialogue: Marked=0,0:00:01.35,0:00:05.34,Default,,0000,0000,0000,,{\fs15}{\pos(330,40)}{\t(\fry1440)}XXX 制作
Dialogue: Marked=0,0:00:01.35,0:00:05.34,Default,,0000,0000,0000,,{\fs15}{\pos(230,140)}{\t(\frz1440)}XXX 制作
Dialogue: Marked=0,0:00:01.35,0:00:05.34,Default,,0000,0000,0000,,{\fs15}{\pos(230,40)}{\t(\frx1440)}XXX制作
该效果就是:在具体位置出现转动效果,持续5秒,至于1440是角度,如180表示转动180度,根据时间轴的长度来控制快慢

1,字体变化
字体变化组合本身就可以实现很漂亮的效果

1.1 字体排版
{\fe134\fn方正舒体\fs24\frz30}极速
{\fe130\fnComic Sans MS}{\frx60}www.biqing.net
{\fe}是语种编码,简体中文134,繁体136,英文的是130。有些操作系统在style里定义格式后可以省略编码的命令
{\frx},{\fry},{\frx}是字体分别按x轴,y轴,z轴倾斜一个角度,如特效中“碧”“晴”的排版
完整的代码如下:
Dialogue: Marked=0,0:00:01.00,0:00:04.30,Default,,0000,0000,0000,,{\frx50}X轴心旋转字体50度
Dialogue: Marked=0,0:00:01.00,0:00:04.30,Default,,0000,0000,0000,,{\pos(150,150)}{\fry60}Y轴心旋转字体60度
Dialogue: Marked=0,0:00:01.00,0:00:04.30,Default,,0000,0000,0000,,{fs15}{\pos(140,90)}{\frz30}Z轴心旋转字体30度

1.2 字变形
{\t(\fscy300)}字变高
{\t(80,500,\fscy300)}字变高
{\t(\fscy300)}字拉长
{\t(80,500,\fscx300)}字拉长
{\t(80,500,\fscx200\fscy400)}字体变形
出现\t的命令都可以进行时间控制,也就是里面的80,500。表示在定义的时间轴里出现和完成这个特效的时间。时间控制和嵌套是ssa特效里变化最多、亦是不好掌握的一个内容。
完整的代码如下:
Dialogue: Marked=0,0:00:04.35,0:00:07.10,Default,,0000,0000,0000,,{\t(80,500,\fscy300)}{\pos(190,200)}字变高
Dialogue: Marked=0,0:00:04.35,0:00:07.10,Default,,0000,0000,0000,,{\t(80,500,\fscx300)}{\pos(190,240)}字拉长
Dialogue: Marked=0,0:00:04.35,0:00:07.10,Default,,0000,0000,0000,,{\t(80,500,\fscx200\fscy400)}{\pos(190,140)}字变形

1.3 字体缩放
{\fs1}{\t(1,\fs15)}1号字体放大到15号字体
{\fs15}{\t(15,\fs5)}15号字体缩小到1号字体
{\fscx500%}{\fscy500%}{\t(1,\fscx100%,\fscy100%)}缩小
100%是定义的style里的字体大小,这个缩放可以带字体变形,如:
{\fscx500%}{\fscy700%}{\t(1,\fscx100%,\fscy200%)}变形缩小
{\fs10}{\t(0,900,\fs50)}控制性放大
{\fs50}{\t(200,600,\fs10)}控制性缩小
{\fs50\t(0,600,\fs10\t(800,1400,\fs24))}控制性缩放
这个嵌套有些难度,但拆分成最简单的{\t\fs}就容易理解了。
完整的代码如:(这里定义的style里是15号字体)
Dialogue: Marked=0,0:00:16.00,0:00:16.50,Default,,0000,0000,0000,,{\pos(160,140)}{\ fscx500%}{\fscy500%}{\t(1,\fscx100%,\fscy100%)}{\frz15}缩{\frz345}放
Dialogue: Marked=0,0:00:16.00,0:00:16.50,Default,,0000,0000,0000,,{\pos(160,250)}{\ fscx500%}{\fscy700%}{\t(1,\fscx100%,\fscy200%)}变形缩小
Dialogue: Marked=0,0:00:16.50,0:00:17.50,Default,,0000,0000,0000,,{\pos(160,140)}{\frz15}{\t(1,\fs50)}缩{\frz345}放
Dialogue: Marked=0,0:00:20.00,0:00:22.50,Default,,0000,0000,0000,,{\fs10}{\t(0,900,\fs50)}控制性放大
Dialogue: Marked=0,0:00:20.00,0:00:22.50,Default,,0000,0000,0000,,{\pos(160,160)}{\fs50}{\t(200,600,\fs10)}控制性缩小
Dialogue: Marked=0,0:00:23.00,0:00:25.50,Default,,0000,0000,0000,,{\pos(160,190)}{\ fs10\t(0,600,\fs50\t(1200,1800,\fs10))}控制性缩放效果

1.4 字体旋转
{\c&HFF80FF&}{\t(30,1500,\fry720)}JRvS(转动)
{\c&HFF80FF&}{\t(30,1500,1,\fry720)}JRvS(转动)
{\t(\frx360)}、{\t(\fry360)}、{\t(\frz360)}是字体分别绕x轴,y轴,z轴旋转360度。一般使用{\t(\fry360)}出现沿y轴转动的特效为多数。同样里面的30和1500表示时间的控制
{\fs30\fry90}{\t(0,1500,2,\fs20\fry0)}字体Y轴旋转变小
完整代码如下:
Dialogue: Marked=0,0:00:31.51,0:00:35.50,Default,,0000,0000,0000,,{\pos(160,140)}{\t(\fry1440)}copd 制作-X轴
Dialogue: Marked=0,0:00:35.49,0:00:40.50,Default,,0000,0000,0000,,{\pos(160,140)}copd 制作-X轴
Dialogue: Marked=0,0:00:31.51,0:00:40.50,Default,,0000,0000,0000,,{\pos(160,240)}{\t(30,2500,\fry1440)}copd 制作-X轴(控制性)
Dialogue: Marked=0,0:00:31.51,0:00:35.50,Default,,0000,0000,0000,,{\pos(60,60)}{\t(\frz1440)}copd 制作-Z轴
Dialogue: Marked=0,0:00:35.49,0:00:40.50,Default,,0000,0000,0000,,{\pos(60,60)}copd 制作-Z轴
Dialogue: Marked=0,0:00:31.51,0:00:35.50,Default,,0000,0000,0000,,{\fs15}{\pos(230,40)}{\t(\frx1440)}copd 制作-y轴
Dialogue: Marked=0,0:00:35.49,0:00:40.50,Default,,0000,0000,0000,,{\fs15}{\pos(230,40)}copd 制作-y轴
Dialogue: Marked=0,0:00:41.00,0:00:45.00,Default,,0000,0000,0000,,{\pos(190,200)}{\fs50\frx90}{\t(0,1500,\fs18\frx0)}字体X轴旋转变小
Dialogue: Marked=0,0:00:41.00,0:00:45.00,Default,,0000,0000,0000,,{\pos(190,60)}{\fs40\frz360}{\t(0,500,\fs18\frz0)}字体z轴旋转变小
Dialogue: Marked=0,0:00:41.00,0:00:45.00,Default,,0000,0000,0000,,{\pos(190,260)}{\fs64\fry90}{\t(0,1500,\fs30\fry0)}字体Y轴旋转变小

1.5 字体变色
{\c&HFF8000&\t(0,500,\c&H80FF00&}从蓝色过度到绿色
至于什么搭配比较渐进,请看vobsub或者一些画图软件中的调色板,如“****到绿色”等。颜色代码,vobsub229以上的版本即可查看。
颜色代码进行层层嵌套,即可实现闪动的霓虹灯效果,如附件内JRvS的效果
完整代码;
Dialogue: Marked=0,0:00:45.30,0:00:48.00,Default,,0000,0000,0000,,{\pos(190,100)}{\ c&HFF8000&\t(0,500,\c&H80FF00&}渐变颜色

1.6 淡入淡出
淡入{\fad(400,80)}
淡出{\fad(80,400)}
80是淡化效果的灰度,数值0-255
400是淡化效果完成的时间

2 移动
移动结合上述的各种字体特效可以实现更绚丽的效果
请看这个效果
Dialogue: Marked=0,0:00:47.00,0:00:55.00,Default,,0000,0000,0000,,{\move(0,0,60,120 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}欢
Dialogue: Marked=0,0:00:47.30,0:00:55.00,Default,,0000,0000,0000,,{\move(0,0,60,160 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}迎
Dialogue: Marked=0,0:00:48.00,0:00:55.00,Default,,0000,0000,0000,,{\move(0,57,60,200 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}光
Dialogue: Marked=0,0:00:48.30,0:00:55.00,Default,,0000,0000,0000,,{\move(0,57,60,240 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}临

滚动字幕:
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,Banner;30;0;50,UC0079年12月24日
Dialogue: Marked=0,0:00:05.30,0:00:08.30,New Style,NTP,0000,0000,0000,Scroll up;0;240;30;20,我們要跟這艘戰艦共存亡
第一个是横向滚动,30是速度、0代表右->左(改成1就是左->右)、50代表在屏幕边缘的透明度,值越大,字幕就…(不好形容自己试试就知道了,这个参数可以缺省设置)
第二个是纵向滚动,0和240代表Y轴坐标(可缺省)、30是速度、20是透明度(同上),另外,把UP改为DOWN就是上->下滚动
旋转字幕:
Dialogue: Marked=0,0:00:09.30,0:00:12.30,New Style,NTP,0000,0000,0000,,{\t(\fry720)}但我們不可讓你們白死
其中,“y”代表沿y轴转,“x”“z”均可、720代表的是度数,旋转快慢由你所定义的动作时间而定(时间长,旋转慢;反之则快。)。要想饶XYZ三轴转就分别添加{\t(\frx__)}{\t(\frz__)}(__填上你想要的速度)
任意坐标移动
Dialogue: Marked=0,0:00:13.30,0:00:17.30,New Style,NTP,0000,0000,0000,,{\t(\move(32, 48, 200, 320))}直至完成任務為止
32,48代表起始位置坐标200,320表示终止位置坐标。
卡拉OK效果
Dialogue: Marked=0,0:00:18.40,0:00:20.40,New Style,NTP,0000,0000,0000,,{\k94}差{\K48}不{\ko80}多{\k150}了
大写的K=从左至右填充色彩(SecondaryColour为底色;PrimaryColour为填充色); ko=outline高亮显示(不推荐) ;数字是表示填充时间,单位:10ms

淡入淡出效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\fad(300,550)}別慢吞吞
300-淡入时间,550-淡出时间 ,单位:毫秒(ms)。
强制字体效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\fn宋体)}別慢吞吞
无特别提示。
强制颜色效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\c&H00ffff&}別慢吞吞
关于颜色的代码,请见第二讲的内容。
强制透明度效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{1\a&H50&}別慢吞吞
1是代表第一颜色的透明度,2、3、4以此类推,透明度取值:00~FF。
———————————————————————————————————————————————————————————–
以上就是一些常用的字幕特效,怎么样?还是很简单吧。
先用为快,以上的例子都是写简单的,不想深入的朋友,用上面的足够了。
下面将对SSA的参数的设置做一个比较详细的解说。
想要深入研究的朋友可以看看这里了。这次先从Script Info 讲起。Script Info——
脚本信息,顾名思义就是你所制作的字幕文件的一些信息,具体格式因所使用的编辑器不
同而不同,但却要遵守一个原则:就是要在开头用“[Script Info]”来标记。

下面是用SubCreator编辑时的脚本信息:

[Script Info]
Title: 08ms team 12
ScriptType: v4.00
Collisions: Normal
PlayResY: 480
PlayResX: 640
PlayDepth: 0
Timer: 100.0000

其中红字部分是重要部分,它会影响到后面的设置:比如ScriptType: v4.00会影响字幕特
效的相关命令(有一部分命令是要在v4.00+中才会实现的,因为V4+的代码是基于V4基础上
的有相似点,所以在此还是先介绍v4.00);
640 480则会影响字幕定位时的坐标。
接着,我们来看看v4 Styles,在这部分,我们要做的
就是设置字幕的各种属性简单的说就是设置全局参数。还是先放上例子再来说明吧:

[v4 Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Style: New Style,幼圆,30,16777215,4227327,8404992,16744448,0,0,1,1,2,2,30,30,12,0,134
Style: TITAL,宋体,40,13777215,2327327,5404392,14744448,0,-1,1,1,2,2,15,15,270,0,134
format是在说明各参数的含义:
name:你给这种风格的字幕所起的名字;
Fontname:字体类型;
Fontsize:文字大小;
PrimaryColour:第一字幕色——字幕首选色;
SecondaryColour:第二字幕色(目前本人仅知道在卡拉OK效果时会用上);
TertiaryColour,BackColour:字幕边缘色,阴影色;
Bold,Italic:粗体(B),斜体(I) 0为关闭,-1为开启;
BorderStyle;字幕显示方式:1=Outline + drop shadow, 3=Opaque box;(不好用中文表述,就采用原话,推荐用1)
Outline,Shadow:当上面的设置是1时,就可以设置文字的边框和阴影的粗细了,可取值:0,1,2,3,4;
Alignment:设置文字的对齐方式:1=左对齐,2=中对齐,3=右对齐,4=置顶,8=置中,5=1+4=置顶左对齐,6=2+4,11=3+8,应该知道是什么了吧;
MarginL,MarginR,MarginV:字幕距左、右以及垂直方向的距离,(会影响字幕的垂直方向的坐标和一排能显示的字幕个数,超出则会自动换行)推荐值:10,10,12底端,顶端不好定,只有编出来后再来调整;
AlphaLevel: 字幕的Alpha值,简单的说就是字幕的透明度,取值范围0-255;
Encoding:字幕的,没什么多说的:具体代码:
0=ANSI,1=DEFAULT,2=SYMBOL,128=SHIFTJIS,129=HANGEUL,134=GB2312,136=CHINESEBIG5,255=OEM,130=JOHAB,177=HEBREW,178=ARABIC,161=GREEK,162=TURKISH,163=VIETNAMESE,222=THAI,238=EASTEUROPE,204=RUSSIAN,77=MAC,186=BALTIC;(红字部分为常用的)

注意:

字幕风格可以设置多种,只要名字不同就可以在同一时间执行不同风格的字幕事件,
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,,UC0079年12月24日
红字部分就是你所用的某种风格的字幕的名称。
接下来,说说字幕的颜色。 …….其实也没什么说的,本想直接编一个小程序自动
显示所选色彩的颜色代码,但最近学习真的很忙,没那精力,就在这里说说吧。小学时就学
过RGB三原色,其他颜色也就是这三种原色搭配而产生的,在WINDOWS里,三原色也有相应的
值以16进制编译,三种色都定义了256种色彩深度也就是0-FF,任何颜色按RGB表示出来假如说
是56F49E,在SSA中就要以BGR形式表示出来,即:9EF456。色彩代码要注意的就只有这一点
关于色彩的代码获得可以在WINDOWS的绘图工具中找自定义颜色然后把三原色的10进制数值转换
成16进制按BGR顺序排列就可得到。
关于用SUBCREATOR生成的SSA字幕时间轴不准确的问题:
看到有人提到这个问题,因为是整体有偏差,所以可以用vobsub附带的subresync来调整,方便些。
具体做法就看这里吧
———————————————————————————————————————————————————————————–
特效码一览
格式修改: [在字幕中插入,例如: 今天的天气\n好晴朗啊]
\n…………………..空格(是当字幕在一行显示不完时会换行,但是对于双字节的字符无法判断是否超出屏幕)
\N…………………..强制换行
\h…………………..强制空格
在{…}之间加入的特效码: <>内表示可用的参数,[]内表示可选参数,在具体使用时不用加 <>,[]
\a <alignment>……………………………强制字幕在屏幕上的对齐位置:具体见关于alignment说明
\b <0/1/weight>…………………………..字体加粗
\i <0/1>…………………………………斜体字
\u <0/1>…………………………………下划线
\s <0/1>…………………………………删除线
\bord <width>…………………………….字体加宽
\shad <depth>…………………………….阴影深度
\be <0/1>………………………………..边角模糊
\fn <name>……………………………….强制字体类型
\fe <charset>…………………………….强制字幕编码
\fs <size>……………………………….强制字幕大小 例如:\fs34
\fsc <x/y> <百分比>……………………….字体比例[fscx代表横向比例fscy代表纵向,单位:百分比]
\fsp <pixels>…………………………….字间距
\fr[ <x/y/z>] <角度数>…………………….旋转[x,y,z轴三个方向]
\fe <charset>…………………………….字符编码
\c&H <bbggrr>&……………………………强制字幕色
\ <1/2/3/4>c&H <bbggrr>&…………………..主/次/外框/阴影 字幕色设定
\alpha&H <aa>&……………………………透明度
\ <1/2/3/4>a&H <aa>&………………………主/次/外框/阴影 透明度
\k[ <f/o>] <duration>……………………..卡拉OK效果 (f-从左至右添充[未填充时显示次要色,填充后显示主色], o-字幕外框高亮显示?)
\K………………………………………跟 \kf 同样效果(填充效果)
\r[ <name>]………………………………强制加载名为“name”的预设风格 [“[v4 Styles]”定义的]
\t([ <t1>, <t2>,][ <加速度>,] <特效码>)……..动态显示, 加速度: 0~1减速, 大于1加速(方括号内的可以却省设置)
\move( <x1>, <y1>, <x2>, <y2>[, <t1>, <t2>])…移动(方括号内的可以却省设置)
\pos( <x>, <y>)…………………………..强制定位
\clip( <x1>, <y1>, <x2>, <y2>)……………..字幕裁剪
\fad( <t1>, <t2>)…………………………淡入淡出[t1-开始时间,t2-结束时间]
\q <num>…………………………………换行方式:0智能换行,1行尾换行,2无换行,3智能换行(尽量使下一行宽于上一行)
所谓后期加工,主要也就是添加特效代码,修改字体大小颜色等工序。基本字幕的制作目前有很多工具都能办到。上面列举的也并不是SSA的全部,另外还有SSA的加强格式ASS,因为支持更多的控制代码,所以合理的搭配可以玩出更很多花样。
关于ASS,实在没多大精力重新解说了。因为80%的都与SSA相同,加之现在的字幕插件里面都附带了ASS的说明文件的,只要仔细阅读,就能轻松掌握。还是多留些想像空间给各位爱好者吧
一些需要注意事情:
1.要想在外挂字幕的时候能看到动态效果;请务必关闭VSFILTER的Pre-buffer subpictures
2.注意字幕文件的保存格式,有ANSI和UNICODE之分,针对不同的系统以及不同版本的VSFILTER,选择不同的保存方式。(如果用ANSI方式保存不能正常显示,就换UNICODE来保存)另外要注意字体名称不要写错了。

[SSA字幕特效]
学习ssa字幕特效,应该在掌握压制原则和技巧的基础上,如此达到锦上添花的效果。不要为了特效而去特效。加载特效字幕流,码率不要低于280k。
我这个特效技巧不包括卡拉ok和绘图命令,侧重于常用的几个语法和时间轴嵌套。入门参见我之前发的那个普通教程。
一,滚动和移动
横幅滚动 :Banner;
Dialogue: Marked=0,0:00:01.30,0:01:28.90,Default,,0000,0000,0000,Banner;28;0;60,郑重声明:本作品之片源、字幕均来自互联网,版权归原电影公司所有。任何组织和个人不得公开传播或用于任何商业盈利用途,否则一切后果由该组织或个人承担!本站和制作者不承担任何法律及连带责任!请自觉于下载后24小时内删除。如果喜欢本片,请购买正版!{\move(20, 20,20,20}
或者:
Dialogue: Marked=0,0:00:01.34,0:00:50.35,mine,,20,20,260,Banner;28;0;60,本作品来自互联网,仅供个人影视制作学习交流之用,任何组织和个人不得公开传播或用于任何商业盈利用途……
这2个的效果都是在影片的顶部从右到左的滚动出现免责信息。Banner之前的260是方位,表示显示在顶部,改成10或者下面的那个{\move(20, 20,20,20}去掉即显示在屏幕的底部,根据爱好确定部位好了。Banner之后的3个参数分别表示:28是滚动的速度,越小速度越快;0是从右到左,改成1就是从左到右;60是淡出,你将这个数值改成100再看看效果即可明白!
从下往上
Dialogue: Marked=0,0:00:00.20,0:00:10.10,Default,,0000,0000,0000,Scroll up;0;300;40;70,往上滚动
从上往下
Dialogue: Marked=0,0:00:00.20,0:00:10.10,Default,,0000,0000,0000,Scroll down;0;300;40;70,往下滚动
0;300表示移动的距离 40;是移动的速度,越小就越快 70是淡出
二,淡入淡出
vobsub的ssa语法
\fade(<a1>,<a2>,<a3>,<t1>,<t2>,<t3>,<t4> ) fadein: t1 -> t2, fadeout: t3 -> t4
\fad(<t1>,<t2> ) fadein: start -> start+t1, fadeout: end-t2 -> end

1,简单的淡入淡出
{\fad(1000,100)}和{\fad(100,1000)}
前者表示淡入(逐渐出现),后者表示淡出(逐渐消失)
小数据一般是灰度值,0-255。如果超过255,那么数值代表淡出的时间,不再表示灰度值,效果就是最简单的淡入淡出
大数据表示时间轴定义范围内效果的梯度显示及0-255灰度变化的时间范围。

2,控制性淡入淡出
{\fade(255,0,255,100,4000,8500,10000)}
一般前3个数值不要改动,表示逐渐出现(即灰度从0~最大的255),然后逐渐消失(即灰度从255~0),逐渐消失的时间控制由后面的4个数值控制。在定义的时间轴内(如这例,11秒),100-4000表示从0.1秒开始逐渐出现(效果的控制时间为到第四秒结束,即3.9秒),8500-10000表示从第8.5秒开始开始逐渐消失(效果控制的时间为1.5秒)
三,几个时间嵌套控制语法应用详解
vobsub的ssa语法
\fs<size> size
\fsc<x/y><percent> scale
\fsp<pixels> spacing
\fr[<x/y/z>]<degrees> rotation
\c&H<bbggrr>& primary color
加入 \t(,\) 的时间控制参数,可以控制性的来显示特效显示,另外可以层层嵌套,实现难度较大的特效,如抖动、闪烁、变色等
\t(10,800,30,\…)里面前2个个数值分别表示(时间轴规定的时间范围内)出现时间和效果显示时间。第三个数值可以不要,但要保留后面的逗号,个别特效需要第三个数值来控制。…又可嵌套,但是需要注意后面的括号数目

1,字体控制性缩放{\t(\fs)}
控制性放大:{\fs15}{\t(0,800,\fs30)}或者{\fs15\t(0,800,\fs30)}
控制性缩小:{\fs30\t(0,800,\fs15)}
控制性缩小放大:{\fs30\t(0,800,\fs15)}{\t(2000,2800,\fs24)}或者{\fs30\t(0,800,\fs15\t(2000,2800,\fs24))}
表示在定义的时间轴范围内,先立即缩小(字体从30号缩小到15号),缩小的控制时间为800ms;然后在第2秒的时候再放大,放大的控制时间也是800ms。也就是说完成这个特效时间轴至少需要3秒的时间,如果时间轴超过3秒,那么3秒以后的显示效果就是最后一个特效完成后的状态,如,该例就是最终字体保持在24号

2,字体变形缩放{\t(\fscx)},{\t(\fscy)}
字体变长:{\t(0,500,\fscx500)}
字体变高:{\t(0,500,\fscy500)}
字体变长变高:{\t(0,500,\fscx500,\fscy300)}
极端效果:{\t(0,500,1,\fscx0,\fscy500)}和{\t(0,500,1,\fscx1000,\fscy0)}
默认大小是fscx100,fscy100。极端的效果是将字体无限拉长或者压扁,如此结合时间轴控制可以实现光影,如牛过的rmvb特效

3,字体间距缩放{\t(\fsp)}
一般是作成先放大间距再缩小间距的特效,比较动感。
{\t(0,800,\fsp20)}{\t(800,1300,\fsp5)}或者{\t(0,800,\fsp20\t(800,1300,\fsp5))}
一般结合{\move()}语法一起使用

4,旋转的特效{\t(\frx)},{\t(\fry)},{\t(\frz)}
旋转的特效变化比较多,稍微复杂些
x,y,z分别表示绕x轴,y轴和z轴旋转的角度,建议使用90的倍数,默认一般是右手螺旋或逆时针旋转 如:
{\t(\frx1440)}绕x轴旋转4圈
{\t(\fry1440)}绕y轴旋转4圈
{\t(\frz1440)}绕z轴旋转4圈(风车旋转)
按一定方向旋转。为了好理解,以z轴旋转为例,大家想象成在一个钟面上 如:
{\frz90\t(30,500,\frz0)}0点到3点
{\frz0\t(30,500,\frz90)}3点到0点
{\frz270\t(30,500,\frz180)}6点到9点
……套用即可
不加\t的情况表示沿坐标轴旋转一个角度,用于字体排版,抖动的特效就是嵌套这个语法而来的
如一个简单的抖动效果:(注意后面的括号数)
Dialogue: Marked=0,0:00:01.00,0:00:5.30,jrvs,,0000,0000,0000,,{\frz360\fs20\t(51,100,\frz390\t(100,150,\frz360\t(150,200,\frz330\t(200,250,\frz360\t(250,300,\frz390\t(200,250,\frz360\t(300,350,\frz330\t(350,400,\frz360)))))))))}♀抖动
结合字体缩放等实现一些简单的组合特效
如常用的字体Y轴旋转放大,
{\fs10\fry180\t(0,1500,\fry0\fs25)}
如结合淡入淡出和移动显示
Dialogue: Marked=0,0:00:01.00,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(60,160,30,160,10,300)}{\fry90}{\t(0,300,\fry0)}欢
Dialogue: Marked=0,0:00:01.20,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(80,160,50,160,10,300)}{\fry90}{\t(0,300,\fry0)}迎
Dialogue: Marked=0,0:00:01.40,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(100,160,70,160,10,300)}{\fry90}{\t(0,300,\fry0)}光
Dialogue: Marked=0,0:00:01.60,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(120,160,90,160,10,300)}{\fry90}{\t(0,300,\fry0)}临
注:只要时间轴上先定义时间差即可,这里是20秒的间隔,里面的复制即可

5,变色{\t\c&HFF80FF&}
颜色的语法并不难,难的是颜色的选择和过度。
Dialogue: Marked=0,0:00:02.20,0:00:02.50,mine,,0000,0000,0000,,{\pos(290,220)}{\fs60}{\t(0,300,\fs20)}{\c&HFF80FF&}{\fe130\fnComic Sans MS}JRvS
Dialogue: Marked=0,0:00:02.50,0:00:03.10,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.10,0:00:03.30,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.30,0:00:03.50,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.50,0:00:04.10,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:04.10,0:00:04.30,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:04.30,0:00:35.00,mine,,0000,0000,0000,,{\pos(290,220)}{\c&HFF80FF&}{\t(30,1500,\fry720)}{\fad(100,1000)}{\fe130\fs20\fnComic Sans MS}JRvS

四,图形字符的加载
直接加载图片不太容易实现。利用丰富多彩的图形字符一样可以达到部分效果。图形字符可以到下面这个包罗万象的网站去下载
既然是图形字符,那么使用上述的任何一个命令来实现图形字符特效。如牛过的特效中那个转动的环。
第一章 字幕制作简介

前言

平时很爱看电影和动画。接触动画多了,发现动画的OP和ED部分特效十分华丽,遂对此兴趣倍增。但翻遍网络,大多文章介绍时间轴字幕的制作,对于特效的介绍少之又少。几经波折,终于初窥字幕特效制作之门径,突然萌生想法,何不自己动手写一篇这方面的文章呢。于是本文诞生了!

俗话有云:“说起来容易,做起来难。”的确,在写作本文的过程中遇到不少的问题,甚至曾经要放弃这个想法。拖拖拉拉许多天,总算是完成了。由于本人也是新手,所以不免有疏漏错误,望达人们在耻笑之余给予批评指正,同时希望对新学者有所帮助。

本文面对的是有一定的字幕制作基础的读者,如果还不清楚字幕制作最基本的时间轴制作,那么请先学习有关字幕时间轴制作的相关文档。

文中有些约定,必须先向各位介绍,否则对内容会产生误解。

文中参数都是用一对尖括号括起来。 < >
可选参数使用一对方括号括起来。 [ ]
多个选择其中之一用斜杠隔开。 /
示例代码都被框住显示。
第一章 字幕制作简介

随着网络的普及,电影和动画也借助网络快速的发展着。的确,其速度之快令人瞠目结舌,今天首映的大片,明天就可以在某个网站搜到;晚上刚刚播出的动画,几个小时以后就会出现在某知名BT站点。在我们惊讶其出片速度之快的同时,难道就没有想过更深入的了解一下字幕制作的内幕么?

字幕制作其实一点也不神秘,可分为片源提供、文稿翻译、时间轴、特效、校对、内嵌、压制几个步骤。而我们将要重点讨论的就是特效部分,其他方面已经有不少相关的文章介绍,在这里就不一一赘述了。
第一节 常见字幕格式

字幕文件有很多种,DVD使用的是图形化的字幕,由引导文件引导,相比这是一种低级的字幕形式,但是毕竟是外挂字幕的里程碑。如图:
图1.1 DVD字幕
SRT和SSA字幕是更高级的字幕形式,这种字幕是文本文件,体积小巧,便于传输,修改方便。SRT只是带有显示时间和字幕文本的外挂字幕,而SSA除了上述SRT的特点外,最重要的是带有格式化文本的功能,这也是制作特效的基础。下图是外挂SSA字幕的动画:
图1.2 SSA字幕

第二节 常用软件
工预善其事,必先利其器。制作字幕就要准备好相应的软件。SubCreator和SubStationAlpha是两款常用的字幕制作编辑软件。有很多文章介绍SubCreator的使用方法,这里就不详细说明了,但是我们会在后续的学习中使用到。而SubStationAlpha的使用又涉及到许多关于SSA字幕格式的知识,所以我们会慢慢的介绍这款软件。下图是SubStationAlpha的界面:

图1.3 SSA界面

第三节 简单的字幕制作
学习制作特效字幕之前,简单回顾一下一般字幕的制作方法。首先需要准备好一些东西:片源,翻译稿,SubCreator软件。我以漫游制作的《魔法使的注意事项》第一话为例,简单叙述一下:

首先启动SubCreator,调入魔法使第一话的片源AVI文件和翻译文本,如图:

图1.4 调入文本和片源
然后创建时间轴,校对保存成SSA文件格式。如图:

图1.5 创建时间轴
保存SSA文件的时候按照如下设置,字体选择黑体,字号15,四个颜色分别选择&Hffffff、&Hfcc4a5、&H000008和&H000008。这些颜色的表示使用的是十六进制表示法,格式是&H加上十六进制颜色值,颜色值共6位,以BBGGRR的顺序排列,即头两位表示蓝色色阶,中间表示绿色色阶,最后两位表示红色色阶。当然,也可以将十六进制颜色值转化为十进制值直接写入,不用加前面的&H。就SubCreator来说,通过颜色选择而自动生成的代码使用的是十进制的数值,但是为了方便将来手动编写代码,我建议使用十六进制表示法。十六进制表示颜色值的好处在于可以清晰的看出组成颜色所使用的三元色(光学三元色,即红色、绿色、蓝色)之间的比例关系,甚至熟悉颜色编码的可以直接看出是什么颜色。其他的设置如图:

图1.6 保存成SSA文件

用记事本之类的文本编辑器打开刚刚生成的SSA字幕文件,会出现下面一些内容:

引用内容:
[][Script Info]
; This is a Sub Station Alpha v4 script.
; For Sub Station Alpha info and downloads,
; go to http://www.eswat.demon.co.uk/
; or email [email protected]
;
; Note: This file was saved by SubResync.
;
ScriptType: v4.00
Collisions: Normal
PlayResX: 384
PlayResY: 288
Timer: 100.0000

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
; 正文字幕
Style: Default,simhei,15,&Hffffff,&Hfcc4a5,&H000008,&H000008,0,0,1,1,1,2,30,30,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:02:27.50,0:02:31.00,Default,,0000,0000,0000,,这条街上的太阳已经死去
Dialogue: Marked=0,0:02:31.00,0:02:33.60,Default,,0000,0000,0000,,天空又狭窄 也没有深山
Dialogue: Marked=0,0:02:34.40,0:02:37.20,Default,,0000,0000,0000,,映入眼帘的只有灰色的建筑物
Dialogue: Marked=0,0:02:37.20,0:02:38.60,Default,,0000,0000,0000,,跟人来人往的人潮
Dialogue: Marked=0,0:03:22.50,0:03:24.00,Default,,0000,0000,0000,,好痛
Dialogue: Marked=0,0:03:24.00,0:03:25.50,Default,,0000,0000,0000,,好痛…
Dialogue: Marked=0,0:03:25.50,0:03:26.10,Default,,0000,0000,0000,,你不要紧吗?
Dialogue: Marked=0,0:03:28.50,0:03:29.50,Default,,0000,0000,0000,,你受伤了吗?
Dialogue: Marked=0,0:03:34.20,0:03:35.40,Default,,0000,0000,0000,,你想到对面去吧
Dialogue: Marked=0,0:03:37.60,0:03:38.60,Default,,0000,0000,0000,,那就跟我来吧
Dialogue: Marked=0,0:03:40.00,0:03:40.60,Default,,0000,0000,0000,,那个…
Dialogue: Marked=0,0:03:49.60,0:03:50.00,Default,,0000,0000,0000,,危险
Dialogue: Marked=0,0:03:57.60,0:03:59.00,Default,,0000,0000,0000,,那是怎么回事?
Dialogue: Marked=0,0:03:59.00,0:04:02.10,Default,,0000,0000,0000,,怎么了?
Dialogue: Marked=0,0:04:02.10,0:04:04.80,Default,,0000,0000,0000,,骗人的吧
Dialogue: Marked=0,0:04:08.80,0:04:10.40,Default,,0000,0000,0000,,轻轻地放下 轻轻地…
Dialogue: Marked=0,0:04:23.00,0:04:25.50,Default,,0000,0000,0000,,我没想到车子会飞得那么高
Dialogue: Marked=0,0:04:25.50,0:04:26.90,Default,,0000,0000,0000,,那是你做的吗?
Dialogue: Marked=0,0:04:26.90,0:04:28.10,Default,,0000,0000,0000,,你是魔法使者吗?
我只是截取其中的一小部分作为例子显示出来,由于设置等等的不同,可能你自己所创建的文本与我的稍有差别,这都是正常的。以上就是SSA代码,我们制作的各种特效都是基于SSA格式代码完成的。也许看到这里你觉得头晕目眩,不知其所云,没有关系,从现在开始我们就慢慢接触这些怪怪的家伙。

现在,你可以先试一试效果,把字幕文件的名字改成片源的名字,当然扩展名是要区别开的。然后播放一下试试吧。注意:VobSub一定要保持最新的版本,不然一些特效甚至单纯的字幕都播放不出来。我推荐使用暴风影音,安装一个,一起解决字幕外挂、视频编码等问题。

附加说一点,由于每个人的SubCreator版本不同,可能生成的代码也不同,这一点是至关重要的,因为它意味着有些代码你必须手动编写进去。不要急,以后我们都是要手写的,没有什么好担心,静一静自己的大脑,开始奇妙的字幕制作旅途吧。
第二章 SSA格式基础
在全面学习SSA代码编写特效之前,先介绍几个概念。SSA文件的结构正是由这些概念所组成的,在以后的SSA代码学习过程中,你会发现这些概念紧紧伴随你左右。本章简单的介绍了SSA文件的几个重要部分,对其中的信息部分和事件部分又做了进一步的讨论。结束本章的学习后,你将惊喜的发现,SSA文档已经去掉了神秘感,展现在你眼前的再也不是不知所云的天书了,并且你可以尝试着在上一章例子的基础上做一些改动,使得你的字幕看起来更加可爱。
第一节 几个概念
SSA文档结构性很强,从上面的例子中可以看到,第一行有[Script Info]这样的文字。还有下面有[V4 Styles]和[Events]两行,凡是这种行开头用一对中括号括起来的文字都标识着SSA文档的一个部分。第一个概念,部分。SSA文档可以分成若干的部分,但是主要的部分只有两个。下面一一介绍。

[Script Info] 信息部分。这部分保存关于SSA代码脚本总信息。必须要放在SSA文档的首位。也是必不可少的一个部分。
[V4 Style] 格式部分。这部分定义制作字幕中所用到的格式类型。
[Events] 事件部分。这部分保存具体的字幕显示方式。
[Fonts] 字体部分。对于内嵌字体信息的定义。
[Graphics] 图像部分。对于内嵌图像信息的定义。

其中[Fonts]部分和[Graphics]部分一般不用,所以我就不费笔墨做过多的介绍,以后用到会做介绍的。一般的SSA文件由前三个部分所组成,尤其是格式定义和事件部分的完美结合,体现了SSA外挂字幕的格式自定义的特点。这样,又引申出另一个概念,格式。

引用内容:
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,simhei,15,&Hffffff,&Hfcc4a5,&H000008,&H000008,0,0,1,1,1,2,30,30,10,0,1
这段代码取自上一章我们使用SubCreator生成的SSA字幕文件,其中第三行由Style字样开始的就是定义格式,在同一个字幕文件中可以定义很多种类不同的格式,用于显示不同用途的字幕,比如可以定义专门显示字幕的主风格,然后再定义一个用来显示歌词文本的字幕格式,定义用来显示制作成员列表的字幕格式,定义用来显示免责声明的文本格式。但是无论怎样发挥你的聪明才智去定义五花八门的字幕格式,Default格式是必不可少的。在Style定义的格式中,规定了将来在事件部分中使用此格式的字体名称,字号等等各种各样的属性,Style定义字体的具体介绍会在第二节讲解。

定义了各种格式之后,就要实际应用到字幕显示中,这在事件部分[Events]中实现。好,介绍第三个概念,也是最重要的概念,事件。

引用内容:
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:02:27.50,0:02:31.00,Default,,0000,0000,0000,,这条街上的太阳已经死去
Dialogue: Marked=0,0:02:31.00,0:02:33.60,Default,,0000,0000,0000,,天空又狭窄 也没有深山
Dialogue: Marked=0,0:02:34.40,0:02:37.20,Default,,0000,0000,0000,,映入眼帘的只有灰色的建筑物
Dialogue: Marked=0,0:02:37.20,0:02:38.60,Default,,0000,0000,0000,,跟人来人往的人潮
我截取了上一章生成的SSA文件一小部分事件代码。从[Events]标注开始的都是事件部分。发生在同一时间或者时间段内,具有相同或者极其相近属性的事情,称为事件。SSA规定了对话(Dialogue)事件、注释(Comment)事件、图片(Picture)事件、声音(Sound)事件、影片(Movie)事件和命令(Command)事件这样几类。这里我们只是使用了对话事件。从第三行开始,每一行的起始都是Dialogue标记,这就是对话事件。切记,每一个事件占用一行的文本,所以不能把同一个事件分成多行书写。在一般的字幕制作中,显示在一个画面的字幕正好对应一个对话事件,所以如果同时显示两行字幕的话,虽然想要使用双行显示,但是由于这两行文本是同时出现在同一个画面里面(即上面所提到的发生在同一个时间段内),而且都是主字幕(即具有相同的属性),应该属于同一个事件,而同一事件不能写成两行,所以输入的字幕文本不能加入回车换行。解决这类问题要用到跨格式标记(Style Override),后面会有大篇幅详细介绍。注释事件就是一个以分号为行首的文本,例如,我们在上面的例子中在默认的Default格式定义的下面加上一个说明其功能的注释:

引用内容:
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
;下面的格式定义了主字幕显示时候使用的字体风格
Style: Default,simhei,15,&Hffffff,&Hfcc4a5,&H000008,&H000008,0,0,1,1,1,2,30,30,10,0,1
其中第三行行首的分号表示本行后面的内容都是注释,注释在脚本执行的时候自动忽略。对于有编程经验的人来说,理解什么是注释并不困难。我们只不过是把C++语言中的符号“//”变成分号而已,不过不要忘记这一点。其他类型的事件在今后用到的时候再提起。

刚才我们讨论对话(Dialogue)事件的时候提到了跨格式标记(Style Override),先看下面的代码:

引用内容:
Dialogue: Marked=0,0:01:21.70,0:01:30.00,Title,,0000,0000,0000,,{\pos(120,220)\fs28\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}魔法使
Dialogue: Marked=0,0:01:21.70,0:01:30.00,Title,,0000,0000,0000,,{\pos(175,220)\fs20\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}的
Dialogue: Marked=0,0:01:21.70,0:01:30.00,Title,,0000,0000,0000,,{\pos(140,251)\fs30\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}注意事项
我们刚刚介绍了事件(Events)的概念,这三行代码正好就是对话(Dialogue)事件。可以看出来这里的对话事件和前面的有所不同,注意每行最后一个逗号后面的文本:

引用内容:
{\pos(120,220)\fs28\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}魔法使
{\pos(175,220)\fs20\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}的
{\pos(140,251)\fs30\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}注意事项
和刚才我们自己编写的纯文本并不一样,增加了很多奇奇怪怪的东西,这些就是跨格式标记(Style Override)代码,这里的代码使用了漫游提供的《魔法使的注意事项》中动画名称显示特效的代码,我们把它添加在自己创建的SSA文件中的[Events]部分里面。至于代码是怎样起作用的,以及如何使用代码,不要急,心急吃不了热豆腐。

总结一下,我们介绍了几个概念,也许现在你对于这些概念还是一头雾水,没有关系,头脑里有个大概的印象就可以了,我们一步一步来。简单重复一遍,SSA文件分为[Style Info]信息部分、[V4 Stlye]格式部分、[Events]事件部分等;格式部分中以Style为行首标记一行文本定义了一种风格的字幕格式,我们可以定义很多种格式,但是必须有Default格式;[Events]中以Dialogue为行首的一行文本是一个对话事件,用来显示字幕,以分号为行首的是注释,脚本执行的时候会忽略;高级字幕格式设置需要使用被称作跨格式标记(Style Override)的代码。记住它!

第二节 格式
我们在本章第一节介绍了格式的有关概念,我们认识到格式是对字幕风格的定义。具体的定义方法我们还不了解,只能使用SubCreator生成代码,下面我们将自己创建新的格式。首先我们学习格式的定义方法,介绍定义格式的各个字段及其功能,然后我们利用第一章的例子手动添加新的字幕格式。

字幕格式的定义很简单,在[V4 Style]下一行写入Format字样,表示这是格式的内容先看例子:

引用内容:
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding

Format:表示定义格式的内容。这里的冒号不能省略。这一行必须紧跟在[V4 Style]之后,要在所有以Style:开始的格式定义之前,这样脚本中定义的格式才能被正确识别。冒号之后跟着若干字段,每个字段之间用逗号分隔。这些字段的名字是规定好的,不能随意改变,所以在书写的时候一定要保证正确拼写所有的字段。字段的顺序就是下面定义格式所使用的顺序。在定义格式之前,必须了解每个字段的含义。
Name 定义格式的名称。比如叫做“SubFont”,表示主字幕所使用的格式。注意的事情:叫做“SubFont”和“subfont”名字的表示不同的格式,也就是说这个字段是区分大小写。前面介绍过,无论SSA文件可以定义多少个格式,但是必须有Default格式,这个“Default”就是格式的名称。所以第一个格式的名字总是Default。
Fontname 使用的字体。比如“Verdana”,表示字幕使用这种字体,一般使用中文字体的时候可能你会输入“黑体”或者“楷体_GB2312”这样的文字,但是我建议使用字体本身的英文标识比较好,比如“SimHei”。这个字段同样区分大小写。
Fontsize 字体大小。通常是一个数字。比如“12”,表示12号字体,如果前面所说的Fontname字段使用的是宋体,那就表示宋体12号。
PrimaryColour 原始颜色。我们在第一章创建字幕文件的时候讲过用十进制和十六进制表示颜色的方法,同样,这里也可以这样表示颜色。使用长整型的十进制数字或者使用八个字节(我们以前提到的六个字节表示十六进制颜色值,再加上&H这两个字节表示这是一个十六进制数字)的十六进制数字表示颜色。我再一次推荐使用十六进制表示颜色,在以后的学习中你会发现它的好处。这个颜色表示字幕使用的主要颜色。
SecondaryColour 第二颜色。当字幕变换颜色与原始颜色冲突时显示这个颜色。最常用的例子是卡拉OK的字体变色效果,有时候制作标题效果时候也会用到。
TertiaryColour 第三颜色。当字幕变换颜色与原始颜色和第二颜色冲突时显示这个颜色。第三颜色即为轮廓线颜色,当使用轮廓线的时候,其颜色取决于此值。
BackColour 背景颜色。当使用轮廓和阴影时,这个颜色就表示轮廓和阴影的颜色。一般来说,轮廓能够正常表示出这个颜色,而阴影颜色稍微暗一些。
Bold 加粗。决定是否加粗字体。1表示加粗,0表示不加粗。
Italic 倾斜。决定是否倾斜字体。1表示倾斜,0表示不倾斜。
BorderStyle 边框样式。1表示使用字体轮廓和阴影,3表示用一个矩形做字幕的背景。如果使用矩形做为字幕的背景,背景颜色就是BackColour字段定义的颜色。
Outline 轮廓量。范围在0到4之间,单位是像素。
Shadow 阴影量。数值设置和轮廓一样。注意一个细节,如果你不想使用边框样式,可以将其设置成1,即用字体轮廓和阴影,然后将Outline和Shadow都设置为0即可。
Alignment 字幕位置。共有九个数字可供设置,每个数字代表一个位置:1、底部左对齐;2、底部居中;3、底部右对齐;5、顶部左对齐;6、顶部居中;7、顶部右对齐;9、中部左对齐;10、中部居中;11、中部右对齐。有个简单的记忆方法:1表示左对齐,2表示居中,3表示右对齐,在此基础上加4表示字幕在顶部,加8表示在中部。例如顶部居中是6,即(居中)2+(顶部)4=(顶部居中)6。
MarginL 左边距。设定字幕距离屏幕最左端的空白宽度,单位是像素。
MarginR 右边距。设定字幕距离屏幕最右端的空白宽度,单位是像素。
MarginV 垂直边距。依据字幕所在位置不同而含义有所不一。当字幕在底部时,表示字幕距离屏幕最底端的空白高度;当字幕在顶部时,表示字幕距离屏幕最顶端的空白高度;当字幕在中部时,这个字段所定义的数值忽略不计,字母将被垂直居中显示。单位是像素。
AlphaLevel 透明值。这个字段本来用于设置字幕的透明度,但是SSA中并没有真正使用,所以一般我们都是设置为0。
Encoding 编码。用于文本的编码,英语使用0,简体中文使用134。如果不能确定使用的编码,建议都设置为0。

定义格式的时候要以Style:开头,后面按照每个字段的顺序设置相应的值。下面我们添加一个新的格式,用来显示动画的主标题。格式的名称叫做Title,使用宋体(simsun)24号字,加粗不倾斜,原始颜色和第二颜色都使用白色,第三颜色使用纯红色,背景颜色代码&Hcdbe91,使用字体轮廓和阴影,宽度分别是3和1,字幕要求底部居中,左右边距都是30像素,距屏幕底部5像素,使用简体中文编码。按照书写格式,应该是这样的:

引用内容:
; 标题
Style: Title,simsun,24,&Hffffff,&Hffffff,&H0000ff,&Hcdbe91,0,0,1,3,1,2,30,30,5,0,1

把它加入到[V4 Style]部分中Default格式的下面,这样一个新的格式就定义成功了。我们练习一下这部分的内容,分别定义几个新的格式,并添加到你的SSA文件中,我们将在以后的学习过程中用到这些定义的格式:

引用内容:
; 日文歌词
Style:SongJap,MS PGothic,12,&HFFFFFF,&Hffffff,&H000000,&H008080,0,0,1,2,3,6,30,30,0,0,0
; 歌词罗马注音
Style:SongRom,Comic Sans MS,14,&Hff5000,&Hffffff,&H00ff00,&Haaccff,0,0,1,2,2,6,30,30,0,0,0
; 中文歌词
Style:SongChn,simhei,14,&H00ffff,&Hffffff,&H0000ff,&Hff8000,0,0,1,2,3,2,30,30,5,0,134

注意,我们在日文歌词这个格式中使用了MS PGothic字体,这是日文字体,一般并不存在于中文操作系统的计算机上,需要额外的下载。XP的多国语言和Office的日语支持都会自动安装这种字体。
第三节 事件

事件包含了字幕的文本,显示时间,使用的字幕格式等内容,这里仅介绍对话(Dialogue)事件。前面介绍过,[Events]标签下一行紧跟着事件格式的定义,我们具体介绍定义的方法和内容。然后生成几个新的事件,练习所学过的内容。先看看事件格式的定义:

引用内容:
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

和字幕格式的定义一样,事件格式的定义也是以Format:开始的,这里的冒号不可省略。后面是若干字段,字段之间用逗号分隔。字段的拼写必须正确,否则将无法正确执行SSA文件脚本。使用事件的时候必须按照这个定义的顺序写入事件各个字段的具体值,开头以具体的事件类型加冒号开头,例如加入新的字幕事件,就以Dialogue:开头。具体介绍各个字段的含义:

Marked 标记。Maked=0表示不被标注;Maked=1表示被标注。通常使用Maked=0。
Start 字幕起始时间。格式是h:mm:ss:xx。h是小时,m是分,s是秒,x是百分秒。例如:0:02:23:45表示这个事件从2分23秒450毫秒的地方开始。有时候习惯把百分秒和秒写到一起,中间用小数点隔开,所以0:02:23.45也是正确的。注意,小时只能是一位数字。
End 字幕终结事件。格式同起始时间。小时只能是一位数字。
Style 字幕格式。当前字幕所使用的格式。我们在上一节中讲到的格式就是在这里使用,输入格式的名称(Name)字段即表示使用该格式。例如,我们使用前面定义的标题格式,那么这里输入Title。
Name 字幕名称。专门标注事件的标识符,一般情况下这项省略不添,但是跟在它后面的逗号不可省略。
MarginL 左边距。格式:dddd,d表示一位数字。如果全部为0,则使用Style中定义的左边距。否则优先使用当前定义的左边距。
MarginR 右边距。使用方法同左边距。
MarginV 垂直边距。使用方法同左边距。
Effect 变换效果。留空表示不使用任何效果,但是后面的逗号不能省略。或者使用SSA规定的几个效果滤镜,详细的效果使用方法会在稍后讲解。
Text 字幕文本。真正用于在屏幕上显示字幕的文本,由于前面已经有九个逗号存在,所以此后的字符串都被认为是文本,当然也包括逗号。字幕换行可以使用\n,也可以在字幕文本中使用跨格式标记(Style Override)代码。

我们先练习一下刚刚讲述的内容,在片子(今后如果不作特别说明,片子指《魔法使的注意事项》第一话片源,字幕文件指第一章创建并在以后不断完善的字幕)的1分40到2分20之间添加一行字幕。我们的字幕还要用新的叫做Shiner的格式。在字幕文件中加入下面内容,先看代码:

引用内容:
……
[V4 Style]
……
; 自定义格式
Style: Shiner,simhei,15,&Hffffff,&Hff00ff,&H0000ff,&Hcdbe91,0,0,1,2,2,6,10,10,5,0,134
[Events]
……
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,,字幕显示测试
……

根据所学的内容,我们应该能够看懂上面代码的意思。首先我们创建了名为Shiner的字幕格式,使用黑体15号字,原始颜色白色,第二颜色纯紫色,第三颜色纯红色,背景颜色石青色,文字加粗不倾斜,使用字体轮廓和阴影效果,轮廓和阴影宽都为2像素,字幕顶部居中显示,左右边距均为10像素,距屏幕顶部5像素,简体中文编码。然后我们在事件部分中添加了一个新的对话事件,从1分40显示到2分20结束,使用刚才定义的Shiner格式,使用默认的左右边距和垂直边距,显示的字幕是“字幕显示测试”。保存SSA文件,运行播放器看到,在我们规定的时间内,字幕正确地显示在屏幕上,各种效果和设置的完全一样。如图:

第三章 SSA格式高级篇

SSA做字幕特效主要依靠其变换滤镜和跨格式标记代码实现的,我们终于进入到SSA的核心部分进行深入的学习,有了前面的知识做基础,就很容易掌握特效的制作方法。
第一节 变换滤镜

变换滤镜是上一章事件中介绍的内容,属于事件的一个字段。变换滤镜(Effect)字段留空表示不使用任何的变换效果,也可以设置为SSA指定的几种滤镜效果。下面分别介绍:

Karaoke 卡拉OK滤镜。使用此滤镜可以使字幕在一个时间内被连续匀速的高亮显示。显示前的字幕使用第二颜色,高亮后的字幕使用原色颜色。控制速度在Text字段中实现,使用{\K<Speed>}表示速度,要求写在Text字段的开头位置。下面举个例子:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,Karaoke,{\K100}字幕显示测试

我们还是使用上一章添加的那个事件,其他字段不变,在Effect字段的位置写入Karaoke,表示使用卡拉OK滤镜,在Text字段开始部分加入{\K100},表示卡拉OK效果的速度,其中100是具体的速度,数值约小,速度越快,数值越大,速度越慢。我们运行播放器看一下实际的效果:

图2.2 Karaoke滤镜演示效果
Karaoke滤镜在实际运用当中并不常见,而且在高级SSA格式中已经被淘汰。使用此滤镜制作卡拉OK效果也并不理想,最关键的原因是这个滤镜带来的渐变效果是匀速的!绝大多数歌曲中歌词显示的速度都是不一致的,我们不能使用它创建歌词中的卡拉OK效果。

Scroll up;y1;y2;delay[;fadeawayheight] 向上滚动。Scroll up是带有参数的滤镜,其参数紧跟在Scroll up之后,以分号分隔。y1和y2参数表示在垂直位置滚动的范围,单位是像素,y1与y2的大小关系无所谓,只要标清楚滚动时最低位置的像素和最高位置的像素即可,需要注意,屏幕顶端的垂直位置是0,然后向下坐标值增大,类似于笛卡尔坐标系的第四象限,只不过y值是正整数。delay参数表示垂直滚动的速度,范围从0到1000,数值越大速度越慢,数值越小,速度越快,当数值为0的时候,移动的速度非常快,可以说是一闪而过。fadeawayheight是个可选参数,表示字幕在边缘透明的效果,数值越大,透明效果越强烈。需要注意,有些编译器并不支持透明值这个参数,不过好在我们的VobSub支持,这样就足够了。我们写一行利用Scroll up滤镜显示的字幕:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,Scroll up;40;280;60;50,字幕显示测试

可以看出,这个例子只是把Karaoke滤镜的例子改了一下。滚动范围从280开始向上到40,速度60,透明度50。由于这种效果静态图片难以呈现,所以我就不截图了,大家可以自己打开播放器试着看看效果。

Scroll down;y1;y2;delay[;fadeawayheight] 向下滚动。使用方法和向上滚动一样。
Banner;delay[;direction][;fadeawaywidth] 水平滚动。delay表示滚动的速度。direction是可选参数,表示滚动的方向,0表示从右向左滚动,1表示从左向右滚动。fadeawaywidth也是可选参数,表示字幕在边界的透明度。Banner滤镜最常见的例子就是动画中的免责信息。动画制作字幕组一般都会在动画的OP结束之后,在屏幕顶部显示一行免责信息,我们稍微修改一下Scroll up的例子就可以实现这个效果:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,Banner;40;0;80,本字幕仅供试看之用,请于下载后24小时之内删除,禁止用于任何商业行为,若因私自散步造成法律问题,XXX字幕组恕不负责。

我们把Effect字段改为Banner滤镜,速度40,从右向左滚动,透明度80。保存字幕文件,运行播放器查看显示效果,如图:

图2.3 用Banner滤镜制作免责信息
第二节 跨格式标记
嗯,终于到此部分了。前面我们多次说过跨格式标记(Style Override),不敢深入研究,跨格式标记非常复杂,但是又不得不提到,因为SSA文件是一个有机的整体。不过这回我们是真的要钻到跨格式标记的世界中。Style Override用于在当前选定Style的前提下,Text字段中个别文本有别于Style指定格式的时候,使用Style Override标签将使Style定义的格式无效,而相应的文本使用标签定义的文本,仿佛标签的效用覆盖了Style的效用,所以称它为跨格式标记。SSA丰富的字幕特效基本上都是由Style Override来完成的,通过不同的组合标记和不同的参数设置,就会产生奇妙的字幕效果,简直就是万花筒!

Style Override,我把它称作“跨格式标记”,也许并不恰当。或许你认为翻译成“覆盖标签”或者“风格重叠”更合适,不管它叫什么,我们关心的是它的实际效果,所以请将就我的翻译名称。

绝大多数Style Override(以后简称SO标签)标签都被放置于一对大括号{}中,每个标签都要以反斜杠(\)开始。有些标签甚至允许嵌套使用。标签后面的文本将全部使用标签定义的内容,如果只需要选定的文本使用标签定义,需要在该文本后加入取消标签使用的标签。有些标签,例如设置文本对齐方式的,将自动应用于全体文本,使用取消标签也无济于事。我们先介绍一些简单的标签:

\n 换行。如果开启智能判断换行,此标签无效。
\N 强制换行。不管智能判断换行是否开启,均强制换行。这两个标签是唯独不用被放置在大括号中的。我们可以用来制作垂直显示的字幕。修改Banner滤镜代码,加入强制换行:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,-0350,0000,0000,,字\N幕\N显\N示\N测\N试

这里主要去掉了Effect字段的Banner代码。因为使用Shiner格式,所以字幕是居中显示的,为了让字幕显示在左边,用现在学过的知识,我们将MarginL字段的边距调整为-350,这样字幕就会向左移动350个像素。运行播放器,显示效果如图:

图3.1 强制换行
\b<0/1> 加粗。1表示开启,0表示关闭。
\i<0/1> 倾斜。1表示开启,0表示关闭。
\u<0/1> 下划线。1表示开启,0表示关闭。
\s<0/1> 删除线。1表示开启,0表示关闭。

综合这些特性,我们练习一下。因为加粗效果不容易观察,先改动[V4 Style]部分中Shiner格式定义的字体大小为32号。然后加上字母,这样容易识别加粗效果。改动示例代码,分别加入这几种效果:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,-0280,0000,0000,,{\b0}(ZI)字\N{\b1}(MU)幕\N{\i1}显\N{\i0}示\N{\u1}测\N{\u0}试\N{\s1}效\N{\s0}果

注意其中MarginL字段由原来的-350改成了-280,原因在于增大字体会从屏幕左端溢出。Text字段中的标记分别检测这几种效果。更改完毕后保存字幕文件,运行播放器查看效果如图:

图3.2 加粗、倾斜、下划线和删除线效果
bord<width> 轮廓。设定轮廓宽度。
\shad<depth> 阴影。设置阴影深度。
\be<0/1> 柔化。是否开启边界柔化效果。0表示关闭,1表示开启。

下面写个例子,留下点感性认识。还是修改前面的例子吧,MarginL改回0000,横行显示字幕,“字幕”这两个字使用轮廓量为8,阴影效果为2,“显示”两个字使用轮廓量2,阴影效果为8,“测试效果”都是使用轮廓量为4,阴影效果为2,只不过前面两个字开启边界柔化,后两个字关闭了边界柔化。具体代码如下:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,,{\bord8}字幕{\bord2}{\shad8}显示{\shad2}{\bord4}{be1}测试{\bord4}{\be0}效果

在具体的测试中,柔化效果十分不明显,尤其是当字体比较小,或者带有宽度较小的轮廓的时候更不明显,当字体较大,带有较宽的轮廓或者不带轮廓的时候柔化鲜果就可以看出来了。实际显示的效果可以运行播放器观看,如图:
图3.3 轮廓、阴影和柔化特效

\r[<style>] 格式变换。style参数是可选的,表示将要使用的格式名称,留空表示恢复当前格式。通常用于恢复格式,取消SO标记。使用过多SO标记会使字幕变得凌乱,快速的恢复方法就是加上\r。
\fn<font name> 字体。font name参数为要改变的字体名称,和Style中fontname字段设置相似。例如:\fnsimhei。
\fs<font size> 字体大小。font size参数为要改变的字体型号,和Style中fontsize字段设置相似。例如:\fs16。
\fsc<x/y><percent> 字形变换。x表示水平变换,y表示垂直变换,persent参数输入整数,是变换的百分比。percent在1~100之间表示缩小,大于100表示放大。例如:\fscx33表示水平缩小字体到原来的1/3;\fscy200表示垂直放大字体为原来的2倍。
\fsp<pixels> 字间距。pixels表示字间距大小,单位是像素,默认字间距为0。
\fr[<x/y/z>]<degrees> 字体旋转。x,y,z分别表示旋转轴,是可选参数,如果留空则表示沿着z轴旋转,即效果和\frz相同。degrees参数是旋转的角度,正整数表示逆时针旋转,负整数表示顺时针旋转。注意,\fr300和\fr-60是同样的效果,在坐标系中300度和-60度都位于第四象限并且位置重合。但是300和-60不能混为一谈,在下一节讲到的渐变函数中他们实现的效果不同,300是逆时针旋转,-60是正时针旋转,不过最终都停止在同一位置。详细的内容我们在讲解渐变函数的时候再讨论。
\fe<charset> 字符集。决定当前文本的编码,charset参数设置同Style中的Encoding字段。

一下子介绍这么多SO标记,恐怕难以消化,动手实践是最好的方法。请跟着我一起练习实际运用这些标记。为了多显示几行文本,请把Shiner这个Style中的fontsize字段改为24号字。我们这个示例首先显示一行标准文本,然后在这个标准的基础上做各种变换,每次变换以后使用恢复格式标记,保证每个变换相互独立,互不干扰。先看示例代码:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,,正常文本显示\N{\fnsimsun}改变为宋体文字{\r} {\fs12}改变为12号字{\r}\N{\fscx50}水平缩小50%{\r} {\fscx150}水平放大150%{\r}\N{\fscy50}垂直缩小50%{\r} {\fscy150}垂直放大150%{\r}\N{\fsp8}字符间距为8像素

你可能已经发现了,我们编写的代码中,Text字段的内容越来越多,但是无论有多少,绝对不可以换行,切记,否则脚本无法执行。在示例中,每种显示效果完结后都使用了\N标记强制换行,这样能够在一屏幕中显示更多的内容。不要怕麻烦,仔细读懂这段代码,然后在你的大脑中将其所展示的效果呈现出来,然后保存字幕文件,运行播放器看看实际效果与你的想象是否一致,如图:

图3.4 字体变换特效
接下来我们实践各种旋转效果。旋转效果的实践必须独立进行,这是因为字幕在旋转的时候所选则的旋转轴不同的缘故。x轴旋转时,旋转轴是当前文本垂直对齐位置。当顶部显示文本时,x轴就在顶部;中部显示文本时,x轴就在中部;底部显示文本时,x轴就在底部。y轴旋转时,旋转轴是当前文本水平对齐位置。当左对齐文本时,y轴就在最左边;当居中对齐时,y轴就在正中间;当右对齐文本时,y轴就在最右边。z轴旋转时,旋转轴在旋转文本的中心位置。首先看一下x轴旋转代码:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0060,,正常 {\frx10}10 {\frx30}30 {\frx60}60 {\frx88}88 {\frx120}120 {\frx150}150 {\frx180}180

x轴代码中,我将MarginV下调了60像素,原因是超过90度的旋转将出现在x轴的上部。我使用88度旋转效果,这样还能显示出来,如果使用90度旋转,字幕将消失(字幕是没有厚度的)。我只演示了0~180度的旋转,各位有兴趣的可以试着制作180~360的旋转。

图3.5 x轴旋转效果

y轴旋转示例中使用\N标记,前面说过居中对齐时y轴在正中央,如果都集中在一行显示将不能正确获得其作用效果,先看代码:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,,正常文本显示\N{\fry10}转\N{\fry30}转\N{\fry60}转\N{\fry88}转\N{\fry120}转\N{\fry150}转\N\N{\fry180}转\N\N{\fry225}转\N\N{\fry315}转

y轴旋转示例演示了10、30、60、88、120、150、180、225、315这些度数的旋转效果。如图:

图3.6 y轴旋转效果
z轴演示比较好制作,不过为了显示所有旋转效果,需要将MarginV设为144,示例代码如下:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0144,,{\fr10}转{\fr30}转{\fr60}转{\fr90}转{\fr120}转{\fr150}转{\fr180}转{\fr225}转{\fr315}转{\fr360}转

z轴旋转示例效果图中,字幕以中间的红点为圆心,在屏幕所在的平面内沿着绿色线条表示的路径旋转,如图:

图3.7 z轴旋转效果
有时候你希望在不变换格式的情况下显示两种语言文字,比如在一行文本中既显示中文又显示日文,需要使用\fe标记转换编码。示例中第一行文字不使用编码转换显示日文和中文,第二行文字中日语部分使用日文字体和编码转换:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,,中文显示 日本語の見ました\N中文显示 {\fe1}{\fnMS PGothic}日本語の見ました

运行播放器,查看显示效果发现,\fe标记使用与否的影响很大,后者显示效果明显好于前者:

图3.8 编码标记效果
\a<alignment> 对齐方式。一旦使用此SO标记,整个文本都将按照其设置的方式去对齐。alignment参数的设置同Style中alignment参数一样。比较简单的标签,不再单独演示,有兴趣可以自己尝试制作例子。
\[<1/2/3/4>]c&H<bbggrr>& 颜色标记。1~4的选择参数依次分别表示原始颜色、第二颜色、背景颜色和第三颜色,可选,如果留空默认表示原色颜色。bbggrr参数是十六进制颜色值,设置方法前面已经讲解过。

下面的示例将演示此标签的使用方法。由于第二颜色和第三颜色必须有其他效果配合才能出现,所以我使用了本章第一节介绍的Karaoke滤镜,详细的颜色设定不再一一介绍,读者应该能够自己分析代码。没有这种能力也要练习:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,Karaoke,{\K300}默认颜色 {\c&H0&}原色颜色变色{\r} {\2c&Haa00&}第二颜色变色{\r}\N{\3c&Hffff00&}背景颜色变色{\r}\N{4c&H0&}第三颜色变色{\r}\N{\c&H00ffc0&\2c&H1122cc&\4c&Hff00ff&}组合变色

演示效果分为Karaoke滤镜生效时和生效后两个,作为对比,放在一起:

图3.9 改变颜色
\<1/2/3/4>a&H<aa>& 颜色透明度。1~4参数的含义同上面讲到的一样,只是这里不可省略此参数。aa表示透明的程度,十六进制数表示。0为不透明,ff为全透明。请看此标记的示例,其中使用了原始颜色透明和背景颜色透明两种效果:

引用内容:
Dialogue: Makerd=0,0:01:40.00,0:02:20.00,Shiner,,0000,0000,0000,,字幕{\1a&Hff&}效果{\r}\N字幕{\3a&Hc0&}效果

图3.10 透明颜色
\K<duration> 卡拉OK效果。我们曾经介绍过Karaoke滤镜制作卡拉OK效果,但是并不理想,因为Karaoke滤镜只能匀速高亮显示文本,做不到精准控制。\K标记则能满足我们的需要。duration参数就是实现精准控制的关键,表示当前文本使用卡拉OK特效的时间长度,单位是百分秒。现在我们添加《魔法使的注意事项》的OP歌词,漫游的字幕中带有歌词的代码,我们直接使用即可。歌词中包括罗马字注音,日文原文和中文翻译。详细代码如下:

引用内容:
Dialogue: Marked=1,0:00:00.20,0:00:03.10,SongChn,,0000,0000,0000,,在做梦之时
Dialogue: Marked=1,0:00:00.20,0:00:03.10,SongRom,,0000,0000,0000,,{\K40}{\K140}yume {\K40}too {\K30}ki
Dialogue: Marked=1,0:00:00.20,0:00:03.10,SongJap,,0000,0000,0000,,夢遠き
Dialogue: Marked=0,0:00:03.10,0:00:11.70,SongChn,,0000,0000,0000,,谁都无法瞧见明日之事吧
Dialogue: Marked=0,0:00:03.10,0:00:11.70,SongRom,,0000,0000,0000,,{\K30}{\K40}ashi {\K20}ta {\K60}no {\K40}ko {\K30}to {\K40}wa{\K60} {\K70}dare {\K70}ni {\K90}mo {\K50}mi {\K50}e {\K30}nu {\K40}de {\K30}sho {\K10}u
Dialogue: Marked=0,0:00:03.10,0:00:11.70,SongJap,,0000,0000,0000,,明日のことは 誰にも見えぬでしょう
Dialogue: Marked=0,0:00:13.40,0:00:19.10,SongChn,,0000,0000,0000,,当闭上双眼想着你的时候
Dialogue: Marked=0,0:00:13.40,0:00:19.10,SongRom,,0000,0000,0000,,{\K30}{\K80}me {\K30}o{\K30} {\K20}to {\K15}ji {\K15}te{\K80} {\K80}Kimi {\K30}o{\K30} {\K50}omo {\K30}u
Dialogue: Marked=0,0:00:13.40,0:00:19.10,SongJap,,0000,0000,0000,,目を閉じて君を想う
Dialogue: Marked=0,0:00:19.50,0:00:25.70,SongChn,,0000,0000,0000,,总有一天就可以和你相逢的
Dialogue: Marked=0,0:00:19.50,0:00:25.70,SongRom,,0000,0000,0000,,{\K30}{\K30}i {\K90}tsu {\K80}ka {\K80}de {\K80}a {\K80}u
Dialogue: Marked=0,0:00:19.50,0:00:25.70,SongJap,,0000,0000,0000,,いつか出会う
Dialogue: Marked=0,0:00:25.70,0:00:32.30,SongChn,,0000,0000,0000,,风呀 花呀 快点绽放吧
Dialogue: Marked=0,0:00:25.70,0:00:32.30,SongRom,,0000,0000,0000,,{\K30}{\K60}kaze {\K50}no{\K50} {\K60}hana {\K50}yo{\K50} {\K30}sa {\K50}a {\K70}hira {\K50}ku {\K30}no {\K30}yo
Dialogue: Marked=0,0:00:25.70,0:00:32.30,SongJap,,0000,0000,0000,,風の花よ さあ開くのよ
Dialogue: Marked=0,0:00:32.30,0:00:38.70,SongChn,,0000,0000,0000,,令我亲眼瞧见春天的气息
Dialogue: Marked=0,0:00:32.30,0:00:38.70,SongRom,,0000,0000,0000,,{\K30}{\K140}watashi {\K70}no {\K30}ko {\K40}no {\K20}me {\K30}ni{\K50} {\K30}haru {\K30}o{\K40} {\K40}mi {\K30}se {\K30}te
Dialogue: Marked=0,0:00:32.30,0:00:38.70,SongJap,,0000,0000,0000,,私のこの目に 春を見せて
Dialogue: Marked=0,0:00:38.90,0:00:45.50,SongChn,,0000,0000,0000,,风呀 花呀 快点绽放吧
Dialogue: Marked=0,0:00:38.90,0:00:45.50,SongRom,,0000,0000,0000,,{\K30}{\K60}kaze {\K50}no{\K50} {\K60}hana {\K50}yo{\K50} {\K30}sa {\K50}a {\K70}hira {\K50}ku {\K30}no {\K30}yo
Dialogue: Marked=0,0:00:38.90,0:00:45.50,SongJap,,0000,0000,0000,,風の花よ さあ開くのよ
Dialogue: Marked=0,0:00:45.50,0:00:51.60,SongChn,,0000,0000,0000,,再会吧 冬天的街景
Dialogue: Marked=0,0:00:45.50,0:00:51.60,SongRom,,0000,0000,0000,,{\K30}{\K30}sa {\K50}yo {\K70}na {\K60}ra{\K30} {\K80}fuyu {\K50}no {\K60}machi
Dialogue: Marked=0,0:00:45.50,0:00:51.60,SongJap,,0000,0000,0000,,さよなら 冬の街
Dialogue: Marked=0,0:00:51.90,0:00:58.60,SongChn,,0000,0000,0000,,风呀 花呀 快点绽放吧
Dialogue: Marked=0,0:00:51.90,0:00:58.60,SongRom,,0000,0000,0000,,{\K30}{\K60}kaze {\K50}no{\K50} {\K60}hana {\K50}yo{\K50} {\K30}sa {\K50}a {\K70}hira {\K50}ku {\K30}no {\K30}yo
Dialogue: Marked=0,0:00:51.90,0:00:58.60,SongJap,,0000,0000,0000,,風の花よ さあ開くのよ
Dialogue: Marked=0,0:00:58.60,0:01:05.10,SongChn,,0000,0000,0000,,呼唤春天来到我心中吧
Dialogue: Marked=0,0:00:58.60,0:01:05.10,SongRom,,0000,0000,0000,,{\K30}{\K140}watashi {\K70}no {\K90}kokoro {\K30}ni{\K50} {\K30}haru {\K30}o{\K40} {\K40}yo {\K30}n {\K30}de
Dialogue: Marked=0,0:00:58.60,0:01:05.10,SongJap,,0000,0000,0000,,私の心に 春を呼んで
Dialogue: Marked=0,0:01:05.10,0:01:11.70,SongChn,,0000,0000,0000,,风呀 花呀 快点绽放吧
Dialogue: Marked=0,0:01:05.10,0:01:11.70,SongRom,,0000,0000,0000,,{\K30}{\K60}kaze {\K50}no{\K50} {\K60}hana {\K50}yo{\K50} {\K30}sa {\K50}a {\K70}hira {\K50}ku {\K30}no {\K30}yo
Dialogue: Marked=0,0:01:05.10,0:01:11.70,SongJap,,0000,0000,0000,,風の花よ さあ開くのよ
Dialogue: Marked=0,0:01:11.70,0:01:17.90,SongChn,,0000,0000,0000,,再会吧 披上雪衣的街景
Dialogue: Marked=0,0:01:11.70,0:01:17.90,SongRom,,0000,0000,0000,,{\K30}{\K30}sa {\K50}yo {\K70}na {\K60}ra{\K30} {\K80}yuki {\K50}ta {\K20}chi {\K30}yo
Dialogue: Marked=0,0:01:11.70,0:01:17.90,SongJap,,0000,0000,0000,,さよなら 雪たちよ

乍看起来,代码很长,让我们耐心的分解来看。我们可以把每三行代码看作一部分,每一部分都是由一行中文歌词,一行日文原文和一行带有SO标签的罗马字注音歌词组成的。这里用到了我们在第二章讲解Style的时候定义的三个格式。现在着重看倒数第二行代码:

引用内容:
Dialogue: Marked=0,0:01:11.70,0:01:17.90,SongRom,,0000,0000,0000,,{\K30}{\K30}sa {\K50}yo {\K70}na {\K60}ra{\K30} {\K80}yuki {\K50}ta {\K20}chi {\K30}yo

Text字段开头是{\K30}{\K30}sa,第一个标记并没有跟随文本,这是为什么呢?其实,当本行字幕显示出来的时候,就是Start字段所标注的时间,演唱者并没有开始发第一个音节,这个时候直接使用\K标记就显得与歌曲不合节奏了,所以先等待0.3秒(第一个标记的作用)。同样中间有一部分:{\K60}ra{\K30} {\K80}yuki,它的意义是当ra这个音节用0.6秒发完后,空出0.3秒,然后紧跟着用0.8秒的时间开始发下一句第一个词的音节yuki。这回我们实际演示一下效果。

\k<duration> 此标记和\K标记原理一样,只不过是\K标记是平滑过渡,\k是整体过渡。具体效果读者可以自行将歌词中的\K变换成\k查看。