Przejdź do treści
SubtitleMatrix

Konwerter napisów SRT na TTML

Albo wklej tekst napisów

Co zmienia ta konwersja

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

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 konwertuje SRT do TTML. Wrzuć plik albo wklej tekst, a dostaniesz wersję TTML. Konwersja działa w całości w Twojej przeglądarce, więc nic nie jest wysyłane i konto nie jest potrzebne.

W tym kierunku nic nie ginie. Każda cecha, którą SRT potrafi wyrazić, ma odpowiednik w TTML, więc wyjście to te same napisy w innym opakowaniu — oś czasu, podziały wierszy i tekst przechodzą. Dotyczy to każdego pliku SRT, także takiego, który używa wszystkich możliwości formatu. TTML zapisuje moment jako 00:00:04.126, a SRT jako 00:00:04,126; to ten sam czas co do milisekundy, różni się tylko znak.

Jeden plik wystarczy, cały sezon też: kolejka przetwarza je po kolei, a wyniki wychodzą razem jako jedno ZIP.

Przykłady

Typowy plik SRT przekonwertowany na TTML

Wejście

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

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:03.500">Hello there.</p>
<p begin="00:00:03.500" end="00:00:06.000"><span tts:fontStyle="italic">Whispering</span> now.<br/>And a second line.</p>
<p begin="00:00:06.000" end="00:00:09.250"><span tts:fontWeight="bold">Bold</span> statement.</p>  </body>
</tt>

Nic tu nie ginie: porównaj obie strony linia po linii.

Ta sama konwersja na zniszczonym wejściu

Wejście

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

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:03.500"><span tts:fontWeight="bold">Bold</span> and <span tts:fontStyle="italic">italic</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000"></p>
<p begin="00:00:08.000" end="00:00:09.000">Last one.</p>  </body>
</tt>

To typowe uszkodzenia prawdziwych plików — 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

Jak wygląda wyjście, gdy SRT staje się TTML?

Jak TTML: bez numerów bloków, każdy blok to element <p> z atrybutami begin i end, zagnieżdżony w <body> i <div>, z deklaracją XML nad całością. Każdy blok SRT staje się jednym blokiem TTML w tej samej kolejności. SRT zapisuje czas jako 00:00:04,126, TTML jako 00:00:04.126.

Czy czasy SRT są dokładne w pliku TTML?

Tak, co do milisekundy — to najdrobniejsza jednostka obu formatów. SRT zapisuje moment jako 00:00:04,126, a TTML ten sam moment jako 00:00:04.126; nic nie jest zaokrąglane ani przesuwane. Blok widoczny przez 2,9 sekundy nadal tyle trwa, a różnica jest wyłącznie w znaku między sekundami i milisekundami.

Jak blok SRT z dwiema liniami wychodzi w TTML?

Jako dwie linie z <br/> między nimi — tak TTML zapisuje twardy podział wiersza. Parowanie zostaje: dwie linie SRT nadal należą do jednego bloku. SRT trzyma ten sam podział jako zwykły znak nowej linii w tekście bloku.

Czy bloki SRT zachowują kolejność w pliku TTML?

Tak, po drodze są sortowane po czasie rozpoczęcia. Jeśli plik SRT miał bloki poza kolejnością, TTML je uporządkuje; to zmiana struktury, nie treści. SRT dopuszcza taką kolejność w pliku, podczas gdy TTML zwykle zakłada uporządkowane elementy.

Czy mogę przekonwertować TTML z powrotem na SRT?

Tak, i to jest kierunek stratny: stylowanie, pozycjonowanie i treść specyficzna dla formatu nie mają gdzie trafić w SRT. W tę stronę nic nie ginie, więc koszt pojawia się dopiero przy powrocie. TTML ma pełny model stylów, SRT tylko tekst z dwoma czasami.

Czy wyjściowy TTML zachowuje kodowanie pliku SRT?

Nie — wyjście jest w UTF-8, z uniksowymi końcami wierszy i bez BOM, niezależnie od tego, czego użył plik SRT. Plik w UTF-16 albo windowsowym kodowaniu jednobajtowym jest dekodowany na wejściu, o czym mówi panel wyniku. SRT bywa w różnych kodowaniach; TTML z tej strony zawsze wychodzi taki sam.

Powiązane narzędzia