Przejdź do treści
SubtitleMatrix

Konwerter napisów TXT na TTML

Konwersja formatówTranskrypcja w czystym tekście
Albo wklej tekst napisów

Opcje

Używane, gdy źródło nie ma czasów końca (zwykły tekst, LRC). Oś czasu w wyniku jest tu generowana, a nie konwertowana, więc dostajesz dokładnie tę liczbę.

Co zmienia ta konwersja

1 rzecz zostaje pominięta albo wymaga decyzji

  • Czasy

    sama oś czasu — źródło nie zapisuje czasów, więc oś wyniku jest generowana, a nie konwertowana

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 TXT na TTML. Upuść plik — albo wklej tekst — a dostaniesz wersję TTML. Konwersja odbywa się 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 i różnica nie jest kosmetyczna: TXT nie ma ani jednego znacznika czasu. Oś czasu w wyniku nie jest więc przepisana z pliku, tylko zbudowana tutaj: pierwszy wiersz zaczyna się od zera, każdy następny tam, gdzie skończył się poprzedni. TTML zapisuje chwile w atrybutach begin i end z dokładnością do milisekundy, więc wygenerowana oś nie jest zaokrąglana.

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

Przykłady

Typowy plik TXT zamieniony na TTML

Wejście

The quick brown fox jumps over the lazy dog.

Second paragraph, first line.
Second paragraph, second line.

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:00.000" end="00:00:02.000">The quick brown fox jumps over the lazy dog.</p>
<p begin="00:00:02.000" end="00:00:04.000">Second paragraph, first line.</p>
<p begin="00:00:04.000" end="00:00:06.000">Second paragraph, second line.</p>  </body>
</tt>

Oś czasu w wyniku nie pochodzi z pliku — została zbudowana na tej stronie. Cała reszta zgadza się wiersz po wierszu.

Ta sama konwersja na niewygodnym wejściu

Wejście


Hello world.

Second block.

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:00.000" end="00:00:02.000">Hello world.</p>
<p begin="00:00:02.000" end="00:00:04.000">Second block.</p>  </body>
</tt>

Takie uszkodzenia mają prawdziwe pliki: mieszane końce wierszy, luźne spacje, puste pola. Porównaj to z czystym przykładem powyżej, żeby zobaczyć, co parser wybacza.

Częste pytania

Skąd biorą się czasy w konwersji TXT na TTML?

Są generowane, bo wejście ich nie ma. Pierwszy wiersz zaczyna się od zera, każdy następny tam, gdzie skończył się poprzedni, a pole czasu trwania decyduje o długości każdego bloku. TTML zapisuje te chwile w atrybutach begin i end co do milisekundy, więc nic nie jest zaokrąglane.

Jak wygląda wynik, gdy TXT staje się TTML?

Jak TTML: bez numerów bloków, każdy napis to element p z atrybutami begin i end, zagnieżdżony w body, a nad całym dokumentem stoi deklaracja XML. Każdy blok TXT staje się jednym blokiem TTML, w tej samej kolejności i z tym samym tekstem.

Czy w TXT na TTML bloki zachowują kolejność?

Tak, a po drodze są sortowane po czasie startu — najwcześniejsze pierwsze, tak jak oczekuje każdy format na tej stronie i jak czytają je odtwarzacze. Jeśli Twój plik TXT miał bloki w innej kolejności, wynik TTML je uporządkuje; to zmiana struktury pliku, nie treści, i jest zamierzona.

Czy mogę przekonwertować TTML z powrotem na TXT?

Tak i ten kierunek ma własną listę: konwersja TTML na TXT gubi całą oś czasu, stylizację, pozycjonowanie oraz informację o przynależności wierszy do jednego bloku, a nagłówek dokumentu nie ma gdzie trafić. Lista różni się od powyższej, bo oba formaty przechowują co innego.

Czy wynik TTML zachowa kodowanie pliku TXT?

Nie — wynik jest w UTF-8, z uniksowymi końcami wierszy i bez BOM, niezależnie od tego, czego używał plik TXT. Plik w UTF-16 albo w windowsowym kodowaniu jednobajtowym jest dekodowany przy wejściu (panel wyniku to sygnalizuje), a na wyjściu zawsze dostajesz ten sam TTML w UTF-8.

Powiązane narzędzia