Siirry pääsisältöön
SubtitleMatrix

Muunna JSON muotoon ASS

Tai liitä tekstityksen teksti

Mitä tämä muunnos muuttaa

1 asia pudotetaan tai vaatii päätöksen

  • Tarkkuus

    ajoituksen tarkkuus — tuotoksen kello on karkeampi, joten jokainen aikaleima pyöristetään lähimpään 10 ms:ään

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 ASS:ksi, jokainen JSON-tiedoston alaotsikko kirjoitetaan uudelleen muotoon, jossa yksi alaotsikko on yksi Dialogue-rivi, jossa on alku- ja loppuaika, tyyliviittaus ja teksti. Aikakoodi vaihtaa muotoa: JSON kirjoittaa sen muodossa {"start": 1000, "end": 3500}, ASS puolestaan muodossa 0:00:01.00. Sanoja ei muuteta, vaan JSON-tiedoston teksti siirretään ASS:hen sellaisenaan.

Kun JSON muunnetaan ASS:ksi, menetettävää on aikojen tarkkuus. Kun JSON muunnetaan ASS:ksi, jokainen aikaleima pyöristetään lähimpään 10 ms:iin. Raportti näkyy JSON → ASS -ruudun yläpuolella ennen muunnosta, ja jokainen kohta lasketaan tiedostokohtaisesti.

Koko JSON-kausi mahtuu samaan ajoon: tiedostot käsitellään yksi kerrallaan, ajon voi keskeyttää keskeltä ja kaikki ASS-tulokset tulevat yhtenä ZIP-tiedostona. Muunnos tapahtuu selaimessa, joten JSON-tiedostosi eivät käy palvelimella ennen ASS-versiota.

Esimerkit

Tyypillinen JSON-tiedosto muunnettuna ASS:ksi

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

[Script Info]
Title: Fixture: typical
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,,,,0,0,,,,,,,,,,,,,,

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}Hello world.\NSecond line.
Dialogue: 0,0:00:02.50,0:00:04.00,Default,,0,0,0,,Plain line.\N{\i1}Styled{\i0} line.
Dialogue: 0,0:00:04.50,0:00:06.00,Default,,0,0,0,,Roger: I am here.

Tulosteessa JSONista ASS:hen menetetään aikojen tarkkuus; vertaa kahta puolta rivi riviltä ja katso, mikä säilyi.

Sama JSON → ASS -muunnos hankalalla aineistolla

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

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,First.
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,Second.
Dialogue: 0,0:00:02.00,0:00:03.00,Default,,0,0,0,,Third.

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

Usein kysytyt kysymykset

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

JSON kirjoittaa ajan muodossa {"start": 1000, "end": 3500}: kokonaislukuina millisekunteina. ASS käyttää muotoa 0:00:01.00, eli tunnit, minuutit, sekunnit ja sadasosat. Koska ASS tuntee ajan vain 10 millisekunnin tarkkuudella, jokainen aikaleima pyöristetään lähimpään sadasosaan ja voi siirtyä enintään 5 ms.

Mitä JSONista menetetään, kun siitä tehdään ASS?

Kun JSON muunnetaan ASS:ksi, menetettävää on aikojen tarkkuus. Kun JSON muunnetaan ASS:ksi, jokainen aikaleima pyöristetään lähimpään 10 ms:iin. Alaotsikoiden teksti ja keskinäinen järjestys säilyvät.

Miten rivinsisäiset tagit käyttäytyvät, kun JSON muunnetaan ASS:ksi?

JSON merkitsee rivinsisäisen muotoilun muodossa merkkirajoina tallennetut tagit, ja ASS kirjoittaa sen muodossa \i1, \b1, \c&H…& ja \anN.

Miten JSON-tiedoston moniriviset alaotsikot käyttäytyvät ASS:ssa?

Monirivisen alaotsikon rivit erotetaan JSONissa lines-taulukon erillisinä alkioina, ja ASS merkitsee ne \N-merkinnällä.

Millaisen tyylitaulun ASS saa, kun lähde on JSON?

ASS tarvitsee [V4+ Styles] -tyylitaulun ja Dialogue-rivit, joten JSON-tiedostosta muunnettaessa syntyy oletustyyli Default ja jokainen alaotsikko kirjoitetaan omaksi Dialogue-rivikseen. ASS käyttää rivinvaihtoon \N-merkintää ja rivinsisäiseen muotoiluun \i1- ja \b1-koodeja.

Voiko ASS-tiedoston muuntaa takaisin JSONiksi?

Kyllä, mutta paluusuunnassa menetettävää on: alaotsikoiden ulkopuolinen sisältö. Kun ASS muunnetaan JSONiksi, kohteen ulkopuolelle jäävät [Script Info] -osio, [V4+ Styles] -tyylitaulu sekä [Fonts]- ja [Graphics]-osiot ja Comment:-rivit. Edestakainen matka JSONista ASS:hen ja takaisin ei palauta sitä, mitä ensimmäinen muunnos pudotti.

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

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

Aiheeseen liittyvät työkalut