Przejdź do treści
SubtitleMatrix

Format napisów ASS

Konwersja formatówAdvanced SubStation Alpha (ASS)

Co potrafi wyrazić ten format

Formatowanie tekstu
Czcionki, kolor, obrys, cień
Pozycja na ekranie
Tak
Czasy karaoke
Tak
Podziały wierszy w bloku
Tak
Oś czasu
Czas początku i końca dla każdego bloku
Dokładność czasów
10 ms
Czasy zapisane jako numery klatek
Nie
Tekst od prawej do lewej
Tak

Przykłady

Typowy plik ASS i to, co z niego odczytujemy

Plik

[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

Co zawiera

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)

Prawa strona nie jest przekonwertowanym plikiem – to, co ta strona odczytuje z lewej strony i od czego zaczyna się każda konwersja tego pliku.

Trudny plik ASS i to, co nadal da się z niego odczytać

Plik

[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

Co zawiera

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)

Prawdziwe pliki przychodzą z BOM, końcami wierszy Windows, zbłąkaną linią przed znacznikiem czasu albo czasem, którego nie da się odczytać. Nic nie rzuca wyjątku: to, czego nie da się zrozumieć, jest zgłaszane, a nie po cichu odrzucane.

Konwertuj Advanced SubStation Alpha (ASS) na inny format

Każda z nich działa w całości w Twojej przeglądarce. Etykiety mówią, ile kosztuje dany kierunek, zanim go otworzysz.

ASS → SSA: nic nie ginie — to ten sam model napisów z tymi samymi stylami.

W tym kierunku nic nie ginie — każda cecha formatu źródłowego ma gdzie trafić w formacie docelowym.

ASS → TXT: traci znaczniki czasu, styl, pozycję, karaoke, podziały wierszy.
  • Czasy
  • Formatowanie
  • Pozycjonowanie
  • Karaoke
  • Podziały wierszy
  • Treści specyficzne dla formatu

Konwersja do tego formatu

Advanced SubStation Alpha (ASS) to jeden z formatów napisów obsługiwanych przez tę stronę, a ta strona jest jego opisem: co potrafi przechować, czego nie potrafi i dokąd można go przekonwertować.

Tabela powyżej to całość – nie ma ukrytej listy funkcji. Gdy wiersz mówi „nie”, dokładnie to ginie przy konwersji do ASS, a każda strona konwersji mówi o tym, zanim wczytasz plik.

Wszystkie te konwersje odbywają się w przeglądarce. Nic nie jest wysyłane i nie trzeba konta, co ma znaczenie przy materiale objętym NDA, dokumentacją pacjenta albo embargiem nadawcy.

Częste pytania

Czym jest plik ASS?

Plik .ass to format napisów, który dba o wygląd słów – fandom, anime i większość pracy, która nie przyjmuje domyślnych ustawień odtwarzacza. Czytają go Aegisub, mpv, VLC i narzędzia do wypalania napisów; plik trzyma tabelę stylów, kody nadpisań w blokach i taktowanie karaoke.

Czy ASS przechowuje style?

Tak, i więcej niż inne formaty: tabelę stylów z krojami, rozmiarami, kolorami, obrysami i marginesami oraz kody w tekście, dzięki którym jedna linia może być pogrubiona, pokolorowana i ustawiona bez nazwanego stylu. Tabela to sekcja [V4+ Styles], a style bloku zapisuje się nadpisaniami takimi jak \i1 w tekście Dialogue:.

Czy każdy blok ASS ma początek i koniec?

Tak, a moment w pliku ASS czyta się jako 0:00:04.13 – to setne części sekundy, najdrobniejsza jednostka ASS. Liczba jest dokładna, więc blok może być krótki, długi albo nachodzić na następny.

Do których formatów da się przekonwertować ASS bez strat?

Do żadnego w pełni. ASS ma najwięcej wymiarów, więc każda droga coś odrzuca: do SSA nie przechodzi kolor obrysu ani znaczniki \an, JSON zachowuje style i pozycje, ale traci resztę [Script Info], a formaty tekstowe gubią czas albo formatowanie. Lista przy każdym linku mówi, co dokładnie.

Co ASS trzyma poza blokami?

Trzy rzeczy: sekcję [Script Info] z ustawieniami globalnymi, tabelę stylów oraz opcjonalnie całe kroje w [Fonts] i rysunki w [Graphics]. Sekcja zdarzeń może też zawierać linie Comment: – zdarzenia przechowywane, ale nigdy niewyświetlane.

Czym różni się ASS od SSA?

To ten sam format o wersję dalej. ASS zapisuje ScriptType: v4.00+, sekcję [V4+ Styles] i kolumnę Layer przy zdarzeniu; SSA zapisuje v4.00, [V4 Styles] i Marked, a dwie kolumny stylu nazywa inaczej: TertiaryColour zamiast OutlineColour i AlphaLevel, której ASS nie ma. Konwersja między nimi zachowuje bloki, czasy i [Script Info]; uwaga – wartość koloru obrysu w praktyce wychodzi pusta, a \an nie przechodzi.