Gå til hovedindholdet
SubtitleMatrix

JSON til ASS

Eller indsæt underteksttekst

Hvad denne konvertering ændrer

1 ting frasorteres eller kræver en beslutning

  • Præcision

    tidspræcision – resultatets ur er grovere, så hvert tidsstempel afrundes til nærmeste 10 ms

Denne liste kommer fra kapabilitetsmatricen for disse to formater, ikke fra den konkrete fil, du indlæste. En bestemt fil kan miste mere, hvis den bruger egenskaber, som formatet tillader, men matricen ikke modellerer.

Denne side konverterer en SubtitleMatrix JSON-fil til Advanced SubStation Alpha (ASS). JSON skriver start: 1000, mens ASS skriver 0:00:01.23; ASS har kun hundrededele sekunder, så hver tid rundes til nærmeste 10 ms.

Når JSON bliver ASS, følger dette ikke med: tidspræcisionen. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

En fil eller en hel sæson: køen behandler filerne i rækkefølge, du kan afbryde undervejs, og resultaterne hentes samlet som én ZIP-fil. Hele konverteringen kører i browseren – filen forlader aldrig din computer.

Eksempler

En typisk JSON-fil konverteret til ASS

Input

{
  "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"
    }
  ]
}

Resultat

[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.

Tidskoderne skrives om fra start: 1000 til 0:00:01.23; ordene og rækkefølgen er den samme. Sammenlign de to filer linje for linje.

Samme konvertering på en beskidt JSON-fil

Input

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

Resultat

[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.

Sådan ser beskadigede filer ud i virkeligheden – blandede linjeskift, løse mellemrum og tomme felter. Sammenlign med det pæne eksempel ovenfor for at se, hvad JSON-læseren tilgiver, før filen skrives som ASS.

Ofte stillede spørgsmål

Hvordan skrives den samme tid i JSON og ASS?

JSON skriver start: 1000, mens ASS skriver 0:00:01.23; ASS har kun hundrededele sekunder, så hver tid rundes til nærmeste 10 ms.

Hvad går tabt, når JSON bliver ASS?

Når JSON bliver ASS, melder kapacitetstabellen: tidspræcisionen. Teksten og tidslinjen bevares. I målformatet skriver ASS Dialogue-linjer med start og slut i hundrededele sekunder. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

Kan ASS rumme det, som JSON gemmer uden for tekstblokkene?

Ja. JSON har ingen private blokke, men ukendte nøgler bevares. Der er derfor intet privat indhold at miste. ASS gemmer [Script Info], indlejrede skrifter og grafik samt Comment-linjer uden for tekstblokkene.

Hvordan håndteres en beskidt JSON-fil, før den bliver ASS?

Når JSON bliver ASS, læses kilden sådan: JSON accepterer både objektformen, arrayformen, subtitle.js-AST og tekstgenveje; output skrives med to mellemrum, LF og sorteret efter starttid. Sådan skrives resultatet: Filen får [Script Info], en stiltabel og Dialogue-linjer.

Hvad sker der med stilarter og karaoke, når JSON bliver ASS?

Når JSON bliver ASS, gælder det, at JSON gemmer formatering som strukturerede tags. ASS har fuldt stilsystem med skrift, farve, kontur, skygge og marginer. JSON gemmer position som x, y og align. ASS placerer tekst med \pos og \move. Karaoke bevares, fordi både JSON og ASS kan gemme det.

Bliver min JSON-fil uploadet, når jeg laver ASS?

Nej. Både læsningen af JSON og skrivningen af ASS sker i browseren, så intet af teksten, tiderne eller tagsene sendes i en anmodning. Du kan lægge en hel sæson ind, afbryde undervejs og hente resultaterne som én ZIP-fil; når siden er indlæst, virker den også uden net.

Relaterede værktøjer