Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PrinSoul/ASS-file

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

7 Commits

Repository files navigation

ASS字幕文件说明

这是我多年前所做的笔记,资料都是从网上摘抄,其中内容难免有缺失或错误。

第一部分 [Script Info]

这一部分主要是记录了一些文件内容的标题和信息

[Script Info]
; Script generated by Aegisub r8942
; http://www.aegisub.org/
!: 注释
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: TV.601
Original Script: 脚本原作者
Original Translation: 译者
Original Editing: 编辑
Original Timing: 时间轴
Synch Point: 0
Script Updated By: 修订者
Update Details: 修订详情,修订部分的描述
PlayResX: 1280
PlayResY: 720
PlayDepth: 颜色深度
Collsions: Normal
Timer: 100.0000

下面就[Script Info]这一部分作简单说明:

  • ASS文件第一行必须是[Script Info]

  • ;后面可以填写任何内容

  • !:后面是注释部分

  • Title:脚本文件的标题

  • ScriptType:脚本格式ASS文件为v4.00+

  • WrapStyle:指定了当一行字幕过长时的换行方式

    共有4种换行方式:

    0:智能换行:上行较宽

    1:于行尾词出换行:仅于\N后断行

    2:不自动换行:于\n\N后断行

    3:智能换行:下行较宽

  • ScaledBorderAndShadow:字幕边框宽度和阴影深度是否随着视频分辨率等比缩放,yesno

  • YCbCr Matrix:

  • Original Script: 脚本原作者

  • Original Translation: 译者

  • Original Editing: 编辑

  • Original Timing: 时间轴人员

  • Synch Point: 同步点

  • Script Updated By: 脚本修订者

  • Update Details: 修订详情,修订部分的描述

  • PlayResX: 视频宽度PlayResY: 视频高度,这两个定义了视频的分辨率

  • PlayDepth: 显示颜色深度

  • Collsions: 字幕碰撞处理,当两条字幕重叠时,如何进行移动,共有两种方式

    Normal:后一条字幕出现在前一条的上方

    Reverse:前一条字幕向上移动给后一条字幕让位

  • Timer: 时间轴计时器,单位为%,默认为100.0000

    大于100时,字幕会比预定越来越早的出现

    小于100时,字幕会比预定越来越晚的出现

    一般不改变,取默认100.0000

第二部分 [V4+ Styles]

这一部分主要保存了字幕的样式

