Przejdź do treści
SubtitleMatrix

Konwerter napisów VTT na JSON

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 WebVTT do JSON. Wrzuć plik albo wklej tekst, a dostaniesz zwykły dokument JSON opisujący te same napisy. Konwersja działa w całości w Twojej przeglądarce: nic nie jest wysyłane, konto nie jest potrzebne, a po wczytaniu strony działa ona dalej z wyłączoną siecią.

JSON to własny, udokumentowany schemat napisów tego serwisu, ukształtowany po modelu bloku, w którym pracuje cały konwerter: numer wersji, a potem wpis na blok z identyfikatorem, czasem początku i końca w całych milisekundach oraz liniami jako tablicami tekstu z przedziałami tagów. Czasy zostają liczbami całkowitymi, a linie bloku zostają osobne zamiast być sklejane, więc wyjście czyta Twój skrypt, a nie odtwarzacz wideo.

Prawie wszystko, co trzyma WebVTT, da się wyrazić w tym kształcie, dlatego raport powyżej jest krótki. Klucza w JSON-ie nie mają warstwy poza blokami: nagłówek WEBVTT z komentarzem, bloki NOTE, STYLE i REGION oraz ustawienia po znaczniku czasu, takie jak align:start. One są odrzucane, a nie wciskane w zapasowe pole. Identyfikatory bloków to wyjątek w drugą stronę: w przeciwieństwie do SRT ten schemat ma pole id, więc intro zostaje intro.

Zniszczona wejściówka nie jest problemem: brak nagłówka, windowsowe końce wierszy, zbłąkana linia przed znacznikiem czasu albo BOM są czytane bez skargi.

Przykłady

Typowy plik VTT przekonwertowany na JSON

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

{
  "version": 1,
  "cues": [
    {
      "id": "intro",
      "start": 1000,
      "end": 4000,
      "lines": [
        "Hello there."
      ]
    },
    {
      "start": 4500,
      "end": 8000,
      "lines": [
        {
          "text": "Second line with italics.",
          "tags": [
            {
              "kind": "italic",
              "start": 17,
              "end": 24
            }
          ]
        }
      ]
    }
  ]
}

W tym wyjściu giną: warstwy dokumentu VTT poza blokami. Identyfikatory 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

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 2000,
      "lines": [
        "No header, two lines before the timecode."
      ]
    }
  ]
}

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 JSON z konwersji VTT?

Numer wersji i tablica cues. Każdy blok ma opcjonalne id, start i end w milisekundach oraz tablicę lines, gdzie linia to napis albo obiekt z tekstem i przedziałami tagów. Nie ma znaczników czasu do parsowania. VTT zapisuje ten sam blok z kropką w czasie i ustawieniami po nim; JSON trzyma tylko model bloku.

Dlaczego lista strat przy konwersji VTT na JSON jest taka krótka?

Bo schemat powstał po to, by pomieścić wszystko, co model bloków konwertera potrafi przenieść — a to pokrywa prawie cały WebVTT. Zostaje materiał, który VTT trzyma poza blokami: nagłówek, komentarz, bloki NOTE, STYLE i REGION oraz ustawienia bloku. SRT w tej samej roli gubi mniej, bo sam ma mniej warstw.

Czy identyfikatory bloków z VTT zostają w JSON-ie?

Tak. WebVTT pozwala na dowolny identyfikator, taki jak intro albo sign-1, a ten schemat ma na niego pole id, więc trafia do wyjścia bez zmian. Konwersja do SRT przenumerowałaby bloki, bo licznik SRT musi być liczbowy, a VTT takiego wymogu nie ma.

Czy czasy VTT zmieniają się przy konwersji na JSON?

Nie. Obie strony liczą w całych milisekundach, więc 00:00:01.234 staje się 1234 i wraca bez zaokrągleń i przesunięć. VTT dopuszcza też znacznik czasu bez godzin; parser i tak sprowadza go do milisekund, więc JSON zawsze dostaje pełną liczbę.

Czy transkrypcję WebVTT mogę bezpiecznie przepuścić przez konwersję na JSON?

Tak. Parsowanie i zapis odbywają się w przeglądarce, więc plik nigdy nie trafia na serwer — a przy tej parze ma to większe znaczenie, bo JSON konsumują skrypty i pipeline\u2019y, często te, których nie wolno wypuścić z budynku. VTT zostaje w pliku, JSON w pamięci karty.

Powiązane narzędzia