SSA动态字幕制作技术详解 - 纯属转贴
0
我们要学好SSA主要从两个方面着手:一个是SSA文件的组成结构;一个是SSA代码。 4j(*%da 一.SSA文件的组成结构 Lie= DD SSA文件主要由三大部分组成:[Script Info]部分,[v4 Styles]部分和[Events]部分。 Knp}88DR^j 1.[Script Info]部分 YXg^t$ PlayResX: 384 3x=NSe|f PlayResY: 288 uM[[skc 384×288是标准的4:3画面分辨率之一。ssa字幕里的坐标(字幕的位置)即根据这2个数值的范围来定义。16:9宽银幕的片子略做调整即可。 D7Ds*X`!l 这里主要介绍文件本身和制作者的信息,这里面最重要的两项是PlayResX和PlayResY,它实际上是按给定的PlayResX和PlayResY数值将屏幕按比例化分,屏幕的左上角坐标为(0,0),右下角坐标为(PlayResX数值,PlayResY数值).这两个值最好是和视频文件的长宽相同,这样在下面[Events]部分文本位置坐标的设定很方便而且准确. wS [k} 当然这两个值也可能和原视频文件的长宽不同,比如视频文件尺寸为640x360,而PlayResX:384,PlayResY: 288,如同前面所说的,它是将屏幕长宽按384:288来化分的.一旦这样划定,下面的各种坐标设定都要以384和288为根据. lr[&*v?h 特别要注意的是:对于一个已经存在并且文本坐标都设置好的SSA文件,如果它的PlayResX和PlayResY数值和视频文件的长宽尺寸不符(包括成比例的情况,比如视频文件尺寸为640x360,而PlayResX:320,PlayResY: 180),我们不要简单的把PlayResX和PlayResY数值改成屏幕尺寸,这样将导致字幕失真,是因为文本部分的尺寸并没有改,仍按照原来的PlayResX和PlayResY数值设定.如果有较多的坐标设定,就不要改原来的PlayResX和PlayResY数值,在原基础上编辑. Yez
2.[V4 Styles]部分 a
fB?js6 这是个存放[Events]部分里所用到的各种字体信息的地方.可以存在多种字体,每种字体有多种特征.当[Events]部分的Name项引用到这里的某种字体时,则意味这该字体的各种特征也被引用.字体的特征还可以在文本行中修改,这将在[Events]部分讨论. w ; PV
&M 常见的字体属性有Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding P u}PE-b 我们可以再定义一个Style,并命名为mine,如Style: mine,华文新魏,18,&HFF0000,&HFF80FF0,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134 ^AT#A<{1( 即可以这样: d3 p;[;` [V4 Styles] V_9>Z? Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle,Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding %sS7o3RW\ Style: Default,华文彩云,18,&Hff0000,&Hff8080,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134 HqA3.<=F, Style: mine,华文新魏,18,&HFF0000,&HFF80FF0,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134 u2 U4MV1C
有了具体经验后,一般可以不作调整,需要改动的可以是“Fontname”,如改成黑体, “Fontsize”,做字幕字号24比较合适。至于最后的“Encoding”,134表示简体中文的编码,繁体中文的编码为136。 $I a-go2W 下面对各项作一说明,并列出属性的取值及范围 &uJ7[m19z Name ---字体名称---[Events]部分将引用该项,比如Default,Font1等 ;W!hl<``d* Fontname ---所使用的字型---比如黑体,楷体_GB2312等.对新载入的SSA文件,VOBSUB不会识别出宋体以外的字型,都按宋体输出.但可以在DirectVobSub中重新定义 ~wd~57i@ Fontsize ---字体大小---常用范围8-72 7h.:XlUm| PrimaryColour ---主体颜色---颜色格式为&HXXXXXX,十六进制,X取值为0-f Jm}zit:o SecondaryColour ---次要颜色---格式同上,卡拉OK中使用,即变色前的颜,变色后显示主体颜色
\4&FW|mx TertiaryColour ---边框颜色---格式同上 S#,
E)h/ BackColour ---阴影颜色---格式同上 '|N9xLm 下面是一些常用颜色的代码,以便在文件中直接添加和编辑: '5"`H>[ &Hffffff 白 &H8080ff 浅红 &\o!-EIK8 &H000000 黑 &H80ffff 浅黄 *S4*FH;8 &H0000ff 深红 &HFF8000 亮蓝 ZX!u\O|w &H00ffff 深黄 &H80ff00 浅绿 K%"cVqb2V &Hff0000 深蓝 &H00ff00 亮绿 Zcn,_b7 &H008000 深绿 &Hff00ff 紫红(偏紫) A">A
@`} &H0080ff 橙 &H8000ff 紫红(偏红) +Ss|4O}' &Hff0080 紫 &Hffff00 浅蓝 8"g.Z* Bold ---粗体---0关闭,-1开启 -3T6ck Italic ---斜体---0关闭,-1开启 ]n:)W.|`R BorderStyle ---边框样式---取值1:正常,取值3:有一覆盖区域 V OViOD Outline ---边框宽度---取值范围1-4,数字越大边框越宽 >_$DKY>$` Shadow ---阴影距离---取值范围0-4,数字越大阴影越厚 Y@Kp'+t(! Alignment ---对齐方式---这是重中之重,学懂对齐方式等于学懂了一半的SSA,其用法将在下面的代码部分作详细的介绍,这里只作简单的说明(下面各位置的数字就是Alignment的取值,很好记:从1-11,没有4和8这两个数,其余都是连续排列): Gm.n@U p 左 中 右 <j.bG 7 上 5 6 7 XK>/i}y 中 9 10 11 bG0t7~!{E 下 1 2 3 +`x8[A)- MarginL ---字幕距左边的距离---取值范围0-PlayResX的数值
WoiK _Ud MarginR ---字幕距右边的距离---取值范围0-PlayResX的数值 1v4( MarginV ---字幕高度---取值范围0-PlayResY的数值 B{Sz
C=4f} D/Y .'
P:j AlphaLevel---字体透明度---透明度格式为&HXX,十六进制,X取值为0-f 1TKOvy_ Encoding ---编码---简体134,繁体138 MX?K3=j @> 3.[Events] hp}J_/+4n Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text EW{z?/ 从这里开始就是字幕部分了,以“Dialogue: Marked=0,0:00:01.34,0:00:02.05,Default,,0000,0000,0000,,”定义开头。如果只是单纯做字幕用,那么这句后面就是字幕部分了,而字幕的格式根据[V4 Styles]里设置的来显示。Default可以换用上面设置的mine,那么显示的格式是按照mine里面设定! >yn%.Uoh@ 这里是将[v4 Styles]部分中已定义的字体提供给字幕,并能对字体的各属性重新定义;通过特定的SSA代码实现特效. OZ1+` 4 v Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text !p1OBS| Marked---标记---一般都设为0 tqIz$84G Start ---字幕开始时间---格式0:00:00.00最小单位0.01秒 B3
'qmi< End ---字幕结束时间---格式同上 0CxQ@~ttl Style ---字体名称---引用的是[v4 Styles]部分中的Name项 c@:
r\] Name ---名字---注意这个Name和[v4 Styles]部分中的Name完全不同,相当于注释,一般省略,省略后只留一逗号. >UpTMEQ MarginL---是对[v4 Styles]部分MarginL值的重新设定,0000表示采用原值;若不为零,则代替原值(此时原值不再起作用) I;L$Nf{v MarginR---是对[v4 Styles]部分MarginR值的重新设定,用法同上 n\5` JNCb MarginV---是对[v4 Styles]部分MarginV值的重新设定,用法同上 .
x~tEe Effect---这里是SSA为编辑人员方便使用动态效果而自定义的代码,有Scroll up,Scroll down,Banner和Karaoke四种形式.为集中学习这里就不作介绍将其放到SSA代码部分说明. _$By c(.c Text---字幕区---在这里可以添加代码改变字体属性,实现多种特效 PEoOs 其实[v4 Styles]部分就是一个存放各种字体以及该字体属性初始值的一个场所,它的大小,颜色,字幕所在的位置等信息都放在这里;而[Events]部分则是把[v4 Styles]部分中的各个字体应用到文本中去,并且能够对已定义的字体的各种属性进行修改以达到需要的效果.打个比方,几种不同类型的木材,具有各自的原始尺寸颜色,经过加工改变大小涂上新的颜色(或者直接使用原料),从而做成各种家俱材料.[v4 Styles]部分就相当于放置这些原始木材的仓库,而[Events]部分则是执行怎样加工木材并将其安装到家俱上 [zK|OMxoV 二.下面介绍SSA代码的用法 /g712\?M4 SSA代码 m~#S76!w 首先对下面代码中用到的符号说明一下: l2=.;7IV <..>---参数 nbw&+dcJ8 [..]---可选项
"=
H7p3 <../..>---任选其中一项 tsU.c"^n 规定:所有代码之前加\ ?};}#%971 所有代码放在括号{}内,\N,\n,\h例外。 `ItMn&P \N---换行---换行后两行之间没有空隙 NDU,9A.P \n---空格---或直接按空格键,超出范围自动换行 R*E/E \h---空格---或直接按空格键\b<0/1>---粗体---0关闭,1开启 ' G-]> \i<0/1>---斜体---0关闭,1开启\bord<width>---边框宽度---width取值范围1-4,数字越大边框越宽 :HRJ49a \shad<depth>---阴影距离---depth取值范围0-4,数字越大阴影越厚\r<style>---改变字体---比如Default,Font1等 Uq~{=hMX \r\r---恢复成最初的字体 y)|Q~8r \fn<font name>---改变字型---比如黑体,楷体_GB2312等 D<#+
R" \fs<font size>---改变字号---常用范围8-72 \)DP(wC \fsc<x/y><percent>---字符缩放---x代表水平方向,y代表垂直方向,perecet取不小于0的数(小数也可以).默认大小为100(即100%) RERum \fsp<pixels>---调整字间距---pixels取值在实数范围内,可以是正数,零,负数.默认值为0 VCcLS3 \fr[<x/y/z>]<degrees>---旋转---x代表水平方向,y代表垂直方向,z是垂直于屏幕的坐标轴.degrees为正数时是逆时针旋转,为负数时是顺时针旋转.\c&H<XXXXXX>---改变颜色---颜色格式为&HXXXXXX,十六进制,X取值为0-f,作用相当于\1c&H<XXXXXX> - P1OD)B \1c&H<XXXXXX>---改变主体颜色---格式同上 PLKp<kg \2c&H<XXXXXX>---改变次要颜色---格式同上 }/[tB \3c&H<XXXXXX>---改变边框颜色---格式同上 wZh&w<l' \4c&H<XXXXXX>---改变阴影颜色---格式同上 \alpha&H<XX>---改变透明度---透明度格式为\alpha&HXX,十六进制,X取值为0-f,同时改变字幕所有部分的透明度,取值越大,透明度越强 Zb8Ty~.\P \1a&H<XX>---改变主体透明度---格式同上 *|Q'?ty(x \2a&H<XX>---改变次要透明度---格式同上 8uM >Up X \3a&H<XX>---改变边框透明度---格式同上 5iz]3]}% \4a&H<XX>---改变阴影透明度---格式同上\move(<x1>, <y1>, <x2>, <y2>[, <t1>, <t2>])---移动效果 dfi
A- h x1,y1---移动开始的位置 rm;'/l8Y-E x2,y2---移动结束的位置 PSI5$Vna4p t1,t2---移动开始和结束时间,省略后以字幕开始和结束时间为准 gV):3mWC \pos(<x>, <y> )---位置改变---x和y是是改变位置后的坐标\t([<t1>, <t2> ], [<accel>], <style modifiers> )---动态效果---可同时使用多个效果 Y]P';C_eP t1,t2---动态效果开始和结束时间,单位为1毫秒,省略后以字幕开始和结束时间为准 8t!(!<iF0 accel---控制动态效果的运动速度,它的作用范围较大,能影响多行文本的动态速度. 默认值为1.当0<accel<1时,速度从快到慢减速运动;accel>1时,速度从慢到快加速运动 >t)vQ&:;u 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秒 *j?tcxq t1---显示使用的时间,是时间段 U,LW(wueT t2---消失使用的时间,是时间段 f'0n^mSP \fade(<a1>, <a2>, <a3>, <t1>, <t2>, <t3>, <t4> )---淡出淡入效果---透明度必须用十进制表示,范围0-255 P_B# a1---显示开始时的透明度 ;3U-ghj a2---显示结束到消失开始时的透明度 ,G!M?@Q a3---消失结束时的透明度 TUIj-HSe
t1,t2---显示的开始和结束时间,是时间点 3xxQL,FV t3,t4---消失的开始和结束时间,是时间点 ,aeQXI#@ WW{5[;LYiB Scroll up;<y1>;<y2>;<delay>;[<range>]---字幕从下向上移动 .X\p;~H
5 Scroll down;<y1>;<y2>;<delay>[;<range>]---字幕从上向下移动 Bq.@Cx
K y1---字幕出发处的垂直坐标 }&I\a y2---字幕终止处的垂直坐标 nBI?~hkP3 delay---速度,表示移动一象素所用的时间,单位为0.001秒/1象素,delay=20表示1秒移动50象素的距离.由此可计算出头字幕从初始坐标到达终点坐标所用的时间为: (y1-y2的绝对值)*(delay/1000)(秒),delay越小移动速度越快. J0*hJ-/u range---上下淡出淡入范围 Banner;<delay>;[<lefttoright>;[<range>]]---字幕横向移动,移动从屏幕边线出发到边线终止 U&yXs'3a& delay用法同上 K*&M:u6E lefttoright---0从右向左移动,1从左向右移动 0vuL(W8) range---左右的淡出淡入范围 Karaoke---卡拉OK,下面是代码表示 oGM Ls \K<duration> 卡拉OK,有平滑效果,时间单位是0.01秒,{\K200}XXX表示用2秒来显示歌词XXX,后面没有字符表示停顿一段时间 Ef{rY|E \a<alignment>---设置对齐方式,不同的位置alignment取以下相应的值 ^E\{&ka |