[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: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[V4+ Styles]作为这一部分的开始,紧跟着第二行Format:基本也是固定的,而Style行的各个Format行的各个名字之间是一一对应关系。这个部分就像是一张表单,Format行就是表头,Style行就是往表格里填的数据,大概就是这么一个关系,一个脚本可以设置多个字幕样式。

下面讲一下每个名字的具体意义:

  • Name:样式名字
  • FontName:字体名称
  • Fontsize:字体大小
  • PrimaryColour:主要填充颜色
  • SecondaryColour:次要填充颜色,用于标准卡拉OK模式下的预填充
  • OutlineColour:字体边框颜色
  • BackColour:字体阴影色
  • Bold:粗体,1开启,0关闭
  • Italic:斜体,1开启,0关闭
  • Underline:下划线,1开启,0关闭
  • StrikeOut:删除线,1开启,0关闭
  • ScaleX:宽度缩放,单位为%,默认100
  • ScaleY:高度缩放,单位为%,默认100
  • Spacing:字体间距
  • Angle:旋转角度
  • BorderStyle:边框样式;默认为1,即使用正常字体边框,设置为3时,则使用不透明背景取代字体边框
  • Outline:边框宽度
  • Shadow:阴影距离
  • Alignment:字幕对齐方式
  • MarginL:左边距
  • MarginR:右边距
  • MarginV:垂直边距
  • Encoding:字体编码;默认为1

第三部分 [Events]

这一部分就是字幕的主体部分,记录了对话的开始和结束时间,对话内容和显示等信息

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.24,0:00:01.99,Default,,0,0,0,,所以
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,注释

这一部分以Events作为开始,后面紧跟的Format基本也是固定的,后面的行和Format也是对应关系。

  • Layer:字幕的,当两条字幕重叠时,层数较大的会叠加在层数小的上面,如果层数相同,那么后出现的会叠加的先出现的上面,层数默认为0
  • Start:字幕的开始时间,精度为0.01s
  • End:字幕的结束时间,精度为0.01s
  • Style:样式名称,对应[V4+ Styles]中的Name
  • Name:说话人。只做参考,一般省略
  • MarginL:左边距。可对样式进行修改,默认为0采用原值,若不为0则取代原值
  • MarginR:右边距。可对样式进行修改,默认为0采用原值,若不为0则取代原值
  • MarginV:垂直边距。可对样式进行修改,默认为0采用原值,若不为0则取代原值
  • Effect:动态效果;Scroll up, Scroll down, Banner, Karaoke
  • Text:字幕。可以通过添加代码改变字幕,实现多种特效

每一行字幕开头的修饰语有两种:

  • Dialogue:正常的对话字幕内容
  • Comment:注释内容,这些行不会作为字幕内容显示在视频中

第四部分 代码及其作用

在这一部分正式开始之前,先作一个简单的说明:

  • 所有代码前必须加\
  • 代码必须放在{}中,\N,\n,\h除外

在代码说明部分会出现以下标记:

  • <...>:表示该部分需要输入参数
  • [...]:表示该部分为可选择输入项
  • <../..>:表示从给定参数中任选一项

常用代码

  • \N:强制换行

  • \n:空格,和空格键效果一样

  • \h:强制空格,即使在行首和行尾也能生效

  • \a<alignment>:设置字幕对齐方式,alignment取值如下表

    5 6 7
    9 10 11
    1 2 3
  • \an<alignment>:设置字幕对齐方式,alignment取值和数字小键盘的布局相同,这种方式比较容易记住,所以通常采用这种方式设置对齐方式,包括第二部分[V4+ Styles]中的Alignment也是采用的这种对齐方式

    7 8 9
    4 5 6
    1 2 3
  • \b<0/1>:设置粗体。0为关闭,1为开启

  • \b<weight>:设置字体磅值,取值为100的倍数。100: Lowest, 400: Normal, 700: Bold, 900: Heaviest

  • \i<0/1>:设置斜体。0为关闭,1为开启

  • \u<0/1>:设置下划线。0为关闭,1为开启

  • \s<0/1>:设置删除线。0为关闭,1为开启

  • \be<0/1>:边框模糊。0为关闭,1为开启

  • \be<strength>:边框模糊

  • \blur<strength>:边缘模糊(高斯函数)。strength取值越大,效果越明显,当字幕没有边框时,显示为字幕主体模糊效果

  • \bord<size>:设置边框宽度

  • \xbord<size>:设置x方向边框宽度

  • \ybord<size>:设置y方向边框宽度

  • \shad<depth>:设置阴影距离

  • \xshad<depth>:设置x方向阴影距离

  • \yshad<depth>:设置y方向阴影距离

  • \r<style>:设置样式

  • \r:设置为默认样式

  • \fa<x/y><factor>:文本错切。错切是在旋转之后应用的,以旋转后的坐标系为基准,不受旋转中心的影响,通常取值为[-2, 2],超出范围取值效果并不好

  • \fn<fontname>:设置字体,若要使字体旋转90°显示,在fontname前加@

  • \fs<fontsize>:设置字体大小

  • \fe<charset>:设置字体编码

  • \fsc<x/y><percent>:设置字体缩放,{\fscx<percent>}代表宽度缩放,{\fscy<percent>}代表高度缩放,percent单位为%,默认为100

  • \fsp<pixels>:设置字体间距,默认为0

  • \fr[<x/y/z>]<degrees>:设置旋转角度,x, y, z分别代表横纵坐标轴和垂直于屏幕向上的坐标轴,degrees取值为正数逆时针旋转,取值为负数顺时针旋转,\fr\frz的简写

  • \org(<x>, <y>):设置旋转中心点

  • \alpha&H<aa>&:设置字体透明度,16进制,取值范围00-FF,取值越大,透明度越大

  • \$a&H<aa>&:设置字体透明度,$可以取值为1, 2, 3, 4,分别代表主要填充透明度,次要填充透明度,边框透明度,阴影透明度

  • \c&H<bb><gg><rr>&:设置字体颜色,16进制,ASS脚本中颜色格式为<bbggrr>

  • \$c&H<bb><gg><rr>&:设置字体主体颜色,$可以取值为1, 2, 3, 4,分别代表主要填充颜色,次要填充颜色,边框颜色,阴影颜色

  • \move(<x1>, <y1>, <x2>, <y2>, [<t1>, <t2>]):字幕移动效果

    (x1, y1)为开始位置,(x2, y2)为结束位置,t1, t2为移动的开始和结束时刻,单位为ms,相对于字幕的开始时间,若省略,则默认使用字幕的开始和结束时间

  • \pos(<x>, <y>):设置字幕位置

  • \fad(<t1>, <t2>):淡入淡出效果,t1为淡入所用时长,t2为淡出所用时长,单位为ms

  • \fade(<a1>, <a2>, <a3>, <t1>, <t2>, <t3>, <t4>):淡入淡出效果

    a1为淡入开始时的透明度,a2为淡入结束时的透明度,a3为淡出结束时的透明度,透明度采用10进制,取值为0-255

    t1, t2为淡入的起止时刻,t3, t4为淡出的起止时刻

  • \t([<t1>, <t2>, <accel>,] <style modifiers>):动态效果,可配合多种效果使用

    t1, t2为动态效果的开始和结束时刻,单位为ms,相对于字幕的开始和结束时间,若省略,则默认使用字幕的开始和结束时间

    accel用于控制动态效果的速度,默认为1,0<accel<1时,速度逐渐变慢,accel>1时,速度逐渐变快

  • \q<x>:设置换行方式,取0/1/2/3

  • \clip([<x1>, <y1>,] <x2>, <y2>):字幕矩形遮罩,显示剪裁后的区域

  • \iclip([<x1>, <y1>,] <x2>, <y2>):字幕矩形遮罩,不显示剪裁后的区域

  • \clip([<scale>, ]<drawing commands>):遮罩(矢量绘图)

    {\clip(1, m 50 0 b 100 0 100 100 50 100 b 0 100 0 0 50 0)}将只显示椭圆内的字幕

  • \iclip([<scale>, ]<drawing commands>):遮罩(矢量绘图)

  • \p<0/1/..>:绘图模式,n为放大比例,{\p1}启用绘图模式,{\p0}退出绘图模式

  • \pbo<y>:设置绘制时的基线偏移,偏移发生在y方向,y小于0向上偏移,y大于0向下偏移

Effect

  • Scroll up;<y1>;<y2>;<delay>[;<range>]:字幕从下往上滚动

  • Scroll down;<y1>;<y2>;<delay>[;<range>]:字幕从上往下滚动

    y1为字幕滚动开始时的竖直位置,y2为字幕滚动结束时的竖直坐标

    delay为字幕移动速度,单位为ms/pixel

    range为淡入淡出的范围

  • Banner;<delay>[;<0/1>, <range>]:字幕横向滚动

    delay为字幕移动速度,单位为ms/pixel

    第二个参数取0时字幕从右向左移动,取1时字幕从左向右移动

    range为淡入淡出的范围

  • Karaoke:卡拉OK效果

    \k[<f/o>]<duration>:duration为持续时间,单位为0.01s

    • {\k<duration>}:未填充时显示次要颜色,填充后显示主体颜色
    • {\kf<duration>} and {\K<duration>}:未填充时显示次要颜色,填充后显示主体颜色,填充过程有平滑效果
    • {\ko<duration>}:未填充时显示次要颜色,且不显示边框,填充后显示主体颜色和边框

绘图命令

  • m <x> <y>:移动光标到点(x, y),自动闭合之前的形状,开始新的绘制

  • n <x> <y>:移动光标到点(x, y),不闭合当前形状

  • l <x> <y>:从当前光标位置绘制一条到点(x, y)的直线

  • b <x1> <y1> <x2> <y2> <x3> <y3>:绘制一条从当前光标位置到点(x3, y3)的3次贝塞尔曲线,以(x1, y1), (x2, y2)为控制点

    贝塞尔曲线

  • s <x1> <y1> <x2> <y2> <x3> <y3> .. <xN> <yN>:Cubic b-spline绘制一条从当前光标位置开始的连续3次贝塞尔曲线,到达点N,至少应该包含3个点。相当于把多个贝塞尔曲线连接到一起。

  • p <x> <y>:将b曲线延申至点(x, y),相当于在s语句后面再加一个点

  • c:闭合b曲线


VSFilterMod可用效果

这里只介绍相关代码,不讲如何使用VSFilterMod

  • \fsc<scale>:字体缩放,相当于同时使用\fscx\fscy

  • \fsvp<leading>:设置纵向偏移,leading取正数向上偏移,负数向下偏移

    {\r\fsvp10}\fsvp10{\r\frz10}\frz10{\r\fsvp0}\fsvp0{\r\fsvp-10}\fsvp-10

  • \frs<angle>:文字基线倾斜,选择方向取决于样式设定的对齐方式。

    {\frs90\frz-90}\frs90\frz-90

  • \z<arg>:设置z方向坐标,表示文字到屏幕的距离,结合\frx\fry使用效果更明显

    {\z100\t(\z0\frx360)}a

  • \distort(<u1>, <v1>, <u2>, <v2>, <u3>, <v3>):文字扭曲效果,通过移动角上的坐标,具体确定相对的位置

    {\distort(1, 0, 1.2, 1, -0.2, 0)}\distort(1, 0, 1.2, 1, -0.2, 0)

  • \rnd[<x/y/z>]<arg>:边界变形效果,在给定区间(-arg, arg)内随机移动边界上的像素

    {\r\rnd10}\rnd10{\r\rndx10}\rndx10{\r\rndy10}\rndy10{\r\rndz10}\rndz10

  • \$vc(&H<bb><gg><rr>&, &H<bb><gg><rr>&, &H<bb><gg><rr>&, &H<bb><gg><rr>&):渐变颜色,4个颜色参数分别代表左上,右上,左下,右下角的颜色值,$可以取值为1, 2, 3, 4,分别代表主要填充颜色,次要填充颜色,边框颜色,阴影颜色

    {\r1円vc(00FFFF, FFFF00, FF00FF, 000000)}sup /aegi/

  • \$va(&H<aa>&, &H<aa>&, &H<aa>&, &H<aa>&):渐变透明度,4个透明度参数分别代表左上,右上,左下,右下角的透明度值,$可以取值为1, 2, 3, 4,分别代表主要填充透明度,次要填充透明度,边框透明度,阴影透明度

    {\r3円va(FF, 00, FF, 00)}3円va(FF, 00, FF, 00)

  • \$img(<file path>[, <xoffset>, <yoffset>]):图片填充

    用重复发图片图案代替颜色,参数为图片路径(用/分隔)和可调整填充的基本偏移量,路径可以是相对于字幕文件的位置。$可以取值为1, 2, 3, 4,分别代表主要填充颜色,次要填充颜色,边框颜色,阴影颜色

    VSFilterMod只支持24或32位的真色彩png图片,偏移量可用\t实现动态效果

    注意:\be\blur只能模糊边框,不能模糊图片

    {3円vc(&HFF00FF&, &HFFFF00&, &H00FFFF&, &HFFFFFF&)1円img(D:/a.png, 0, 0)\pos(300, 300)\bord10}{\p1}m -150 0 b -150 -80 -80 -150 0 -150 80 -150 150 -80 150 -1 150 80 80 150 4 150 -80 150 -150 80 -150 0{\p0}

  • \mover(<x1>, <y1>, <x2>, <y2>, <angle1>, <angle2>,<radius1>, <radius2>[, <t1>, <t2>]):极限移动

    \move一样,但可以实现圆形或者螺旋移动轨迹

    angle1, angle2代表开始移动时和结束移动时的旋转角度

    radius1, radius2代表开始移动时和结束移动时的旋转半径

    {\mover(0, 0, 0, 0, -90, 0, 150, 150)}在屏幕左上角沿着半径为150像素的圆形旋转90°

  • \move3(<x1>, <y1>, <x2>, <y2>, <x3>, <y3>[, <t1>, <t2>]):曲线移动

  • \move4(<x1>, <y1>, <x2>, <y2>, <x3>, <y3>, <x4>, <y4>[, <t1>, <t2>]):曲线移动

    曲线移动字幕,可以带3个或4个基点,产生三次或四次贝塞尔移动轨迹

  • \jitter(<left>, <right>, <up>, <down>, <period>[, <seed>]):抖动

    使字幕位置产生抖动。前4个参数设定了在各个方向上的最大偏移量,period为抖动周期,以ms为单位,seed设定随机数发生器的种子数

  • \movevc(<x1>, <y1>):可移动矢量

  • \movevc(<x1>, <y1>, <x2>, <y2>[, <t1>, <t2>]):可移动矢量

    可以独立移动屏幕上的矢量图(包括\clip\iclip),不受\pos\move的影响,参数和\move相同

    {\pos(80, 140)\movevc(0, -60, 0, 60)\clip(m 46 84 1 120 141 146 206 188 144 268 182 155 130)}

脚本附件

[Fonts]

用于将TrueType类型的.ttf字体重新编码后嵌入到脚本中

fontname: <fontname>_[B][I]<charset>.ttf

文件名全为小写,后加_,粗体可加B,斜体可加I,均为可选,最后添加数字代表字符编码

例:fontname: chaucer_B0.ttf

[Graphics]

用于将编码的图像嵌入到脚本中

支持的图像格式有.bmp, .gif, .ico, .jpg, .wmf

filename: <filename>

参考

ASS特效标签

About

🌸ASS 字幕文件说明

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /