Siirry pääsisältöön
SubtitleMatrix

Muunna SRT muotoon JSON

MuunnoksetSubRip (SRT)
Tai liitä tekstityksen teksti

Mitä tämä muunnos muuttaa

Tässä suunnassa ei menetetä mitään — jokaisella lähdemuodon ominaisuudella on paikka kohdemuodossa.

Tämä luettelo tulee näiden kahden muodon kyvykkyysmatriisista, ei lataamastasi tiedostosta. Tietty tiedosto voi menettää enemmän, jos se käyttää ominaisuuksia, jotka muoto sallii mutta matriisi ei mallinna.

Sivulla SRT muuttuu JSONiksi. Kun SRT muunnetaan JSONiksi, lähtöformaatti tallentaa yhden alaotsikon muotoon numeroitu lohko, jonka aikakoodirivi erottaa alku- ja loppuajan ja jonka perässä on teksti, ja aika kirjoitetaan muodossa 00:00:01,000. Kohdeformaatti JSON tallentaa saman asian muotoon cues-taulukon alkio, jossa on start-, end- ja lines-kentät, ja aika kirjoitetaan muodossa {"start": 1000, "end": 3500}, kun lähde on SRT. Molemmilla puolilla ovat samat sanat, mutta SRT ja JSON merkitsevät ne eri tavalla.

Tässä suunnassa SRT ja JSON ovat menetyksettömiä: jokainen SRT-tiedoston tallentama asia mahtuu JSONiin sellaisenaan, eli teksti, alku- ja loppuaika ja rivinvaihdot. Raportti SRT → JSON -muunnoksen yläpuolella vahvistaa tämän jokaiselle tiedostolle erikseen.

Yksi tiedosto tai sata: SRT-jono käsittelee ne peräkkäin, keskeytät milloin tahansa ja lataat kaikki JSON-tulokset kerralla. JSON-tiedostot syntyvät selaimessa eikä SRT-tiedoston sisältö poistu koneeltasi.

Esimerkit

Tyypillinen SRT-tiedosto muunnettuna JSONiksi

Syöte

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

Tuotos

{
  "version": 1,
  "cues": [
    {
      "id": "1",
      "start": 1000,
      "end": 3500,
      "lines": [
        "Hello there."
      ]
    },
    {
      "id": "2",
      "start": 3500,
      "end": 6000,
      "lines": [
        {
          "text": "Whispering now.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 10
            }
          ]
        },
        "And a second line."
      ]
    },
    {
      "id": "3",
      "start": 6000,
      "end": 9250,
      "lines": [
        {
          "text": "Bold statement.",
          "tags": [
            {
              "kind": "bold",
              "start": 0,
              "end": 4
            }
          ]
        }
      ]
    }
  ]
}

Tässä SRT → JSON -muunnoksessa ei menetetä mitään: vertaa kahta puolta rivi riviltä.

Sama SRT → JSON -muunnos rikkinäisellä lähdetiedostolla

Syöte

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

Tuotos

{
  "version": 1,
  "cues": [
    {
      "id": "1",
      "start": 1000,
      "end": 3500,
      "lines": [
        {
          "text": "Bold and italic.",
          "tags": [
            {
              "kind": "bold",
              "start": 0,
              "end": 4
            },
            {
              "kind": "italic",
              "start": 9,
              "end": 15
            }
          ]
        }
      ]
    },
    {
      "id": "2",
      "start": 3500,
      "end": 6000,
      "lines": []
    },
    {
      "id": "3",
      "start": 8000,
      "end": 9000,
      "lines": [
        "Last one."
      ]
    }
  ]
}

SRT- ja JSON-tiedostot ovat usein sekaisin: ylimääräisiä rivejä, tyhjiä kenttiä ja aikoja, joita ei voi lukea. SRT-jäsennin ei kaadu vaan korjaa minkä voi ja kertoo loput raportissa, jonka JSON saa mukanaan.

Usein kysytyt kysymykset

Miten aika siirtyy SRT:stä JSONiin?

SRT kirjoittaa ajan muodossa 00:00:01,000: tunnit, minuutit, sekunnit ja millisekunnit pilkulla erotettuina. JSON käyttää muotoa {"start": 1000, "end": 3500}, eli kokonaislukuina millisekunteina. Tarkkuus on molemmilla puolilla sama, joten aika itse ei muutu – vain sen kirjoitusasu vaihtuu.

Miksi SRT ja JSON ovat tässä suunnassa menetyksettömiä?

Tässä suunnassa ei menetetä mitään: jokainen SRT-tiedoston tallentama asia mahtuu JSONiin sellaisenaan, eli teksti, alku- ja loppuaika ja rivinvaihdot. Myöskään JSON-tiedoston luku ei kadota mitään, ellet tuo rikkinäistä tiedostoa, jonka jäsennin joutuu korjaamaan.

Säilyykö SRT-tiedoston tekstin sisäinen muotoilu JSONissa?

SRT merkitsee rivinsisäisen muotoilun muodossa <i>, <b> ja <font color>, ja JSON kirjoittaa sen muodossa merkkirajoina tallennetut tagit.

Pysyvätkö SRT-tiedoston rivit erillään JSONissa?

Monirivisen alaotsikon rivit erotetaan SRT:ssä tavallisella rivinvaihdolla, ja JSON merkitsee ne lines-taulukon erillisinä alkioina. JSON:ssa rivit ovat lines-taulukon alkioita, joten rakenne säilyy täsmälleen.

Mitä kaikkea JSON tallentaa SRT:stä, mitä SRT itse ei kerro?

JSON:ssa on dokumenttitason kentät version, title, fps ja styles sekä jokaisella alaotsikolla start-, end- ja lines-kentät. SRT tallentaa vain osan tästä, joten JSON-tiedostoon voi ilmestyä tietoja, joita lähdetiedostossa ei ollut näkyvissä.

Toimiiko paluumuunnos JSONista SRT:hen samalla tavalla?

Kyllä, mutta paluusuunnassa menetettävää on: dokumenttitason tyylit: fontit, koot, värit, ääriviivat ja varjot, sijoittelu ruudulla ja karaoken ajoitus. Kun JSON muunnetaan SRT:ksi, dokumenttitason tyylit – fontit, koot, värit, ääriviivat, varjot ja marginaalit – eivät mahdu SRT:hen. Edestakainen matka SRT:stä JSONiin ja takaisin ei palauta sitä, mitä ensimmäinen muunnos pudotti.

Toimiiko SRT → JSON -eräajo, kun tiedostoja on sata?

Kyllä. Jono käsittelee SRT-tiedostot yksi kerrallaan, ajon voi keskeyttää milloin tahansa ja tulokset tulevat yhtenä ZIP-tiedostona. Jokainen JSON-tiedosto kirjoitetaan selaimessa, joten mitään ei lähetetä palvelimelle; yksittäinen tekstitystiedosto saa olla enintään 64 Mt.

Aiheeseen liittyvät työkalut