文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SSA/ASS的基本结构是什么

2023-07-05 05:38

关注

本文小编为大家详细介绍“SSA/ASS的基本结构是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“SSA/ASS的基本结构是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

ass是字幕文件的格式。ASS全称“Advanced SubStation Alpha”是一种高级的字幕格式,是基于SSA 4.00+编码构建的,在SSA编写风格的基础上增添更多的特效和指令;该格式字幕的外挂文件以“*.ass”作为后缀。ASS字幕是纯文本文件,这意味着它可以用任意文本编辑器手工编辑。

ASS 是大多数字幕制作者所公认的并且经常使用的字幕格式。

SubStation Alpha(Sub Station Alpha),简称SSA,是由CS Low(亦称Kotus)创建,比传统字幕格式(如SRT)功能更加先进的字幕文件格式。该格式字幕的外挂文件以*.ssa作为后缀。

Advanced SubStation Alpha(ASS)是一种比SSA更为高级的字幕格式, 其实质版本是SSA v4.00+。它是基于SSA 4.00+编码构建的。ASS的主要变化就是在SSA编写风格的基础上增添更多的特效和指令。该格式字幕的外挂文件以*.ass作为后缀。

目前有很多播放器支持渲染SSA、ASS字幕。

ASS是可以兼容SSA格式的。

SSA/ASS的基本结构是什么

1、SSA/ASS基本结构

SSA/ASS字幕是纯文本文件,这意味着它们可以用任意文本编辑器手工编辑,但必须要注意:解析器假定此脚本是遵循SSA标准中所定义的规则,在解析时任何错误都可能会导致无法预料的结果。

SSA/ASS脚本被划分为类ini文件风格的多个section。但它并不是标准的ini文件。
该脚本最多包含五个section:[Script Info][v4+ Styles][Events][Fonts][Graphics]

以下是SSA/ASS文件中五个主要部分的简要总结:

[Script Info]

这一部分包含了脚本的头部和总体信息。[Script Info] 必须是 v4 版本脚本的第一行。

[v4 Styles]

这一部分包含了所有样式的定义。每一个被脚本使用的样式都应该在这里定义。ASS 使用 [v4+ Styles]。

[Events]

这一部分包含了所有脚本的事件,有字幕、注释、图片、声音、影像和命令。基本上,所有在屏幕上看到的内容都在这一部分。

[Fonts]

这一部分包含了脚本中内嵌字体的信息。

[Graphics]

这一部分包含了脚本中内嵌图片的信息。

2、[Script Info]部分

一个典型的[Script Info]部分是这样的:

[Script Info]; This is a Sub Station Alpha v4 script.; For Sub Station Alpha info and downloads,; go to http://www.eswat.demon.co.uk/Title: Neon Genesis Evangelion - Episode 26 (neutral Spanish)Original Script: RoRoScript Updated By: version 2.8.01ScriptType: v4.00Collisions: NormalPlayResY: 600PlayDepth: 0Timer: 100,0000

此部分定义了多个行类型,其对应含义如下:

