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 & Jerry.</p>
</div>
</body>
</tt>
Wynik
Loaded from an offset and a duration.
A coarser clock spelling.
Frames, at 25fps.
Half-open and Tom & 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.