Siirry pääsisältöön
SubtitleMatrix

Muunna JSON muotoon TTML

Tai liitä tekstityksen teksti

Mitä tämä muunnos muuttaa

1 asia pudotetaan tai vaatii päätöksen

  • Karaoke

    karaokeajoitus (tavukohtainen korostus)

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.

Kun JSON muunnetaan TTML:ksi, jokainen JSON-tiedoston alaotsikko kirjoitetaan uudelleen muotoon, jossa yksi alaotsikko on p-elementti, jonka begin- ja end-määritteet kantavat ajan. Aikakoodi vaihtaa muotoa: JSON kirjoittaa sen muodossa {"start": 1000, "end": 3500}, TTML puolestaan muodossa begin="00:00:01.000" end="00:00:03.500". Sanoja ei muuteta, vaan JSON-tiedoston teksti siirretään TTML:hen sellaisenaan.

Tässä suunnassa JSON-tiedostosta putoaa karaoken ajoitus, kun se muunnetaan TTML:ksi. Kun JSON muunnetaan TTML:ksi, tavukohtainen korostus ei siirry, koska TTML ei tunne karaokea. Luettelo on näkyvissä ennen kuin valitset JSON-tiedoston, ja se tarkentuu TTML-muunnoksen lukemisen jälkeen.

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

Esimerkit

Tavallinen JSON-tiedosto TTML-muunnoksessa

Syöte

{
  "version": 1,
  "title": "Fixture: typical",
  "fps": 25,
  "styles": {
    "Default": {
      "name": "Default",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#FFFFFF",
      "bold": false,
      "italic": false
    }
  },
  "generator": "subtitlematrix fixtures",
  "cues": [
    {
      "id": "1",
      "start": 0,
      "end": 2000,
      "lines": [
        "Hello world.",
        "Second line."
      ],
      "style": "Default",
      "position": {
        "x": 100,
        "y": 200,
        "align": "center"
      }
    },
    {
      "id": "2",
      "start": 2500,
      "end": 4000,
      "lines": [
        "Plain line.",
        {
          "text": "Styled line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "start": 4500,
      "end": 6000,
      "lines": [
        "Roger: I am here."
      ],
      "speaker": "Roger"
    }
  ]
}

Tuotos

<?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.<br/>Second line.</p>
<p begin="00:00:02.500" end="00:00:04.000">Plain line.<br/><span tts:fontStyle="italic">Styled</span> line.</p>
<p begin="00:00:04.500" end="00:00:06.000">Roger: I am here.</p>  </body>
</tt>

Tästä JSON → TTML -tulosteesta puuttuvat karaoke. Kaikki muu vastaa rivi riviltä.

Hankala JSON-tiedosto ja TTML-muunnos

Syöte

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

Tuotos

<?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:01.000">First.</p>
<p begin="00:00:01.000" end="00:00:02.000">Second.</p>
<p begin="00:00:02.000" end="00:00:03.000">Third.</p>  </body>
</tt>

Näin rikkinäinen JSON-tiedosto saapuu TTML-muunnokseen: BOM-merkintä, Windows-rivinvaihdot ja lukukelvottomat aikakoodit eivät kaada jäsennintä. Vertaa sitä yllä olevaan siistiin esimerkkiin ja katso, mitä TTML saa mukaansa.

Usein kysytyt kysymykset

Mitä aikaleimoille tapahtuu, kun JSON muunnetaan TTML:ksi?

JSON kirjoittaa ajan muodossa {"start": 1000, "end": 3500}: kokonaislukuina millisekunteina. TTML käyttää muotoa begin="00:00:01.000" end="00:00:03.500", eli XML-määritteinä millisekunnin tarkkuudella. Tarkkuus on molemmilla puolilla sama, joten aika itse ei muutu – vain sen kirjoitusasu vaihtuu.

Mitkä ominaisuudet eivät mahdu TTML:hen, kun lähde on JSON?

Kun JSON muunnetaan TTML:ksi, menetettävää on karaoken ajoitus. Kun JSON muunnetaan TTML:ksi, tavukohtainen korostus ei siirry, koska TTML ei tunne karaokea. Alaotsikoiden teksti ja keskinäinen järjestys säilyvät.

Säilyykö JSON-tiedoston tekstin sisäinen muotoilu TTML:ssä?

JSON merkitsee rivinsisäisen muotoilun muodossa merkkirajoina tallennetut tagit, ja TTML kirjoittaa sen muodossa <span>-elementit ja <br/>.

Pysyvätkö JSON-tiedoston rivit erillään TTML:ssä?

Monirivisen alaotsikon rivit erotetaan JSONissa lines-taulukon erillisinä alkioina, ja TTML merkitsee ne <br/>-elementillä.

Mitä JSON-tiedoston karaoken ajoitukselle tapahtuu TTML:ssä?

JSON tallentaa karaoken tagirakenteeseen: jokainen tavu on oma merkkiraja, jolla on kind: karaoke ja kestonsa. TTML ei tunne karaokea, joten tavut säilyvät tekstinä ja ne merkitään <c>-tageilla, mutta niiden kestot katoavat ja koko alaotsikko näytetään kerralla.

Voiko TTML-tiedoston muuntaa takaisin JSONiksi?

Kyllä, mutta paluusuunnassa menetettävää on: alaotsikoiden ulkopuolinen sisältö. Kun TTML muunnetaan JSONiksi, kohteen ulkopuolelle jäävät prologi, head-osion tyylitaulu ja alueet sekä div-rakenne. Edestakainen matka JSONista TTML:hen ja takaisin ei palauta sitä, mitä ensimmäinen muunnos pudotti.

Voinko muuntaa koko kauden JSONista TTML:hen yhdellä ajolla?

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

Aiheeseen liittyvät työkalut