脚本行备注
;分号,后面可以跟任何内容。只在脚本中用作注释。加载脚本时不可见。分号必须是该行的第一个字符。旧版本中使用!:注释
Title标题,对脚本的描述。如果未指定,自动设置为untitled
Original Script最初创建脚本的作者。如果未指定,自动设置为unknown
Original Translation(可选)最初翻译对话的人。如果未指定,该项不显示
Original Editing(可选)最初脚本的编辑者,通常是对翻译润色和校对的人。如果未指定,该项不显示
Original Timing(可选)最初的时间轴人员。如果未指定,该项不显示
Synch Point(可选)指明什么时候脚本应该开始播放。如果未指定,该项不显示
Script Updated By(可选)对原脚本进行更新的其他字幕团体的人。如果未指定,该项不显示
Update Details(可选)其他字幕团体对原脚本更新的细节。如果未指定,该项不显示
ScriptTypeSSA 脚本格式的版本。例如 V4.00。如果当前使用的 SSA 程序版本旧于脚本的版本,将给出警告
Collisions为了防止字幕重叠,它决定了字幕如何移动。
如果设置为Normal,SSA 将尝试使用「Margins」指定的位置来定位字幕。同时,字幕会垂直地移动来防止重叠。在Normal的防重叠模式下,新字幕会出现在已存在字幕的上方,但它会寻找最低的不产生重叠的位置,来填补其他字幕产生的「空隙」。
如果设置为Reverse,已存在的字幕会上移给新字幕腾出空间。这意味这字幕总是可以自上向下地阅读,但也意味着已存在的字幕可能会在新字幕出现之前出现在屏幕的中间。它会占用大量的屏幕区域。
PlayResY渲染字幕时的渲染范围的高度。如果使用Directdraw播放,SSA v4会自动选择最接近的已启用的设置
PlayResX渲染字幕时的渲染范围的宽度。如果使用Directdraw播放,SSA v4会自动选择最接近的已启用的设置
PlayDepth渲染字幕时的颜色深度。如果使用 Directdraw播放,SSA v4会自动选择最接近的已启用的设置
Timer脚本的计时器速度,使用浮点的百分比。例如,100.0000代表100%,保留四位小数。
计时器速度是应用于SSA时钟的时间乘数,以提供斜坡时间来扩展或压缩脚本的总时间。速度大于100%会减少脚本总时间,意味着字幕会逐步地越来越早地出现;速度小于100%会增加脚本总时间,意味着字幕会逐步地越来越晚地出现(就像一个正的斜坡时间)。
扩展和压缩只发生在脚本播放时,这个值不会改变脚本事件部分的实际时间。
WrapStyle定义了默认的换行方式。
0:智能换行,分割比较均匀,上面的行较长。
1:从行尾的词换行,只有\N能强制换行。
2:不换行,\n和\N强制换行。
3:和0一样智能换行,下面的行较长。
ScaledBorderAndShadow指定边框宽度与阴影深度是否随着视频分辨率等比例缩放,默认为No。
当值为 No 时,边框宽度与阴影深度完全按照指定的像素数显示;当值为 Yes 时,边框宽度与阴影深度随着实际视频的分辨率同等比例缩放。

在实际应用中可能用到的是Title、PlayResX、PlayResY、WrapStyle等。

3、[v4 Styles]部分

这一部分包含了所有样式的定义。每一个被脚本使用的样式都应该在这里定义。区别于SSA,ASS 使用[v4+ Styles]关键字。
典型的字段如下:

[V4 Styles]Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, EncodingStyle: DefaultVCD, Arial,28,11861244,11861244,11861244,-2147483640,-1,0,1,1,2,2,30,30,30,0,0

这一部分用来定义字幕的外观和位置,以便[Events]部分直接引用。此部分由格式行(Format:)和样式行(Style:)组成。除边框样式外,所有样式都可以在[Events]部分使用代码重设。

格式行和样式行的内容一一对应。格式行定义了如何解释样式中的每个字段,因此格式行必须出现在所有的样式之前,且格式行中列出的字段名必须拼写正确!格式行允许在未来将新字段添加到脚本格式中,并且允许旧版本的软件读取它所识别的字段——即使字段顺序已经更改。包括如下23个字段:

Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding

各字段含义如下:

