Przejdź do treści
SubtitleMatrix

Konwerter napisów VTT na TTML

Albo wklej tekst napisów

Co zmienia ta konwersja

1 rzecz zostaje pominięta albo wymaga decyzji

  • 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 konwertuje VTT 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.

Te dwa formaty nie przechowują tego samego: treść specyficzna dla VTT nie ma gdzie trafić w TTML. Lista powyżej bierze się z tego, co oba formaty potrafią wyrazić, a nie z Twojego pliku. Ustawienia pozycji z VTT, takie jak align:start i position:10%, również nie trafiają do wyjścia — lista strat pokazuje je jako treść specyficzną dla formatu, ale w praktyce oznacza to utratę położenia bloku. TTML potrafi pozycjonować, jednak ten konwerter nie mapuje na nie ustawień VTT.

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

Przykłady

Typowy plik VTT przekonwertowany na TTML

Wejście

WEBVTT

intro
00:00:01.000 --> 00:00:04.000
Hello there.

00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.

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:04.500" end="00:00:08.000">Second line with <span tts:fontStyle="italic">italics</span>.</p>  </body>
</tt>

W tym wyjściu giną: warstwy dokumentu VTT i pozycjonowanie z ustawień bloku. Tekst i czasy zostają.

Ta sama konwersja na zniszczonym wejściu

Wejście

a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.

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:02.000">No header, two lines before the timecode.</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

Co dzieje się z blokami NOTE, STYLE i REGION z VTT w TTML?

Są odrzucane. WebVTT może nieść nagłówek, komentarze, blok stylów, definicje regionów i ustawienia bloku, a TTML z tej konwersji nie przenosi ich — dostaje bloki, nie dokument. Same bloki, tekst i czasy przechodzą w całości. VTT trzyma STYLE jako CSS, TTML ma własny model stylów, ale ten konwerter go nie wypełnia.

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

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

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

Tak, co do milisekundy. Oba formaty zapisują moment tak samo, 00:00:04.126, więc znaczniki czasu wychodzą znak w znak takie, jakie weszły. VTT ma dodatkowo ustawienia bloku po znaczniku czasu, TTML ich nie dostaje.

Co dzieje się z pozycjonowaniem VTT w TTML?

Ustawienia takie jak align:start i position:10% nie trafiają do wyjścia TTML z tej strony, więc pozycja bloku przepada — choć lista strat wymienia tylko treść specyficzną dla formatu. VTT trzyma je w linii czasu; TTML potrafi pozycjonować, ale ten konwerter nie mapuje ustawień VTT na jego atrybuty. Pozycję trzeba ustawić ręcznie.

Jak blok VTT z dwiema liniami wychodzi w TTML?

Jako dwie linie z <br/> między nimi — tak TTML zapisuje twardy podział wiersza. Parowanie zostaje: dwie linie VTT nadal należą do jednego bloku. W VTT były dwiema liniami w tekście bloku, w TTML są dwiema liniami w jednym <p>.

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

Tak, po drodze są sortowane po czasie rozpoczęcia. Jeśli plik VTT miał bloki poza kolejnością, TTML je uporządkuje; to zmiana struktury, nie treści. VTT czyta się po czasie, więc uporządkowanie jest świadome.

Czy wyjściowy TTML zachowuje kodowanie pliku VTT?

Nie — wyjście jest w UTF-8, z uniksowymi końcami wierszy i bez BOM. Plik w UTF-16 albo windowsowym kodowaniu jednobajtowym jest dekodowany na wejściu, o czym mówi panel wyniku. VTT bywa w UTF-8 z BOM-em; TTML z tej strony zawsze wychodzi bez niego.

Powiązane narzędzia