ssa/ass字幕格式全解析
看到一篇好文章,介绍 ASS字幕的。写的很专业、很透 彻,转载下来,共勉。
ssa/ass字 幕格式全解析
内容:
一. 概述
二. 文件各个部分解析
三. 各种类型的行
四. [Script Info]部分的标题行
五. [v4+ Styles]部分的风格行Style
六. [Events]事件部分的对话行Dialog
七. [Events]事件部分的注解行Comment
八. [Events]事件部分的图片行Picture
九. [Events]事件部分的声音行Sound
十. [Events]事件部分的影片行Movie
十一. [Events]事件部分的命令行Command
附A. 风格覆盖代码(Tags, Codes)
附B. 内嵌的字体/图片编码
注:
1) 此文档是对原SSA文件规格英文文档进行翻译和补充而成, 原文件可从以下链接获得:
uk/projects/asa/ass-specs.doc
另外参考了以下资料:
aegis ./docs/ASS_Tags
en.wikipedia/wiki/S Station_Alpha
2) 表述编写格式时, 用到的符号说明如下:
<..> 参数
[..] 可选项
3) 除附A以外, 用红色字体标明ASS相对于SSA格式的新增功能或者改动
4) 用蓝色, 加粗, 下划线等符号表明需要注意的地方.
一. 概述
SSA全称S Station Alpha, 是由CS Low(又称Kotus)创建的一种字幕格式, 用以实现比传统字幕诸如srt等格式更为复杂的功能. SSA目前的版本为v4.00. SSA同时也是一款软件的名称, 专用于创建和编辑SSA格式的字幕.
ASS是一种比SSA更为高级的字幕格式, 全称Advanced S Station Alpha, 实质是SSA v4.00+ 版本. 它拥有比SSA更多的功能.
48个音标表
1. SSA v4.00与之前的SSA版本格式不同. v4可以阅读和加载以前版本的格式, 但之前版本不支持v4以上的编写格式. 换句话说, SSA从v4版本开始可以阅读它认识的命令而忽略不认识的命令, 从而可以向下兼容, 也可以向上兼容.
2. 文件为普通的DOS文本格式. 也就是说它可以用记事本打开编辑, 同时需要注意编写出错时有可能导致无法预料的结果.
3. 文件编写时所划分的各部分, 从形式上来说类似于ini文件, 但它并非真正的ini文件
4. 各部分中的绝大多行都以一说明性的文字加上冒号来开头, 指明该行包含哪一些信息.
5. 每一行中的信息都以逗号分隔. 因此风格名和人物角色名中要求不能出现逗号.
6. 事件部分([Events])里的各行可以不分先后. 也就是说人物对白行可以不按时间顺序排列
7. 不正确的行会被忽略. 同时会给出警告指出被忽略的行数
跑完步怎么拉伸8. 一行里包含了完整的信息, 必须在一行内写完, 不能分成多行
9. 当文件中引用了一个未
知的风格名(style)时, 加载时会用默认的风格来替代(Default)
10. 当一个风格(Style)中引用了系统中没有安装的字体, 则会用Arial字体来代替.
二. 文件各部分解析
[Script Info]醋酸卡泊芬净
这一部分包含了文件内容的标题和总体信息. [Script Info]这一行必须是v4版本文件的第一行
[v4 Styles]
字幕正文使用的风格都在这一部分做出相关定义. 注: ASS使用的是[v4+ Styles]
[Events]
这部分包含所有的事件, 有字幕, 评论, 图片, 声音, 影片和命令. 基本上屏幕中出现的所有内容都集中在这一部分.
[Fonts]
如果想把字体内嵌入字幕文件, 那么字体文件须采用数字编码后放在这一部分. 只有trtyle字体才能内嵌入SSA/ASS文件
每一个内嵌字体文件以一行开头, 格式如下:
fontname: <;文件名>
开头的”fontname”必须全部用小写, 如果大写会让ASS文件视其为文件编码的一部分.
<;文件名>是SSA文件保存字体时使用的文件名, 命名规则如下:
trtype字体原来的字体名称
加一条下划线
如果是粗体则加一个”B”
如果是斜休则加一个”I”
加一个数字表明字体编码(字符集)
最后加上”.ttf”
例如:
fontname: f
在这一行之后是一些可打印的字符组成的行, 代表组成这个字体的二进制字符, 除了最后一行可能短些, 其余每行有80个字符.
从二进制转换到字符用的是U
-encoding的编码方式, 编码的详细信息参见附B
[Graphics]
如果选择内嵌图片, 那这一部分就包含了所有用到的数字编码格式的图片文件. 开头一行的格式如下:
filename: <;文件名>
开头的”filename”必须为小写, 如果大写会被认为是文件编码的一部分.
<;文件名>是SSA文件保存图片时使用的文件名, 它与[Events]事件部分中提及的图片名称一致.
SSA会把文件中找到的任何文件保存到SSA的程序目录中的”Pictures”子目录中. 例如: c:\program files\S Station Alpha v4.00\Pictures. SSA会先从文件本身中寻找这些编码好的文件, 但当没有找到时会去”Pictures”这个子目录里去找.
解决的近义词注: 现在的SSA文件已经很少包含”[Pictures]” 或者 “[Fonts]” 这两个部分. 因为这些功能只被S Station Alpha这一个程序所支持. 而其它的filter (Vobs /Vsfilter/Avery Lee S titler filter) 都不支持.
三. 各种类型的行
在这一节里简要地说明在每个部分中出现的所有行的类型和大致功能, 各自具体说明参见后面的章节.
; 只在编写中请说明作用的行, 加载字幕时不可见.
Title: 标题, 是对字幕的描述士官和军官的区别
Original Script: 最初创建字幕的人
Original Translation: (可选) 最初翻译对话的人
Original Editing: (可选) 最初的编辑者, 一般是所有参与翻译和校对等工作的人
Original Timing:
赵晨飞 (可选) 最初的时间轴人员
Synch Point: (可选) 指出从哪一个时间点开始进行字幕加载播放
Script Updated By: (可选) 对原字幕对话进行编辑更新的人
Update Details: 进行了哪些更新等具体信息
ScriptType: 对SSA/ASS文件的版本做说明, 例如”v4.00″. ASS的版本为”v4.00+”
Collisions: 当两条字幕重叠时, 如何进行相对移动
PlayResY: 文件所使用的视频高度参考标准
PlayResX: 文件所使用的视频宽度参考标准
PlayDepth: 加载字幕时所使用的颜色深度
Timer: 对字幕加载的速度调整, 数值为百分数. 例如”100.0000″代表100%.
ScaledBorderAndShadow: 边框宽度与阴影深度是否随着视频分辨率同等比例缩放.回锅腊肉
Style: 定义每条字幕所使用的风格
Dialog
: 指明为对话事件, 即屏幕上出现的字幕
Comment: 指明此行是评论/解释事件, 它与Dialog, Picture, Sound, Movie或者Command事件包含相同的信息, 以此来进行解释说明, 但加载字幕时不会出现在屏幕
Picture: 指明为图片事件, 即显示.bmp, .jpg, .gif, .ico 或者 .wmf 格式的图片(注意不支持png, 且filter不支持加载图片)
Sound: 指明为声音事件, 即播放.wav格式的声音(filter不支持)
Movie: 指明为电影事件, 即加载avi视频(filter不支持)
Command: 指明为命令事件, 即可在后台打开某个程序
四. [Script Info]部分的标题行
; 分号, 后面可以跟任何内容. 这一行是说明性文字, 加载字幕时不显示
注意此类型行必须要把分号放最前. 老版本不是用分号而是用!:
Title: 标题, 如果没有提供, 则自动使用<untitled>
Original Script: 剧本的最初作者, 若没有提供则自动使用<unknown>
Original Translation: (可选)原剧本的翻译者, 若没有提供则该行不显示
Original Editing: (可选)原剧本的编者和校对, 若没有提供则该行不显示
Original Timing: (可选)原剧本的时间轴人员, 若没有提供则该行不显示
Synch Point: (可选)从哪个时间点开始加载字幕, 若没有提供则该行不显示
Script Updated By: (可选)对原剧本的修改/更新人员, 若没有提供则该行不显示
Update Details: 更新的具体信息, 若没有提供则该行不显示
Script Type: SSA的版本信息, ASS的版本 为”v4.00+”
Collisions: 当字幕时间重叠时, 前后字幕的堆叠方式.
值为”Normal”时, 后一条字幕出现在前一条字幕的上方.
如果值为”Rever”时, 前一条字幕往上移动给后一条字幕让位.
Pl
ayResY: 文件所使用的视频高度参考标准, 如果使用Directdraw回放SSA v4会自动选择最相近的启用的设置
PlayResX: 文件所使用的视频宽度参考标准, 如果使用Directdraw回放SSA v4会自动选择最相近的启用的设置.
如果只提供了PlayResX, PlayResY其中一种, 那另一种会按实 际视频的像素值为准.
提供的分辨率数值影响以下参数:
1) 所有给出的坐标(到边缘的距离, \pos, \move, 矢量绘图等)都以此分辨率作为参照.
2) 所有的文字字号均按照此分辨率等比例放大缩小
3) 当ScaledBorderAndShadow被启用时, 所有边框宽度和阴影深度都按照此分辨率与实际分辨率的比例等比例缩放
4) 这个分辨率不影响最终显示文字的宽高比, 但影响矢量绘画图形的宽高比.
PlayDepth: 加载字幕时使用的色深(颜色的数目), 如果使用Directdraw回放SSA v4会自动选择最相近的启用的设置
Timer: 字幕加载的速度调整, 数值为百分数. 例如”100.0000″代表100%. 其数值有4位小数点.
它相当于对ASS字幕的时间速度进行乘法运算.
当速度大于100%时, 总时间会缩短, 而相应的字幕会越来越靠前.
当速度小于100%时, 总时间会延长, 而相应的字幕会越来越靠后.
WrapStyle: 定义默认的换行方式,
0: 智能换行, 行分得较平均, 上面的行较长
1: 一行结束后从行尾的词分行
2: 不换行. 此模式下只有\n, \N才换行
3: 与模式0相同, 但下面的行分得比较长
ScaledBorderAndShadow: 指定边框宽度与阴影深度是否随着视频分辨率等比例缩放. 可为Yes, No. 默认为No.
当取值为No时, 边框宽度与阴影深度完全按照指定的像素数显示.
当取值为Yes时, 边框宽度与阴影深度随着实际视频的分辨率同等比例缩放.
五. [v4+ Styles]部分的风格行Style
Style定义了字幕的样式和位置. 所有的Style都在单独的Style里进行定义.
除了阴影/边框的类型和深度, 其余所有的风格设置都可以由字幕文本中的覆写代码所替代.
在定义风格之前先要有一行”Format:”来定义风格中每一个字段所代表的含义, 这些字段名称必须拼写准确, 顺序可以打乱, 字段名表示如下:
Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Itali
c, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV
, AlphaLevel, Encoding
字段1: Name. 风格(Style)的名称. 区分大小写. 不能包含逗号.
字段2: Fontname. 使用的字体名称, 区分大小写.
字段3: Fontsize. 字体的字号
字段4: PrimaryColour. 设置主要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 为字幕填充颜色
字段5: SecondaryColour. 设置次要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 在卡拉OK效果中由次要颜色变为主要颜色.
字段6: TertiaryColour(ASS中的名称为OutlineColor), 设置轮廓颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR.
字段7: BackColour, 设置阴影颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR.
字段4-7: ASS的这些字段还包含了alpha通道信息. (AABBGGRR), 注ASS的颜色代码要在前面加上&H
字段8: Bold. -1为粗体, 0为常规
字段9: Italic. -1为斜体, 0为常规
字段9.1: Underline. [-1 或者 0] 下划线
字段9.2: Strikeout. [-1 或者 0] 中划线/删除线
字段9.3: ScaleX. 修改文字的宽度. 为百分数
字段9.4: ScaleY. 修改文字的高度. 为百分数
字段9.5: Spacing. 文字间的额外间隙. 为像素数
字段9.6: Angle. 按Z轴进行旋转的度数, 原点由alignment进行了定义. 可以为小数
字段10: BorderStyle. 1=边框+阴影, 3=纯色背景. 当值为3时, 文字下方为轮廓颜色的背景, 最下方为阴影颜色背景.
字段11: Outline. 当BorderStyle为1时, 该值定义文字轮廓宽度, 为像素数, 常见有0, 1, 2, 3, 4.
字段12: Shadow. 当BorderStyle为1时, 该值定义阴影的深度, 为像素数, 常见有0, 1, 2, 3, 4.
字段13: Alignment. 定义字幕的位置. 字幕在下方时, 1=左对齐, 2=居中, 3=右对齐. 1, 2, 3加上4后字幕出现在屏幕上方. 1, 2, 3加上8后字幕出现在屏幕中间. 例: 11=屏幕中间右对齐.
字段13: Alignment. 对于ASS字幕而言, 字幕的位置与小键盘数字对应的位置相同.
字段14: MarginL. 字幕可出现区域与左边缘的距离, 为像素数
字段15: MarginR. 字幕可出现区域与右边缘的距离, 为像素数不的近义词
字段16: MarginV. 垂直距离
对于处在下方的字幕, 此值是字幕到底端的 像素数
对于处在屏幕上方的字幕, 此值为字幕到顶端的像素数.
对于处在屏幕中间的字幕, 此值被忽略.
字段17: AlphaLevel. SSA字幕用来定义透明度
字段17: AAS没有该字段.
字段18: Encoding. 指明字体的字符集或编码方式. 如0为英文, 134为简体中文, 136为繁体中文. 当文件为非UNICODE类型编码时, 该值对字幕的显示起作用.
六. [Events]部分的对话行Dialog Dialog类型的行(对话行)包括字幕对白, 时间轴信息, 以及对白的显示方式.
在对话行出现前必须有一条格式行Format: 来对逗号分隔的每个字段进行定义, 该格式行中的每一个字段必须拼