格式名备注
Name样式名称(用于[Events]部分引用,区分大小写,不能包含逗号)
Fontname字体名称( Windows所使用的字体名称,区分大小写)
Fontsize字体大小(字号)
PrimaryColour主体颜色(一般情况下文字的颜色)
SecondaryColour次要颜色(在卡拉OK效果中字幕由次要颜色变为主体颜色)
OutlineColor边框颜色
BackColour阴影颜色
Bold粗体(-1=开启,0=关闭)
Italic斜体(-1=开启,0=关闭)
Underline下划线( -1=开启,0=关闭)
Strikeout删除线( -1=开启,0=关闭)
ScaleX横向缩放(单位%,100即正常宽度)
ScaleY纵向缩放(单位%,100即正常高度)
Spacing字间距(单位像素,支持小数)
Angle旋转角度(绕z轴逆时针旋转\frz,负数=顺时针旋转。单位,支持小数)
BorderStyle边框样式(1=边框+阴影,3=不透明底框)
Outline边框宽度(单位像素,可用小数)
Shadow阴影深度(单位像素,可用小数,右下偏移)
Alignment对齐方式(同小键盘布局,决定了旋转/定位/缩放的参考点)
MarginL左边距(字幕距左边缘的距离,单位像素,右对齐和中对齐时无效)
MarginR右边距(字幕距右边缘的距离,单位像素,左对齐和中对齐时无效)
MarginV垂直边距(字幕距垂直边缘的距离,单位像素,下对齐时表示到底部的距离;上对齐时表示到顶部的距离;中对齐时无效,文本位于垂直中心)
Encoding编码( 0=ANSI,1=默认,128=日文,134=简中,136=繁中,一般用默认1即可 )

其中脚本支持的颜色格式是:&Haabbggrr,均为十六进制,取值0-9,A-F。
前2位(alpha)为透明度,00=不透明,FF=DEC255=全透明;
后6是BGR蓝绿红颜色。 排在最前的00可以忽略不写, 如:{\c&HFF&}={\c&H0000FF&}为纯红色、&HFFFFFF=纯白色、&HC8000000=透明度为200的黑色。

4、[Events]部分

该部分的一个典型示例是:

[Events]Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, TextDialogue: Marked=0,0:00:01.18,0:00:06.85,DefaultVCD, NTP,0000,0000,0000,,{\pos(400,570)}Like an angel with pity on nobody

[Event]部分由格式行(Format:)和多个事件行组成。格式航定义了事件行中各种字段的具体含义,因此格式行必须出现在所有事件前。事件行包括:

注意后面三个使用频率及兼容性过低,这里不作深入分析。

4.1 格式行Format:

Format 行必须出现在所有事件行之前,因为它决定了SSA如何来解析下面的事件行。其所列出的字段必须正确拼写。字段名如下:
Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

最后的字段总是 Text,以便其可以包含逗号。
格式行支持在未来的脚本格式中添加新的字段,也支持旧版本的软件读出它所能识别的字段,即便字段的顺序发生了变化。其中各字段含义如下:

编号字段名备注
1MarkedMarked=0,表示在SSA中该行不显示为已标识。
Marked=1,表示在SSA中该行显示为已标识。
通常设置Marked为0
2Layer任何整数。
有不同图层数值的字幕会在重叠检测中被忽略。
大数值的图层会覆盖在小数值的图层上面。
3Start事件的开始时间,格式为0:00:00:00(小时:分:秒:毫秒),最小单位为0.01s。它是字幕显示在屏幕上时脚本播放经过的时间。注意小时只有一位。
4End事件的结束时间,格式为0:00:00:00(小时:分:秒:毫秒)。它是字幕在屏幕上消失时脚本播放经过的时间。注意小时只有一位。
5Style样式名。如果为 Default,那么你自己的*Default样式会取代它。
然而,如果脚本作者要使用的Default样式已存储在脚本中却被SSA忽略了,如果你要使用它,你可以修改样式定义行里的名称,以便它出现在脚本的样式列表里。
在实际的应用中,若在[v4+ Styles]中定义好Default样式,如果之后使用了未定义的样式名,那么就使用Default样式。如果Default样式也没有定义,那样才使用渲染器自带的样式。
6Name角色名。说这条对白的角色名。只为了在编辑和设定时间轴时方便辨认。
7MarginL4位的左边距覆写值(为像素)。0000 表示使用在Style行中定义的值。
8MarginR4位的右边距覆写值(为像素)。0000 表示使用在Style行中定义的值。
9MarginV4位的垂直边距覆写值(为像素)。0000 表示使用在Style行中定义的值。
10Effect过渡效果。可以为空值,或者为在SSA v4.x实现的三种过渡效果之一。
效果名称区分大小写,必须正确拼写,不加引号。
Karaoke,表示卡拉OK效果,依次高亮每个字。作为一个效果类型已经废弃不用。

