转载处:http://blog.sina.com.cn/s/blog_6823cc5d0100yz9l.html

一、基础篇:

我们先来了解一下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,数值越大,阴影越厚

Alignment: 字幕文字的对齐方式。1=左对齐,2=中对齐,3=右对齐,4=置顶,8=置中,5=1+4=置顶左对齐,6=2+4=置顶中对齐,7=3+4置顶右对齐,9=1+8=置中,10=2+8=置中中对齐,11=3+8=置中右对齐

ps:字幕的对齐方式非常重要,一系列动态特效(比如旋转,缩放等)的基点都由此设定。学懂对齐方式等于学懂了一半的SSA,下面各位置的数字就是Alignment的取值,从1-11,没有4和8这两个数,其余都是连续排列,很好记: 

5

6

7

9

10

11

1

2

3

 

ASS([v4+ Styles])取值有修改,具体如下(其实和PC数字小键盘的排列一样,真是人性化的修改):   

7

8

9

4

5

6

1

2

3

MarginL: 字幕距左边的距离。取值0~PlayResX

MarginR: 字幕距右边的距离。取值0~PlayResX

MarginV: 字幕距底边的距离。取值0~PlayResY

AlphaLevel: 字体透明度。取值0~255

Encoding: 字幕的编码方式。134=GB2312(简体中文),136=BIG5(繁体中文),就压片而言,两种足矣。

Style行:该行是根据format行所定义的实际显示样式参数值。其中的每一个值都与Format行的参数名称相对应

简单来说,在[v4 Styles] 部分,我们首先要在format行中设置要启用哪些参数,然后到style行设置具体的参数值,最后在字幕正文部分通过style行的第一个参数"style name"调用该样式的设置的风格来显示字幕文字。调用方式如下:

Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,,UC0079年12月24日

红字部分就是你所用的某种风格的字幕的名称。

[Events] ——字幕的详细设定,从这里开始,就是正式的字幕部分了(注意英文大小写)

Format语句:这一句申明ssa字幕的时间轴语句的描述格式,最后一个是文本,可以包含逗号。各参数意义如下:

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[

SSA/ASS动态字幕详解相关推荐

  1. python动态类型的坑_python进阶教程之动态类型详解

    动态类型(dynamic typing)是Python另一个重要的核心概念.我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值.这些都与动态类型的概念 ...

  2. Android 动态分区详解(六) 动态分区的底层机制

    文章目录 1. Android 动态分区的两重含义 2. device mapper 的原理 3. linear 映射的原理 3.1 多个设备映射示例 3.2 `dmsetup create` 命令参 ...

  3. Adobe Premiere Pro 2020 入门教程(十)字幕详解

    目录 一.老版字幕详解 1.新建旧版标题 2.视频设置 3.基本字体的相关设置(与word相同) 4.绘制各种图形 5.路径文字工具.垂直路径文字工具 6.钢笔工具.添加锚点工具.删除锚点工具 7.字 ...

  4. Android 动态分区详解(七) overlayfs 与 adb remount 操作

    0. 导读 最开始学习 Android 动态分区源码的时候,比较代码发现 system/core/fs_mgr 目录下多了一个名为 fs_mgr_overlayfs.cpp 的文件,一直不知道什么时候 ...

  5. Android 动态分区详解(一) 5 张图让你搞懂动态分区原理

    文章目录 0. 导读 1. 动态分区详解的背景 1.1 背景 1.2 动态分区的本质 2. Linux device mapper 驱动 3. Android 动态分区布局 3.1 动态分区布局 3. ...

  6. C++静态库与动态库详解与使用

    福利 | 百度 AI 开发者大会免费门票领取    CSDN日报20170628--<实习,背后的选择?>    [直播]探究Linux的总线.设备.驱动模型! C++静态库与动态库详解与 ...

  7. JAVA动态代理详解

    JAVA动态代理详解 问题 1:什么是静态代理,动态代理? 2:动态代理的好处? 什么是静态代理 以生活中例子来看,我作为某某品牌面膜的北京区代理,我替厂家卖面膜,我属于代理,厂家属于委托方. 联系到 ...

  8. AutoCAD .Net二次开发之JIG动态绘制详解

    AutoCAD .Net二次开发之JIG动态绘制详解 AutoCAD平台动态绘制分两种,单实体绘制EntityJig和多实体绘制DrawJig,需要自己自定义类去继承.(本人的理解全放在了代码注释中, ...

  9. 是隐极电机_资料 | 发电机定子绕组端部动态特性试验详解

    一.试验目的 大型汽轮发电机运行过程中,定子端部受二倍工频(100Hz)的电磁激振力.如果定子端部的模态接近100Hz,将发生谐振,从而可能因振幅过大而发生结构松动.磨损.绝缘损坏等现象,甚至断裂等故 ...

最新文章

  1. Android中关于cpu/cpuset/schedtune的应用
  2. BFS,优先队列优化
  3. angularjs中使用swiper时不起作用,最后出现空白位
  4. mapreduce工作流程_我要进大厂之大数据MapReduce知识点(2)
  5. python爬虫案例-乌托家家具公司数据爬取
  6. hnu 暑期实训之选美比赛
  7. 2个技巧让Mac常用文件夹在Finder打开更便捷
  8. MySQL安装配置详解(5.5 For Windows)
  9. 《IPv6安全》——2.3 IPv6网络勘察
  10. 使用jsencrypt实现参数的前端加密
  11. 实施工程师是干嘛的_CTO大怒:300万建设数据中台,啥也没看见,我要它干嘛?...
  12. MCGS 昆仑通态触摸屏 modbus TCP 数据转发
  13. visio业务流程图教学_visio业务流程图怎么画
  14. 全国计算机二级vf成绩查询,2017全国计算机二级《VF》考点习题
  15. 4*4矩阵键盘的扫描原理
  16. 【Unity】Unity5.0之PBR/PBS详解
  17. 【更新】Excel控件Spire.XLS for .NET V7.12.90发布 | 支持向工作表添加形状
  18. Web安全研究(一)
  19. 寂静岭2java攻略_寂静岭2攻略
  20. MIS课设 JavaFX考试管理系统

热门文章

  1. 最全小霸王游戏合集-新
  2. 尺寸各单位之间的相互转换
  3. 如何压缩视频大小不影响画质
  4. mysql5.7默认生成随机密码,不知道登录时需要强改
  5. python爬虫实例——爬取智联招聘信息
  6. Hexo博客部署到腾讯云服务器全过程(Nginx,证书,HTTPS),你要的这里都有
  7. 6 个超实用的 Sudo 命令使用技巧
  8. spring security 匿名登录
  9. java 当文件夹不存在时,自动创建文件夹
  10. 微博之战:小辣椒扛大旗,迎战vivo!