Przejdź do treści
SubtitleMatrix

Konwerter napisów TTML na TXT

Albo wklej tekst napisów

Co zmienia ta konwersja

5 rzeczy zostaje pominiętych albo wymaga decyzji

  • Czasy

    cała oś czasu (format docelowy w ogóle nie zapisuje czasów)

  • Formatowanie

    całe formatowanie (pogrubienie, kursywa, kolor, obrys, cień)

  • Pozycjonowanie

    pozycjonowanie na ekranie (każdy blok wraca do domyślnego położenia)

  • Podziały wierszy

    podziały wierszy (bloki wielowierszowe zostaną zlepione w jeden wiersz)

  • 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 TTML na TXT. Wrzuć plik albo wklej tekst, a dostaniesz z powrotem wersję TXT. Konwersja odbywa się w całości w Twojej przeglądarce — nic nie jest wysyłane i nie potrzebujesz konta.

Te dwa formaty nie przechowują tego samego, a różnica nie jest kosmetyczna: czasy, styl, pozycjonowanie, podziały wierszy i konstrukcje charakterystyczne dla formatu nie mają gdzie się podziać w TXT. Powyższa lista wynika z tego, co potrafi wyrazić każdy z formatów, a nie z zawartości Twojego pliku — więc odpowiedź jest taka sama, zanim cokolwiek wczytasz.

Jeden plik to żaden problem, podobnie cały sezon: kolejka przetwarza je po kolei, a wyniki pobierasz razem w jednym archiwum ZIP.

Przykłady

Typowy plik TTML po konwersji do TXT

Wejście

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

Wynik

Hello there.
How are you?
Fine, thanks.

W tym wyniku przepada: czasy, styl, pozycjonowanie, podziały wierszy i konstrukcje charakterystyczne dla formatu. Reszta zgadza się linia w linię.

Ta sama konwersja na trudniejszym pliku

Wejście

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

Wynik

Loaded from an offset and a duration.
A coarser clock spelling.
Frames, at 25fps.
Half-open and Tom &amp; Jerry.

To typowe uszkodzenia prawdziwych plików — mieszane końce wierszy, zbłąkane spacje, puste pola. Porównaj z uporządkowanym przykładem powyżej, żeby zobaczyć, co parser wybacza.

Częste pytania

Gdzie podziały się znaczniki czasu z TTML?

TXT ich nie ma i nie może mieć: eksport tekstowy to słowa, nie momenty. Kolejność linii z TTML zostaje zachowana, więc czterdziesta linia pliku jest czterdziestą linią wyniku, ale nic nie mówi, kiedy cokolwiek pojawia się na ekranie.

Co dzieje się z pogrubieniem, kursywą i kolorem przy konwersji TTML na TXT?

TXT nie przechowuje stylu, więc wszystko znika: `<span tts:color="…">` z akapitu i styl nazwany z `<styling>`. Każda linia jest czystym tekstem, a same słowa pozostają nietknięte.

Co dzieje się z pozycją napisu przy przejściu z TTML do TXT?

TXT nie umie wskazać miejsca rysowania, więc `region` i `style` z `<p>` przepadają, a napis wraca do domyślnego położenia wybieranego przez odtwarzacz — najczęściej na dół kadru, do środka.

Co dzieje się z dwuwierszowym blokiem TTML w TXT?

Obie linie są zapisane jedna pod drugą, ale plik przestaje mówić, że należą do siebie: TXT nie grupuje linii w bloki, więc ponowny odczyt dałby dwa napisy tam, gdzie TTML miał jeden. Ma to znaczenie, jeśli wynik ma później czytać narzędzie do tłumaczenia lub retimingu.

Co dzieje się z prologiem TTML i tabelami `<styling>` oraz `<layout>` w TXT?

Przepadają. TXT składa się z linii tekstu, a deklaracja XML, nazwane style, regiony i metadane nie mają w nim żadnego odpowiednika. Nawet nacisk zapisany w akapicie nie zostawia śladu — TXT nie zna znaczników formatowania.

Jak wygląda plik TXT otrzymany z TTML?

Bez numerów i bez czasów: jedna linia tekstu na każdą linię napisów. Każdy blok TTML daje tyle linii TXT, ile miał wierszy, w tej samej kolejności i z tym samym tekstem.

Czy TXT zachowuje kolejność bloków TTML?

Tak, po sortowaniu po czasie rozpoczęcia. Linie idą od najwcześniejszego bloku, więc plik TTML z zaburzoną kolejnością zostanie uporządkowany; to zmiana struktury, nie treści.

Czy z TXT da się wrócić do TTML?

Tak, ale ten kierunek ma własną listę strat: konwersja TXT na TTML traci czasy, bo plik tekstowy ich nie zawiera i parser musi je wytworzyć. Lista różni się od powyższej, bo formaty przechowują co innego.

Czy TXT zachowuje kodowanie pliku TTML?

Nie, wynik jest w UTF-8 z LF i bez BOM. Kodowanie źródła jest dekodowane przy wczytaniu i odnotowywane w panelu wyniku; plik TXT ma już zawsze stałe kodowanie.

Powiązane narzędzia