Scroll up;y1;y2;delay[;fadeawayheight],表示文本或图片会在屏幕上向上滚动。
Scroll up之后的参数字段用分号分隔。
y1和y2值(为像素)定义了文本在屏幕上滚动的垂直区域。两个值位置可以互换。如果两个值都是 0,文本会在整个屏幕高度向上滚动。
delay值可取值1到100以降低滚动的速度,0表示无延迟按原速度滚动。当delay值大于1时,移动1像素需要(1000/delay)秒。
fadeawayheigh值可选,可以使文本滚动到其范围的边缘时呈现淡出效果。

Scroll down;y1;y2;delay[;fadeawayheight],同上,为向下滚动。

Banner;delay[;lefttoright;fadeawaywidth],表示所有文本都忽略长度到一行里,从右向左滚动经过屏幕。
delay值同上。
lefttoright值可选,取值0或1。默认为0,表示从右向左滚动。
fadeawaywidth值同上。
11Text字幕文本。它是作为字幕实际出现在屏幕上的文本。任何第9个逗号之后的文本都被当作是字幕文本,所以它可以包含逗号。文本中可以包含表示换行的\n代码,也可以包含在大括号{}之间出现的样式覆写控制代码

4.2 事件行

其中Dialog事件按照上述格式行给出的字段顺序给出对应数字。

Comment、Picture、Sound、Movie、Command事件行仅仅把Text字段换成了对应的参数信息。比如Comment的评论信息,Command的命令全路径,Picture的图片路径等等。

5、样式控制覆写代码以及特效示例

上述四个部分是基本的SSA/ASS格式。那么为了实现各种特效,实际上是需要在Dialog的Text中嵌入各种样式控制覆写代码的。下面简单总结下:

在下面的写法中,<>包围的表示参数,用[]包围的表示可选,<../..>选择一项。在实际代码中并没有类似符号。

