Перейти до основного вмісту
SubtitleMatrix

Формат субтитрів ASS

Конвертація форматівAdvanced SubStation Alpha (ASS)

Що може виразити цей формат

Оформлення тексту
Шрифти, колір, контур, тінь
Позиціювання на екрані
Так
Караоке-таймінг
Так
Переноси рядків у репліці
Так
Таймлайн
Початок і кінець для кожної репліки
Роздільність часу
10 мс
Час зберігається як номери кадрів
Ні
Текст справа наліво
Так

Приклади

Типовий файл ASS, і що з нього читається

Файл

[Script Info]
Title: Example
ScriptType: v4.00+
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,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

Що він містить

6 cues, 7 lines of text

  0:00:01.00 → 0:00:04.00
    Hello there.
    [Default]
  0:00:05.00 → 0:00:08.50
    Italic and bold text.   [italic ×1, bold ×1]
    [Default]
  0:00:09.00 → 0:00:12.00
    Positioned
    [Title; \pos 320,240]
  0:00:13.00 → 0:00:16.00
    karaoke   [karaoke ×4]
    [Default]
  0:00:17.00 → 0:00:20.00
    Line one
    Line two
    [Default]
  0:00:21.00 → 0:00:24.00
    Top left
    [Default]

Outside the cues:
  sections   [Script Info], [V4+ Styles], [Events]
  style table  2 — Default (Arial 20), Title (Arial 36)

Права колонка — не перетворений файл, а те, що сайт читає з лівої колонки й з чого починається будь-яке перетворення цього файлу.

Неохайний файл ASS, і що з нього все одно читається

Файл

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
ScriptType: v4.00+

[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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

Що він містить

5 cues, 6 lines of text

  0:00:01.00 → 0:00:04.00
    Hello, world
    [Default]
  0:00:05.00 → 0:00:08.00
    {\fad(300,300)}Unmodelled override
    [Default]
  0:00:09.00 → 0:00:12.00
    Both, wrong order
    [Default; \pos 320,240]
  0:00:13.00 → 0:00:16.50
    One decimal centisecond
    [Default]
  0:00:17.00 → 0:00:20.00
    Soft
    break
    [Default]

Outside the cues:
  sections   [Script Info], [V4+ Styles], [Fonts], [Events]
  style table  1 — Default (Arial 20)
  events     1 Comment: line — stored, never displayed

Reported while reading — repaired or skipped, never silently:
  1 × events whose time codes could not be read (they were left in the file unchanged)

Справжні файли приходять із BOM, переводами рядків Windows, зайвим рядком перед часом або часом, який взагалі не читається. Ніщо з цього не валить обробку: нерозпізнане потрапляє у звіт, а не зникає мовчки.

Конвертувати Advanced SubStation Alpha (ASS) в інший формат

Кожен із них працює повністю у вашому браузері. Позначки кажуть, чого коштує цей напрямок, ще до того, як ви його відкриєте.

ASS → MicroDVD — втрати: стилі, позиціювання, караоке, fps, дані формату.
  • Оформлення
  • Позиціювання
  • Караоке
  • Частота кадрів
  • Дані формату
ASS → SSA у браузері — без втрат, обидва формати зберігають усе.

У цьому напрямку нічого не втрачається — кожна можливість вихідного формату має куди подітися в цільовому.

ASS → TXT — втрати: таймінг, стилі, позиціювання, караоке, переноси, дані.
  • Таймінг
  • Оформлення
  • Позиціювання
  • Караоке
  • Переноси рядків
  • Дані формату

Конвертація в цей формат

Advanced SubStation Alpha (ASS) — один із дванадцяти форматів субтитрів, з якими працює цей сайт, і ця сторінка — його довідник: що формат уміє зберегти, чого не вміє і в який формат його переписати.

ASS — скрипт, а не список реплік: [Script Info], таблиця [V4+ Styles] і рядки Dialogue. Час записано в сотих секунди як 0:00:01.25, а стилі, позиціювання й караоке описані кодами перевизначення.

Таблиця вище — це весь перелік можливостей, без прихованих рядків. Якщо рядок каже «ні», саме це й зникне під час конвертації з ASS, і кожна сторінка перетворення нижче попереджає про це до того, як ви відкриєте файл.

Усі ці перетворення виконуються у вашому браузері. Файли нікуди не надсилаються, обліковий запис не потрібен — це важливо для матеріалів під NDA, медичних записів і матеріалів до ефіру, які ще не вийшли.

Часті запитання

Що таке файл ASS?

ASS — скрипт, а не список реплік: [Script Info], таблиця [V4+ Styles] і рядки Dialogue. Час записано в сотих секунди як 0:00:01.25, а стилі, позиціювання й караоке описані кодами перевизначення. Файли ASS читають mpv, VLC, ffmpeg і Aegisub.

Чи зберігає ASS оформлення?

У ASS — повна система стилів: шрифт, кегль, кольори, обведення, тінь і відступи. Це стосується саме оформлення; позиціювання й караоке — окремі виміри, і кожен із них треба перевіряти окремо.

Чи має кожна репліка ASS і початок, і кінець?

Так, у кожної репліки ASS є і початок, і кінець; початок записано як 0:00:01.25, кінець — окремим таким самим записом. Тому під час конвертації в інший формат тривалість не доведеться виводити з сусідніх реплік.

У які формати ASS можна конвертувати без втрат?

Без втрат: SSA. Це не оцінка якості, а точний наслідок таблиці можливостей: у кожному з цих напрямків цільовий формат уміє зберегти все, що є в ASS. У решті напрямків щось зникає, і кожна сторінка перетворення називає своє.

Що ASS зберігає поза репліками?

[Script Info], вбудовані шрифти [Fonts], графіка [Graphics] і рядки Comment:. Ці дані не є субтитрами в строгому сенсі, але без них файл втрачає частину змісту: саме тому під час конвертації вони потрапляють у список втрат, а не зникають мовчки.

Чим ASS відрізняється від SSA?

ASS — новіший діалект: він оголошує ScriptType v4.00+ і тримає стилі в [V4+ Styles], де окремо задані колір обведення й тіні. SSA оголошує v4.00 і використовує [V4 Styles] з іншими назвами колонок. Рядки Dialogue й коди перевизначення спільні, тому перехід між ними — переписування заголовка.