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.