Chinaunix首页 | 论坛 | 博客
  • 博客访问: 641030
  • 博文数量: 289
  • 博客积分: 7063
  • 博客等级: 少将
  • 技术积分: 3140
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-31 18:47
个人简介

不停修炼,不断成长!

文章分类

全部博文(289)

文章存档

2012年(2)

2010年(2)

2008年(2)

2007年(4)

2006年(279)

我的朋友

分类:

2006-05-01 14:57:28

SSA字幕文件的教程之初级版
Quote:
事前说明一下,本内容有一定的难度。如果你没什么耐心,就不必看下去了。这样只会浪费你的时间。下面开始~
Quote:
字幕最常见的是idx/sub(直接从DVD光盘上提取的字幕格式)和文本格式的srt,ssa/ass几种格式。
SRT和SSA两种格式的字幕均为文本格式字幕,其共同的优点是:
只需要单独一个文件即可使用,不象SUB字幕还需要一个idx定义文件
字幕文件很小,都在几十KB以内,便于传播以及刻碟 :-)
用任何文本编辑工具都能够打开,非常便于对字幕内容进行细节修改和调整
使用者能够随心所欲定制观看影片时字幕的字体、大小、颜色等等
都被VobSub直接支持
而在SRT和SSA两者之间比较,SRT格式只有时间码和文本,太过于简单,很容易因设置等问题导致在看影片时产生乱码,新手使用起来会感觉麻烦;而SSA格式可以在字幕内附带作者信息、修订信息、字幕参数等,更可以预先即定义好字幕播放时使用的字体、大小、风格等多种内容,兼有SRT字幕和SUB等图形字幕的优点。所以,SSA字幕比SRT字幕应该更有优势,个人在这里大力提倡使用SSA格式字幕。总之,对于稍有经验的玩家,文本格式的字幕肯定是最好的选择。
我们要学好SSA主要从两个方面着手:一个是SSA文件的组成结构;一个是SSA代码。
先来一个例子看看
_______________________________________________________________
[Script Info]
ScriptType: v4.00
Collisions: Normal
PlayResY: 480
PlayResX: 360
PlayDepth: 0
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: New Style,幼圆,30,16777215,4227327,8404992,16744448,0,0,1,1,2,2,30,30,12,0,134
[Events]
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,,UC0079年12月24日
Dialogue: Marked=0,0:00:05.30,0:00:08.30,New Style,NTP,0000,0000,0000,,我們要跟這艘戰艦共存亡
Dialogue: Marked=0,0:00:09.30,0:00:12.30,New Style,NTP,0000,0000,0000,,但我們不可讓你們白死
Dialogue: Marked=0,0:00:13.30,0:00:17.30,New Style,NTP,0000,0000,0000,,直至完成任務為止
Dialogue: Marked=0,0:00:18.40,0:00:20.40,New Style,NTP,0000,0000,0000,,差不多了
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,別慢吞吞_______________________________________________________________
这下,大家应该大概了解SSA的结构了吧?下面我们开始了
Quote:
一.SSA文件的组成结构
SSA文件主要由三大部分组成:[Script Info]部分,[v4 Styles]部分和[Events]部分。
1.[Script Info]部分
PlayResX: 480
PlayResY: 360
480×360和384×288是标准的4:3画面分辨率之一。ssa字幕里的坐标(字幕的位置)即根据这2个数值的范围来定义。16:9宽银幕的片子略做调整即可。
这里主要介绍文件本身和制作者的信息,这里面最重要的两项是PlayResX和PlayResY,它实际上是按给定的PlayResX和PlayResY数值将屏幕按比例化分,屏幕的左上角坐标为(0,0),右下角坐标为(PlayResX数值,PlayResY数值).这两个值最好是和视频文件的长宽相同,这样在下面[Events]部分文本位置坐标的设定很方便而且准确.
当然这两个值也可能和原视频文件的长宽不同,比如视频文件尺寸为640x360,而PlayResX:384,PlayResY: 288,如同前面所说的,它是将屏幕长宽按384:288来化分的.一旦这样划定,下面的各种坐标设定都要以384和288为根据.
特别要注意的是:对于一个已经存在并且文本坐标都设置好的SSA文件,如果它的PlayResX和PlayResY数值和视频文件的长宽尺寸不符(包括成比例的情况,比如视频文件尺寸为640x360,而PlayResX:320,PlayResY: 180),我们不要简单的把PlayResX和PlayResY数值改成屏幕尺寸,这样将导致字幕失真,是因为文本部分的尺寸并没有改,仍按照原来的PlayResX和PlayResY数值设定.如果有较多的坐标设定,就不要改原来的PlayResX和PlayResY数值,在原基础上编辑.
ScriptType: v4.00会影响字幕特效的相关命令(有一部分命令是要在v4.00+中才会实现的,不过实用性不大,所以在此还是用v4.00);480 360则会影响字幕定位时的坐标。
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 具体代码如下: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;
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]部分则是执行怎样加工木材并将其安装到家俱上.Quote:
二.下面介绍SSA代码的用法
SSA代码
首先对下面代码中用到的符号说明一下:
---参数
[..]---可选项
---任选其中一项
规定:所有代码之前加\
所有代码放在括号{}内,\N,\n,\h例外。
\N---换行---换行后两行之间没有空隙
\n---空格---或直接按空格键,超出范围自动换行
\h---空格---或直接按空格键
\b---粗体---0关闭,1开启
\i---斜体---0关闭,1开启
\bord---边框宽度---width取值范围1-4,数字越大边框越宽
\shad---阴影距离---depth取值范围0-4,数字越大阴影越厚
\r---改变字体---比如Default,Font1等
\r\r---恢复成最初的字体
\fn---改变字型---比如黑体,楷体_GB2312等
\fs---改变字号---常用范围8-72
\fsc---字符缩放---x代表水平方向,y代表垂直方向,perecet取不小于0的数(小数也可以).默认大小为100(即100%)
\fsp---调整字间距---pixels取值在实数范围内,可以是正数,零,负数.默认值为0
\fr[]---旋转---x代表水平方向,y代表垂直方向,z是垂直于屏幕的坐标轴.degrees为正数时是逆时针旋转,为负数时是顺时针旋转.
\c&H---改变颜色---颜色格式为&HXXXXXX,十六进制,X取值为0-f,作用相当于\1c&H
\1c&H---改变主体颜色---格式同上
\2c&H---改变次要颜色---格式同上
\3c&H---改变边框颜色---格式同上
\4c&H---改变阴影颜色---格式同上
\alpha&H---改变透明度---透明度格式为\alpha&HXX,十六进制,X取值为0-f,同时改变字幕所有部分的透明度,取值越大,透明度越强
\1a&H---改变主体透明度---格式同上
\2a&H---改变次要透明度---格式同上
\3a&H---改变边框透明度---格式同上
\4a&H---改变阴影透明度---格式同上
\move(, , , [, , ])---移动效果
x1,y1---移动开始的位置
x2,y2---移动结束的位置
t1,t2---移动开始和结束时间,省略后以字幕开始和结束时间为准
\pos(, )---位置改变---x和y是是改变位置后的坐标
\t([, ], [], )---动态效果---可同时使用多个效果
t1,t2---动态效果开始和结束时间,单位为1毫秒,省略后以字幕开始和结束时间为准
accel---控制动态效果的运动速度,它的作用范围较大,能影响多行文本的动态速度. 默认值为1.当01时,速度从慢到快加速运动
style modifiers可以使用的效果有\bord,\shad,\fsc,\fsp,\fs,\fr[],\move, \c,\c,\alpha,\a
\fad(, )---淡出淡入效果---单位为1毫秒,如2000就是2秒
t1---显示使用的时间,是时间段
t2---消失使用的时间,是时间段
\fade(, , , , , , )---淡出淡入效果---透明度必须用十进制表示,范围0-255
a1---显示开始时的透明度
a2---显示结束到消失开始时的透明度
a3---消失结束时的透明度
t1,t2---显示的开始和结束时间,是时间点
t3,t4---消失的开始和结束时间,是时间点
Scroll up;;;;[]---字幕从下向上移动
Scroll down;;;[;]---字幕从上向下移动
y1---字幕出发处的垂直坐标
y2---字幕终止处的垂直坐标
delay---速度,表示移动一象素所用的时间,单位为0.001秒/1象素,delay=20表示1秒移动50象素的距离.由此可计算出头字幕从初始坐标到达终点坐标所用的时间为: (y1-y2的绝对值)*(delay/1000)(秒),delay越小移动速度越快.
range---上下淡出淡入范围
Banner;;[;[]]---字幕横向移动,移动从屏幕边线出发到边线终止
delay用法同上
lefttoright---0从右向左移动,1从左向右移动
range---左右的淡出淡入范围
Karaoke---卡拉OK,下面是代码表示
\K 卡拉OK,有平滑效果,时间单位是0.01秒,{\K200}XXX表示用2秒来显示歌词XXX,后面没有字符表示停顿一段时间
\a---设置对齐方式,不同的位置alignment取以下相应的值
左 中 右
上 5 6 7
中 9 10 11
下 1 2 3
附上:特效码一览
格式修改: [在字幕中插入,例如: 今天的天气\n好晴朗啊]
\n........................回车换行(好像是当字幕在一行显示不完时才换行,我不是很清楚)
\N........................强制换行
\h........................强制空格
在{...}之间加入的特效码: 内表示可选的参数,在具体使用时不用加
\a...........................................强制字幕在屏幕上的对齐位置:
具体见关于alignment说明
\b..........................................字体加粗
\i.................................................斜体字
\u.................................................下划线
\s.................................................strikeout
\bord............................................字体加宽
\shad............................................阴影深度
\be................................................边角模糊
\fn...............................................强制字体类型
\fe............................................强制字幕编码
\fs...............................................强制字幕大小 例如:\fs34
\fsc........................................字体比例
[fscx代表横向比例fscy代表纵向,单位:百分比]
\fsp............................................字间距
\fr[].....................................旋转[x,y,z轴三个方向]
\fe............................................character set?
\c&H&...........................................强制主字幕色
\c&H&..................................主/次/外框/阴影 字幕色设定
\alpha&H&...........................................主色透明度
\a&H&......................................主/次/外框/阴影 透明度
\k[].....................................卡拉OK效果
(f-从左至右添充[未填充时显示次要色,填充后显示主色], o-字幕外框高亮显示?)
\K......................................................跟 \kf 同样效果(填充效果)
\r[]..............................................强制加载名为“name”的预设风格
["[v4 Styles]"定义的]
\t([,,][,] )...................动态显示, 加速度: 0~1减速,
大于1加速(方括号内的可以却省设置)
\move(,,,[,,]).........移动(方括号内的可以却省设置)
\pos(, )...........................................强制定位
\clip(, , , )...........................字幕裁剪
\fad(, ).........................................淡入淡出[t1-开始时间,t2-结束时间]
\q.................................................换行方式:
0智能换行,1行尾换行,2无换行,3智能换行下一行变宽
Quote:
学习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.当使用多个动态效果的叠加时,字幕运动变化的时间往往超过代码中规定的时间(动态效果越多,速度越慢),以至总时间超过字幕的显示时间.
以上就是SSA的组成结构和代码的说明,并附上注意事项。如果你看得懂的话,其实你可以开始自己做特效字幕文件了。祝你成功。
阅读(2306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~