Przejdź do treści
SubtitleMatrix

Konwerter napisów SBV na JSON

Albo wklej tekst napisów

Co zmienia ta konwersja

W tym kierunku nic nie ginie — każda cecha formatu źródłowego ma gdzie trafić w formacie docelowym.

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 SBV na JSON. Przeciągnij plik — albo wklej tekst — i otrzymasz wersję JSON. Konwersja odbywa się w całości w przeglądarce, więc nic nie jest wysyłane i nie potrzebujesz konta.

W tym kierunku nic nie ginie. Każda możliwość SBV ma odpowiednik w JSON, więc wynik to te same napisy w innym opakowaniu — oś czasu, podziały wierszy i tekst zostają. Dotyczy to każdego pliku SBV, także takiego, który wykorzystuje wszystkie możliwości formatu.

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

Przykłady

Typowy plik SBV po konwersji na JSON

Wejście

0:00:01.000,0:00:03.500
The quick brown fox.

0:00:04.000,0:00:06.250
Jumps over the lazy dog.

0:00:07.000,0:00:09.000
Two lines here.
And a second one.

Wynik

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 3500,
      "lines": [
        "The quick brown fox."
      ]
    },
    {
      "start": 4000,
      "end": 6250,
      "lines": [
        "Jumps over the lazy dog."
      ]
    },
    {
      "start": 7000,
      "end": 9000,
      "lines": [
        "Two lines here.",
        "And a second one."
      ]
    }
  ]
}

Nic tu nie ginie: porównaj obie strony wiersz po wierszu.

Ta sama konwersja na niechlujnym wejściu

Wejście

0:00:02.000,0:00:04.000
Carriage-return line endings.

	0:00:06.000,0:00:08.000
Indented timecode, no final newline.

Wynik

{
  "version": 1,
  "cues": [
    {
      "start": 2000,
      "end": 4000,
      "lines": [
        "Carriage-return line endings."
      ]
    },
    {
      "start": 6000,
      "end": 8000,
      "lines": [
        "Indented timecode, no final newline."
      ]
    }
  ]
}

Takie uszkodzenia mają prawdziwe pliki — mieszane końce wierszy, zbłąkane odstępy, puste pola. Porównaj to z czystym przykładem wyżej, żeby zobaczyć, co parser wybacza.

Częste pytania

Jak wygląda wynik, gdy SBV staje się JSON?

Jak JSON: obiekt z kluczem version i tablicą cues, w której każdy blok ma start, end i lines. Nie ma klucza title, obiektu styles ani pola id przy blokach — ten format zapisuje tylko to, co SBV naprawdę przechowuje. Każdy blok SBV staje się jednym blokiem JSON, w tej samej kolejności i z tym samym tekstem.

Czy czasy z SBV są dokładne w pliku JSON?

Tak, co do milisekundy — a to najdrobniejsza jednostka w obu formatach. SBV zapisuje moment jako 0:00:04.126, a JSON zapisuje ten sam moment jako 4126; nic nie jest zaokrąglane ani przesuwane, a blok widoczny 2,9 sekundy nadal tyle trwa.

Jak blok SBV z dwóch wierszy wygląda w JSON?

Jako dwa wpisy w tablicy lines tego bloku. Para zostaje razem — oba wiersze SBV nadal należą do jednego bloku w wyniku JSON, a odtwarzacz pokazuje je jednocześnie.

Czy bloki SBV zachowują kolejność w wyniku JSON?

Tak, po drodze są sortowane według czasu rozpoczęcia — najwcześniejszy pierwszy, tak jak oczekuje parser JSON i jak czytają je odtwarzacze. Jeśli plik SBV miał bloki poza kolejnością, wynik JSON przywraca porządek; to zmiana struktury pliku, nie treści, i jest zamierzona.

Czy mogę przekonwertować JSON z powrotem na SBV?

Tak, ale to kierunek stratny: styl, pozycjonowanie i karaoke nie mają gdzie trafić w SBV. W tę stronę nic nie ginie, więc ten koszt pojawia się tylko przy powrocie.

Czy wynik JSON zachowuje kodowanie pliku SBV?

Nie — wynik jest w UTF-8, z uniksowymi końcami wierszy i bez BOM, niezależnie od tego, czego użył plik SBV. Plik w UTF-16 albo w jednobajtowym kodowaniu Windows jest dekodowany przy wczytywaniu (panel wyniku to sygnalizuje); na wyjściu zawsze powstaje JSON w UTF-8.

Powiązane narzędzia