覆写代码释义及备注
\n换行。如果启用了智能换行,\n会被忽略。
写法举例:这是第一行\n这是第二行。
\n只在WrapStyle:2\q2时会换行,其他模式下都相当于一个空格。
\N强制换行。当智能换行启用时用来代替\n实现换行。
任何模式下都会强制换行。在xy-VSFilter中,\N在过渡效果Banner中也会换行;在libass中,\N在 Banner中不换行,相当于空格。
\h硬空格。不换行,暨可确保在显示字幕时不会在它的这个空格上分行(保证左右两个词在同一行)。
\b<0/1>\b1文本加粗,\b0取消粗体。
当该参数大于1,它会作为字体的重量值(400 = 普通,700 = 粗体,注意:大多数字体的粗细可以量化为2-3个等级)。
\i<0/1>\i1文本加斜体,\i0取消斜体。
\u<0/1>\u1给文本加下划线,\u0取消文本下划线。
\s<0/1>\s1给文本加删除线,\s0取消文本删除线。
\bord<宽度>
\xbord<宽度>
\ybord<宽度>
边框宽度,单位为像素,可以是小数。有x或y时可以单独设置沿X轴或Y轴的边框宽度。
写法举例:\bord1\xbord2\ybord3
\shad<深度>
\xshad<深度>
\yshad<深度>
阴影深度,单位为像素,可以是小数。有x或y时可以单独设置沿X轴或Y轴的阴影深度。
写法举例:\shad1、\xshad2、\yshad3。
\fn<字体名>指定一个系统中已安装的字体。区分大小写。如果指定的字体没有安装,那么会使用 Arial字体
写法举例:\fn微软雅黑
\fs<字体尺寸><字体尺寸>是一个数字,指定了字体点的尺寸。
注意,这里的字体尺寸并不是字号的大小,\fs20并不是字体大小(font-size)为 20px,而是指其行高(line-height)为20px,主要是因为VSFilter使用的Windows GDI的字体接口。
\fs+<数值>
\fs-<数值>
将当前文本的字体尺寸乘一定的倍数。例如,\fs+2表示将当前文本的字体尺寸乘1.2,\fs-3表示将当前文本的字体尺寸乘0.7。计算方式为(10 ± <数值>) * 当前字体尺寸,当计算的结果小于等于0时结果不生效,即依然为原来的字体尺寸。
\fscx<百分数>
\fscy<百分数>
缩放文字大小。\fscx<百分数>为水平缩放,\fscy<百分数>为垂直缩放。
写法举例:\fscx233.33\fscy50。可适用于矢量图形。
\fsp<像素值>它改变字符之间的距离,默认为0。写法举例:\fsp3
\fr<度数>
\frx<度数>
\fry<度数>
\frz<度数>
表示沿X/Y/Z轴旋转一定的度数。\fr<度数>表示沿Z轴旋转。
写法举例:\fr30\frx-30\fry-233.33\frz480
其旋转的原点由\org决定,如果没有指定\org,那么按「默认定位点」来旋转。
\fax<因数>
\fay<因数>
分别沿X轴和Y轴对文字行进行倾斜调整。 如\fax-0.5等同于斜体。一般情况下因数的绝对值不要超过2。
\fe<字符集>指定文字的字符集(字体编码)。通常0为英文,1为系统默认,134为简体中文,136为繁体中文。
一般字幕文件保存为Unicode方式编码如UTF-8时,可以忽略该设置。
\[<颜色序号>]c[&][H][&]<BBGGRR>是一个十六进制的RGB值,但颜色顺序相反,前导的0可以省略。
<颜色序号>可选值为 1、2、3和 4,分别对应单独设置PrimaryColour、SecondaryColour、OutlineColor 和 BackColour,<颜色序号>未写时相当于设置 为PrimaryColour。
写法举例:\c&HFF0000&\1c&HFF&\2c&HFF00&\3c&HFFFFFF\4cFFFFFF。其中的&和H按规范应该是要有的,但是如果没有也能正常解析。
\[<颜色序号>]c当c后面不跟其他字符时,会设置为当前使用的Style中所定义的对应的值。
<颜色序号>a[&][H][&]是一个十六进制的透明度数值,00为不透明,FF为全透明。
<颜色序号> 含义同上,但这里不能省略。
写法举例:\1a&H80&\2a&H80\3a80\4a&H80&
其中的&和H按规范应该是要有的,但是如果没有也能正常解析。
\alpha[&][H][&]是一个十六进制的透明度数值,00为不透明,FF为全透明。它默认相当于\1a&H<AA>&
写法举例:\alpha80
\a<位置><位置>是一个数字,决定了字幕显示在屏幕上哪个位置。
1、2、3 分别是底部的居左、居中、居右;
5、6、7 分别是顶部的居左、居中、居右;
9、10、11 分别是中部的居左、居中、居右。
如果是0或者没有就设置为默认位置。如果出现了多个\a或\an则以第一个出现的为准。
\an<位置>与小键盘布局相同。如果出现了多个\a或\an则以第一个出现的为准。
\q<方式><方式>是一个数字,与WrapStyle相同。
0:智能换行,分割比较均匀,上面的行较长。
1:从行尾的词换行,只有 \N 能强制换行。
2:不换行,\n 和 \N 强制换行。
3:和 0 一样智能换行,下面的行较长。
\r[<样式名>]<样式名> 是在[v4 Styles+]中定义的样式名,它会把这行中所有它之后的文本设置为样式名对应的样式。如果没有写 <样式名> 或者 <样式名> 没有被定义,将会设置为默认样式。
例如,假设已定义了把字体设为蓝色的 Blue 样式,{\1c&HFF&}这里是红色{\rBlue}这里是蓝色{\1c&HFF00&}这里是绿色。
\move(<x1>,<y1>,<x2>,<y2>[,<t1>,<t2>])提供字幕的移动效果。,是开始点坐标,,是结束点坐标。
是相对于字幕显示时间的开始运动与结束运动的毫秒时间。
之前,字幕定位在,
之间,字幕从,均速移动到,
之后,字幕定位在,
没写或者都是 0 时,则在字幕的整段时间内均速移动。
当一行中有多个 \pos 和 \move 时,以第一个为准。
当\move 和Effect 效果同时存在时,结果比较迷。
当一行中含有 \move 时会忽略字幕重叠冲突的检测。
\pos(<x>,<y>)将字幕定位在坐标点,。屏幕的左上角为0,0。字幕的「定位点」由\a<位置>\an<位置>Alignment决定。例如:
\an1的定位点在字幕的左下角。
\an2的定位点在字幕底边的正中间。
\an3的定位点在字幕的右下角。
\an4的定位点在字幕左边线的正中间。
\an5的定位点在字幕垂直水平的正中间。
\an6的定位点在字幕右边线的正中间。
\an7的定位点在字幕的左上角。
\an8的定位点在字幕顶边的正中间。
\an9的定位点在字幕的右上角。
当一行中有多个\pos\move时,以第一个为准。事实上\pos(<x>,<y>)相当于\move(<x>,<y>,<x>,<y>,0,0)
当一行中含有 \pos 时会忽略字幕重叠冲突的检测。
\org\(<x>,<y>)设置字幕的原点为,。字幕的原点会影响其旋转效果,字幕是基于原点来旋转的。当未设置时默认为字幕的定位点。
当一行中有多个\org时,以第一个为准。
原点就是定位点,定位点就是原点。
\fad(<t1>,<t2>)提供简单的淡入淡出效果。t1为淡入时间长度,t2为淡出时间长度。单位为毫秒。
当一行中有多个 \fad 或 \fade 时,以第一个为准。
\fade(<a1>,<a2>,<a3>,<t1>,<t2>,<t3>,<t4>)提供复杂的淡入淡出效果。单位为毫秒。

