ass字幕格式
...大约 5 分钟
ass字幕格式
来源: https://github.com/libass/libass/wiki/ASS-File-Format-Guide
TODO:
了解ass格式。样式设置。
ass解析器。
python-vlc 如何播放视频外挂字幕。如何实时修改ass字幕。
ffmpeg嵌入软字幕,硬字幕。
b站是否支持软字幕。
概述
- 一个ASS/SSA字幕文件通常被称为"script"
- 字幕文件由多个类似ini文件的节(section)组成。每节第一行为
[section_title]。前后无空格。两节之间至少有一个空行。 - 除了
[Fonts]节,其他节的每一行都必须是完整,独立的陈述。单个陈述不允许拆分为多行。 - 每个节只能出现一次,并按
[Script Info],[V4++ Style],[Events]的顺序出现。这三个节是必须有的。[Fonts]节是可选的。 - 文件必须为有效的UTF-8格式,并且可以使用UNIX风格或DOS风格的换行符。为了使更多编辑器能够识别,文件开头应添加UTF-8 BOM。
- 除非另有指示,否则整数和小数必须使用10进制,并且不得添加任何领先或尾随的零。
- ASS坐标系的原点在左上角。
Script Info节
- 节头为
[Script Info] - 本节可以设置全局标头(global header)值来影响其他所有内容的行为。
- 标头格式
header_name: header_value,冒号后的空格不能省略。 - 必须有
ScriptType标头 - 应该至少有
ScaledBorderAndShadow、YCbCr Matrix、PlayResX、PlayResY、LayoutResX、LayoutResY这些标头。 - 如果脚本是由程序生成或通过编辑器编写的,则通常会在该
[Script Info]部分的第一行中插入对此的注释。格式为; comment content。分号后的空格不能省略
功能标头
- ScriptType: SSAv4文件设为
v4.00,ASS文件设为v4.00+,ASS2文件设为v4.00++。必须匹配以后在样式和事件部分中使用的格式。 - ScaledBorderAndShadow: 设为yes。
- YCbCr Matrix: 有效的值为
<range>.<colour space>- range: 可以是PC(全范围),或TV(受限范围)
- colour space: 601(BT601), 709(BT709), 240M(SMPTE240M),FCC
- LayoutResX and LayoutResY: 设置为相应视频的原生显示尺寸。(应该就是分辨率)
- PlayResX and PlayResY: 创建新文件时和LayoutResX and LayoutResY保持一致。会影响Fontsize的实际大小。
- WrapStyle: 设置全局默认的换行行为。
- 0: 默认值。在空格或
\n处换行,每行长度尽量相当。 - 1: 在空格或
\n处换行,只把溢出的文本放到下一行。 - 2: 只会在
\N处换行。(排版应激活此模式\q,但除非执行纯 Sign&Song 脚本,否则全局启用此模式可能没有多大意义)
- 0: 默认值。在空格或
信息标头
以下标头不会影响渲染,但可用于记录有关脚本的元数据: Title, Original Script, Original Translation, Original Editing, Original Timing, Script Updated By, Update Details。值没有特别的格式,只要不包含换行或其他ASCII控制序列即可。
Style节
v4+(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 - 后续则逐行逐个按Format定义后续会用到的字体样式。
- 布尔值
false必须用0表示,true必须用-1表示。 - 颜色值必须使用16进制值,加上
&H前缀。颜色和AlphaGo通道的声明顺序为ABGR。&H00为完全不透明,&HFF为透明。对于不接受 alpha 通道的覆盖标签(override tags),必须仅指定BGR且不指定 alpha。 - 所有使用的字体及其变体必须存在并且必须附加到最终版本中。
- 布尔值
Name: 必须是唯一的非空字符串,不得以空格开头或结尾。稍后用于引用和使用定义的样式。Fontname: 设置所需字体的系列名称。不得超过 31 个字符,并且字体的系列名称必须在所有平台上匹配。Spacing: 浮点数。在每个字形之间应用间距。BorderStyle: 可以1用于扩展字形形状的常规轮廓,也3可以使用矩形框代替。Alignment:参见\an允许值。Encoding: 必须始终设置为1。Fontsize:浮点数。PrimaryColour,SecondaryColour,OutlineColour,BackColour: ABGR颜色值。Bold,Italic,Underline,StrikeOut: 布尔值。ScaleX,ScaleY: 浮点数。Outline,Shadow: 浮点数。Angle: 浮点数。MarginL,MarginR,MarginV: 整数。
其他风格
略
Fonts节
此部分是可选的,包含嵌入到字幕文件本身中的字体。如果没有嵌入字体,则必须省略该部分。
如果可能,您应该将字体附加到 MKV 容器(或类似的多媒体容器),而不是将它们嵌入到字幕文件本身中。
Events节
格式
- 节头为
[Events] - 有两类事件。格式取决于格式版本。
Dialogue,将在指定的时间和位置渲染到屏幕上Comment,不渲染但显示在编辑器中。
- v4+格式中,节头下一行必须为
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text - 除最后一个
Text字段外,任何字段值都不允许包含逗号。 Layer:范围内的整数值[0, 2³¹-1]。低值先渲染。Start/End:事件的开始/结束时间;字幕只会在这些时间之间显示; start 与 end 是互斥的。格式为h:mm:ss.dd。Style:必须与先前定义的名称完全匹配Style。该样式定义将用于整个事件。Name:一个自由格式的元数据字段,主要用于指示角色正在说/正在思考/...这段对话。不影响渲染。Margin*: 如果非零,则覆盖样式中的相应值MarginR。MarginVEffect:应用于事件的效果。主要是一些滚动效果。略。Text:包含将在屏幕上显示的文本和命令。该字段允许包含逗号。
覆盖标签
- 见Aegisub 文档
- 不要使用
\fe,使用\blur而非\be - 换行使用
\N, 尽量不要用\n。
示例文件
[Script Info]
ScriptType: v4.00+
ScaledBorderAndShadow: yes
YCbCr Matrix: None
PlayResX: 640
PlayResY: 360
LayoutResX: 640
LayoutResY: 360
WrapStyle: 0
[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,DejaVu Sans,65,&H007F67D0,&H00187DC1,&H00000000,&H00D4AA86,-1,0,0,0,100,100,0,0,1,0.4,0,7,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:06.99,Default,,0,0,0,,Placeholder; replace with proper type later
Dialogue: 0,0:00:00.00,0:00:06.99,Default,,0,0,0,,{\pos(52,72)\an7\1c&HB3B3B3&\p1}m 2 34 l 8 60 112 37 107 24{\p0}
Dialogue: 0,0:00:00.00,0:00:06.99,Default,,0,0,0,,{\q2\shad0\bord2\fs36\org(126.31,107.61)\pos(128.85,116.69)\fax-0.068131\fscx207.70\fscy50.43\frz4.2185\frx25.9522\fry63.2018}Bakery