Konwerter napisów SSA na TTML
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.