ass是字幕檔的格式。 ASS全名為「Advanced SubStation Alpha」是一種高級的字幕格式,是基於SSA 4.00 編碼構建的,在SSA編寫風格的基礎上增添更多的特效和指令;該格式字幕的外掛文件以“*.ass”作為後綴。 ASS字幕是純文字文件,這意味著它可以用任意文字編輯器手動編輯。
本教學操作環境:windows7系統、Dell G3電腦。
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字幕是純文字文件,這表示它們可以任意文字編輯器手動編輯,但必須要注意:解析器假定此腳本是遵循SSA標準中所定義的規則,在解析時任何錯誤都可能會導致無法預料的結果。
SSA/ASS腳本被劃分為類別ini檔案風格的多個section。但它並不是標準的ini檔案。
此腳本最多包含五個section:[Script Info]
、[v4 Styles]
、[Events]
、[Fonts]
、[Graphics]
。
[Script Info]
必須是整個檔案的第一行。 [Fonts]
和[Graphics]
這兩個部分了。 [Script Info]
部分中的15個行型別;[v4 Styles]
部分的樣式行;部分的6個行類型。 (行類型將在後續的每部分單獨介紹)。
部分的事件順序可以打亂輸入,仍可被正確播放,我們不能假定每個對話行都依照時間順序排列在腳本檔案中。
。
[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: RoRo Script Updated By: version 2.8.01 ScriptType: v4.00 Collisions: Normal PlayResY: 600 PlayDepth: 0 Timer: 100,0000此部分定義了多個行類型,其對應意義如下:
腳本行 | 備註 |
---|---|
#; | 分號,後面可以跟任何內容。只在腳本中用作註解。載入腳本時不可見。分號必須是該行的第一個字元。舊版中使用!: 註解 |
Title | 標題,對腳本的描述。如果未指定,自動設定為untitled
|
Original Script | 最初建立腳本的作者。如果未指定,自動設定為unknown
|
Original Translation | (可選)最初翻譯對話的人。如果未指定,則該項目不顯示 |
Original Editing | (可選)最初腳本的編輯者,通常是對翻譯潤飾和校對的人。如果未指定,則該項目不顯示 |
Original Timing | (可選)最初的時間軸人員。如果未指定,該項目不顯示 |
Synch Point | (可選)指明何時腳本應該開始播放。如果未指定,該項目不顯示 |
Script Updated By | (可選)對原始腳本進行更新的其他字幕團體的人。如果未指定,該項目不顯示 |
Update Details | #(可選)其他字幕團體對原始腳本更新的細節。如果未指定,則該項目不顯示 |
ScriptType | SSA 腳本格式的版本。例如 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等。
这一部分包含了所有样式的定义。每一个被脚本使用的样式都应该在这里定义。区别于SSA,ASS 使用[v4+ Styles]
关键字。
典型的字段如下:
[V4 Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding Style: 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的黑色。
该部分的一个典型示例是:
[Events] Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 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:)和多个事件行组成。格式航定义了事件行中各种字段的具体含义,因此格式行必须出现在所有事件前。事件行包括:
注意后面三个使用频率及兼容性过低,这里不作深入分析。
Format:
Format 行必须出现在所有事件行之前,因为它决定了SSA如何来解析下面的事件行。其所列出的字段必须正确拼写。字段名如下:
Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
最后的字段总是 Text,以便其可以包含逗号。
格式行支持在未来的脚本格式中添加新的字段,也支持旧版本的软件读出它所能识别的字段,即便字段的顺序发生了变化。其中各字段含义如下:
編號 | 欄位名稱 | 備註 |
---|---|---|
1 | Marked | Marked=0,表示在SSA中該行不顯示為已標識。 Marked=1,表示在SSA中該行顯示為已標識。 通常設定Marked為0 |
2 | Layer | 任何整數。 有不同圖層數值的字幕會在重疊偵測中被忽略。 大數值的圖層會覆蓋在小數值的圖層上面。 |
3 | Start | 事件的開始時間,格式為0:00:00:00 (小時:分:秒:毫秒),最小單位為0.01s。它是字幕顯示在螢幕上時腳本播放經過的時間。注意小時只有一位。 |
4 | End | 事件的結束時間,格式為0:00:00:00 (小時:分:秒:毫秒)。它是字幕在螢幕上消失時腳本播放經過的時間。注意小時只有一位。 |
5 | Style | 樣式名稱。如果為 Default,那麼你自己的*Default樣式會取代它。 然而,如果腳本作者要使用的Default樣式已儲存在腳本中卻被SSA忽略了,如果你要使用它,你可以修改樣式定義行裡的名稱,以便它出現在腳本的樣式清單裡。 在實際的應用程式中,若在[v4 Styles]中定義好Default樣式,如果之後使用了未定義的樣式名,那麼就使用Default樣式。如果Default樣式也沒有定義,那麼才使用渲染器自帶的樣式。 |
6 | Name | 角色名稱。說出這條對白的角色名。只為了在編輯設定時間軸時方便辨認。 |
7 | MarginL | 4位元的左邊距覆寫值(為像素)。 0000 表示使用在Style行中定義的值。 |
8 | MarginR | 4位元的右邊距覆寫值(為像素)。 0000 表示使用在Style行中定義的值。 |
9 | MarginV | 4位元的垂直邊距覆寫值(為像素)。 0000 表示使用在Style行中定義的值。 |
10 | Effect | 過渡效果。可以為空值,或為在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值同上。 |
11 | Text | 字幕文字。它是作為字幕實際出現在螢幕上的文字。任何第9個逗號之後的文本都被當作是字幕文本,所以它可以包含逗號。文字中可以包含表示換行的\n程式碼,也可以包含在大括號{}之間出現的樣式覆寫控制碼。 |
其中Dialog事件依照上述格式行給出的欄位順序給出對應數字。
Comment、Picture、Sound、Movie、Command事件行僅僅把Text欄位換成了對應的參數資訊。例如Comment的評論訊息,Command的指令全路徑,Picture的圖片路徑等等。
上述四個部分是基本的SSA/ASS格式。那麼為了實現各種特效,其實就是需要在Dialog的Text中嵌入各種樣式控制覆寫程式碼的。以下簡單總結下:
\h
、\n
和\N
,所有覆寫程式碼都寫在大括號{}內。 \
開頭。 {}
內可以放多個覆寫程式碼。 Alignment
程式碼,之後可能會加入更多(例如,陰影和邊框深度的覆寫)。 \pos
和\move
等也會作用於整行文本,以下的具體說明中會提到。 在下面的寫法中,包圍的表示參數,用
[]
包圍的表示可選,<..></..>
選擇一項。 在實際程式碼中並沒有類似符號。
覆寫程式碼 | 釋義及備註 |
---|---|
\n | 換行。如果啟用了智慧換行,\n 會被忽略。 寫法舉例: 這是第一行\n這是第二行。 \n 只在WrapStyle:2 或\q2 時會換行,其他模式下都相當於一個空格。 |
\N | 強制換行。當智慧換行啟用時用來代替\n 實作換行。 任何模式下都會強制換行。在 xy-VSFilter 中,\N 在過渡效果Banner中也會換行;在libass 中,\N 在Banner中不換行,相當於空格。 |
\h | 硬空格。不換行,暨可確保在顯示字幕時不會在它的這個空格上分行(保證左右兩個字在同一行)。 |
\b |
#\b1 文字加粗,\b0 取消粗體。 當這個參數大於1,它會作為字體的重量值(400 = 普通,700 = 粗體,注意:大多數字體的粗細可以量化為2-3個等級)。 |
\i |
#\i1 文字加斜體,\i0 取消斜體。 |
\u |
#\u1 為文字加上底線,\u0 取消文字底線。 |
\s |
#\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> </bbggrr> 是一個十六進位的RGB值,但顏色順序相反,前導的0可以省略。 可選值為 1、2、3和 4,分別對應單獨設定PrimaryColour、SecondaryColour、OutlineColor 和 BackColour,未寫入時相當於設定 為PrimaryColour。 寫法範例: \c&HFF0000& 、\1c&HFF& 、\2c&HFF00& 、\3c&HFFFFFF 、#FF#\4cFFFF 。其中的&和H依規範應該是要有的,但是如果沒有也能正常解析。
|
當c後面不跟其他字元時,會設定為目前使用的Style中所定義的對應的值。 | |
[&] |
是一個十六進位的透明度數值,00為不透明,FF為全透明。 寫法舉例: \1a&H80& 、 \2a&H80、 \3a80、 \4a&H80&。 其中的&和H依規範應該是要有的,但是如果沒有也能正常解析。 |
[&] |
是十六進位的透明度數值,00為不透明,FF為全透明。它預設相當於。 寫法舉例:\alpha80 。 |
是一個數字,決定了字幕顯示在螢幕上哪個位置。 | 1、2、3 分別是底部的居左、居中、居右; 5、6、7 分別是頂部的居左、居中、居右; 9、10、11 分別是中部的居左、居中、居右。 如果是0或沒有就設定為預設位置。如果出現了多個\a或\an則以第一個出現的為準。 |
與小鍵盤佈局相同。如果出現了多個\a或\an則以第一個出現的為準。 | |
是一個數字,與 | WrapStyle相同。 0:智慧換行,分割比較均勻,上面的行較長。 1:從行尾的字換行,只有 \N 能強制換行。 2:不換行,\n 和 \N 強制換行。 3:和 0 一樣智慧換行,下面的行較長。 |
在[v4 Styles ]中定義的樣式名,它會把這行中所有它之後的文字設定為樣式名對應的樣式。如果沒有寫 或 沒有被定義,將會設定為預設樣式。 | 例如,假設已定義了把字體設為藍色的Blue 樣式, {\1c&HFF&} 這裡是紅色 {\rBlue}這裡是藍色 { \1c&HFF00&}這裡是綠色。
|
\move(
| 提供字幕的移動效果。 , 和 之前,字幕定位在 與 之後,字幕定位在 和 當\move 和Effect 效果同時存在時,結果比較迷。 當一行含有 \move 時會忽略字幕重疊衝突的偵測。 |
| \pos(, 。螢幕的左上角為0,0。字幕的「定位點」由\a 、\an 、Alignment 決定。例如: \an1 的定位點在字幕的左下角。 \an2 的定位點在字幕底邊的正中間。 \an3 的定位點在字幕的右下角。 \an4 的定位點在字幕左邊線的正中間。 \an5 的定位點在字幕垂直水平的正中間。 \an6 的定位點在字幕右邊線的正中間。 \an7 的定位點在字幕的左上角。 \an8 的定位點在字幕頂邊的正中間。 \an9 的定位點在字幕的右上角。 當一行中有多個\pos 和\move 時,以第一個為準。事實上\pos(<x>,<y>)</y></x> 相當於\move( |
\org\(<x>,<y>)</y></x> |
设置字幕的原点为 当一行中有多个 \org 时,以第一个为准。原点就是定位点,定位点就是原点。 |
\fad(<t1>,<t2>)</t2></t1> |
提供简单的淡入淡出效果。t1为淡入时间长度,t2为淡出时间长度。单位为毫秒。 当一行中有多个 \fad 或 \fade 时,以第一个为准。 |
\fade(<a1>,<a2>,<a3>,<t1>,<t2>,<t3>,<t4>)</t4></t3></t2></t1></a3></a2></a1> |
提供复杂的淡入淡出效果。单位为毫秒。 在 在 在 在 在 当 \fade 只有两个参数时,其效果与 \fad 一致。 当一行中有多个 \fad 或 \fade 时,以第一个为准。 |
\[i]clip(<x1>,<y1>,<x2>,<y2>)</y2></x2></y1></x1> |
定义一个矩形,只有在该矩形范围内的内容可见或不可见。 当一行中有多个 \[i]clip 出现时,以最后一个为准。 |
\[i]clip([,]) |
定义一个绘画图形,只有在该绘画图形范围内的内容可见或不可见。 和 的含义与 \p 相同。 |
这里举一个我实际中使用过的示例:
需要控制字幕显示的行间距,需要怎么做呢?
假设字幕预设字体大小为16,下面文本如何控制行间距?
…很长的字幕…\N…下一行字幕…
虽然这里有\N换行符了,但显示出来还是两行紧挨在一起,没有行距。
那么参考上面的覆盖代码,可以通过下面命令调整行间距:
…很长的字幕…\N{\fs12}\N{\fs16}…下一行字幕…
当然最终行间距数值按照需求更改就行了。
SSA/ASS是相对复杂的字幕格式,但其也具有丰富的功能集及可扩展性。本文简要概述了SSA/ASS字幕文件的主要构成及基本样式覆盖代码。
更多相关知识,请访问常见问题栏目!
以上是ass是什麼文件的格式的詳細內容。更多資訊請關注PHP中文網其他相關文章!