之前,透明度为。
之间,透明度由变化到。
之间,透明度为。
之间,透明度由变化到。
之后,透明度为。
当 \fade 只有两个参数时,其效果与 \fad 一致。
当一行中有多个 \fad 或 \fade 时,以第一个为准。
\[i]clip(<x1>,<y1>,<x2>,<y2>)定义一个矩形,只有在该矩形范围内的内容可见或不可见。,为矩形的左上角,,为矩形的右下角。\clip 是矩形范围内可见,\iclip 是矩形范围内不可见。
当一行中有多个\[i]clip出现时,以最后一个为准。
\[i]clip([<等级>,]<绘图命令>)定义一个绘画图形,只有在该绘画图形范围内的内容可见或不可见。<等级> 和 <绘图命令> 的含义与 \p 相同。

这里举一个我实际中使用过的示例:
需要控制字幕显示的行间距,需要怎么做呢?
假设字幕预设字体大小为16,下面文本如何控制行间距?

…很长的字幕…\N…下一行字幕…

虽然这里有\N换行符了,但显示出来还是两行紧挨在一起,没有行距。
那么参考上面的覆盖代码,可以通过下面命令调整行间距:

…很长的字幕…\N{\fs12}\N{\fs16}…下一行字幕…

当然最终行间距数值按照需求更改就行了。

读到这里,这篇“SSA/ASS的基本结构是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