Przejdź do treści
SubtitleMatrix

Konwerter napisów SSA na TTML

Konwersja formatówSubStation Alpha (SSA)
Albo wklej tekst napisów

Co zmienia ta konwersja

2 rzeczy zostają pominięte albo wymagają decyzji

  • Karaoke

    czasy karaoke (podświetlanie sylaba po sylabie)

  • Treści specyficzne dla formatu

    treść, którą format źródłowy trzyma poza blokami (bloki niebędące napisami, tekst nagłówka, ustawienia pojedynczych bloków, zakomentowane zdarzenia) — format docelowy nie ma dla niej miejsca

Ta lista pochodzi z macierzy możliwości tych dwóch formatów, a nie z konkretnego wczytanego pliku. Konkretny plik może stracić więcej, jeśli używa cech, które format dopuszcza, ale macierz ich nie modeluje.

Ta strona zamienia SSA w TTML. SSA to skrypt z tabelą stylów, a TTML to XML z elementami <p begin=… end=…>.

Wynik zachowuje tekst, czasy i wyróżnienia jako <span>. Karaoke, tabela [V4 Styles] i pozycjonowanie przepadają – \pos i \an nie trafiają do atrybutów, a tytuł nie jest wypisywany w <head><title>.

Dokument to <tt> z przestrzeniami nazw, w środku <body> i po jednym <p> na blok – bez <div>. Wszystko dzieje się w przeglądarce, z możliwością przerwania i zbiorczym ZIP-em.

Przykłady

Typowy plik SSA po konwersji do TTML

Wejście

[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

Wynik

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:04.000">Hello there.</p>
<p begin="00:00:05.000" end="00:00:08.000"><span tts:fontStyle="italic">Italic</span> line.</p>
<p begin="00:00:09.000" end="00:00:12.000">Two<br/>lines</p>  </body>
</tt>

W tym wyniku odrzucono: karaoke, pozycjonowanie i treści specyficzne dla formatu. Kursywa i pogrubienie zostają jako <span>, a reszta zgadza się linia po linii.

Ta sama konwersja na trudnym pliku

Wejście

[Script Info]
Title: Dirty SSA
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.

Wynik

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:01.000" end="00:00:04.000"><span tts:fontWeight="bold">Bold</span> and <span tts:textDecoration="underline">underlined</span>.</p>
<p begin="00:00:05.000" end="00:00:08.000">A soft<br/>break and a {\p1}mystery{\p0} code.</p>  </body>
</tt>

Tak wyglądają prawdziwe pliki – mieszane końce wierszy, zbłąkane spacje, puste pola. Porównaj z czystym przykładem powyżej, żeby zobaczyć, co parser wybacza.

Częste pytania

Co dzieje się z karaoke z SSA w TTML?

Kody \k, \kf i \ko znikają, a sylaby zostają jako zwykły tekst; TTML nie zapisuje momentu wewnątrz linii.

Co się dzieje z blokiem [Script Info] i resztą skryptu SSA w TTML?

Napisy powstają tylko z Dialogue:. [Script Info] z tytułem, którego konwerter nie wypisuje w <head><title>, tabela stylów, Comment: oraz [Fonts] i [Graphics] przepadają.

Jak wygląda wynik, gdy SSA zamienia się w TTML?

Jak <tt> z przestrzeniami nazw i <body> w środku, a w nim <p begin=… end=…> dla każdego bloku – bez <div> i bez numerów bloków; nad dokumentem stoi deklaracja XML.

Czy czasy z SSA są dokładne w pliku TTML?

Tak, co do milisekundy: 0:00:04.13 daje begin="00:00:04.130".

Czy pozycjonowanie z SSA przetrwa w TTML?

Nie – \pos i \an nie trafiają do atrybutów <p>, więc blok wychodzi bez tts:origin i bez wyrównania.

Jak w TTML wygląda blok SSA z dwiema liniami?

Jako dwie linie rozdzielone <br/> w jednym elemencie <p>.

Czy kolejność bloków SSA jest zachowana w TTML?

Tak, po posortowaniu rosnąco po czasie początku; struktura dokumentu idzie zgodnie z osią czasu.

Czy wynik TTML zachowuje kodowanie pliku SSA?

Nie – dokument deklaruje UTF-8 i nie zawiera BOM, niezależnie od kodowania źródła.

Powiązane narzędzia