JSON til SMI
Eller lim inn underteksttekst
Hva denne konverteringen endrer
2 ting slippes eller trenger en avgjørelse
- Formatering
all formatering unntatt fet og kursiv (farge, kontur, skygge, marger)
- Karaoke
karaoketiming (utheving per stavelse)
Denne listen kommer fra egenskapsmatrisen for disse to formatene, ikke fra den bestemte filen du lastet inn. En bestemt fil kan miste mer hvis den bruker egenskaper formatet tillater, men matrisen ikke modellerer.
Denne siden konverterer JSON til SMI: slipp inn en fil eller lim inn teksten, og du får SMI-versjonen tilbake med tekstblokkene fra JSON i behold.
Konverteringen fra JSON til SMI mister noe, og det er verd å vite hva: farge, omriss, skygge og marger forsvinner, mens fet og kursiv overlever som innebygde tagger; karaoketimingen per stavelse forsvinner.
Listen over filboksen er regnet ut fra hva JSON og SMI kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.
En enkelt JSON-fil går like fint som hundre, så du kan sende hele sesongen gjennom SMI-konverteringen og laste ned alt som én ZIP.
Arbeidet med JSON til SMI skjer i nettleseren din — ingen server ser filen.
Eksempler
En typisk JSON-fil konvertert til SMI
Inndata
{
"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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>Hello world.<br>Second line.
<SYNC Start=2000>
<P>
<SYNC Start=2500>
<P>Plain line.<br><i>Styled</i> line.
<SYNC Start=4000>
<P>
<SYNC Start=4500>
<P>Roger: I am here.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
Dette går tapt i utdataen: farge og marger og karaoke.
Samme JSON-til-SMI-konvertering med vanskelig inndata
Inndata
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Resultat
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>First.
<SYNC Start=1000>
<P>
<SYNC Start=1000>
<P>Second.
<SYNC Start=2000>
<P>
<SYNC Start=2000>
<P>Third.
<SYNC Start=3000>
<P>
</BODY>
</SAMI>
Slik ser skader på ekte filer ut — blandede linjeskift, løse mellomrom, tomme felt. Sammenlign med det ryddelige eksempelet over for å se hva JSON-parseren tilgir.
Ofte stilte spørsmål
Hva går tapt når JSON blir SMI?
Dette: farge, omriss, skygge og marger forsvinner, mens fet og kursiv overlever som innebygde tagger; karaoketimingen per stavelse forsvinner. På kildesiden har JSON et JSON-skjema med tider i millisekunder og tagger per linje; på målsiden har SMI tekstblokker med start- og sluttid og grunnleggende formatering, og derfor kommer de nevnte tingene ikke med. Teksten og rekkefølgen kommer over.
Hvordan skrives tidsstemplene om fra JSON til SMI?
En tid i JSON ser slik ut: `"start": 4126` — heltall millisekunder. I SMI skrives den som `<SYNC Start=4126>` — millisekunder. Begge formatene bruker samme oppløsning, så ingen avrunding skjer. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.
Hva skjer med formateringen fra JSON i SMI?
Stiltabellen forsvinner: skrift, størrelse, marger, omriss og skygge fra JSON har ingen plass i SMI, som bare har grunnleggende formatering. Fet og kursiv skrives om til SMIs innebygde tagger og overlever; farge går tapt.
Hvordan ser en SMI-fil ut når den er laget fra JSON?
SMI er SAMI-oppmerking med `<SYNC>`-blokker og `<P>`/`<br>`. Konverteringen fra JSON fyller den formen: hver tekstblokk blir én SMI-blokk, i samme rekkefølge, med JSON-ens tekst delt i de samme linjene.
Kan jeg konvertere SMI tilbake til JSON, og hva går tapt da?
Ja, og den veien har sin egen tap-liste: JSON har ingen plass til innholdet SMI oppbevarer utenfor tekstblokkene. Det er ikke den samme listen som JSON → SMI, fordi de to formatene beholder ulike ting.
Beholder SMI plasseringen som JSON beskriver?
Ja, i den formen SMI har: SMI kan plassere tekstblokker, så JSON-ens posisjon skrives om dit i stedet for å kastes.
Hva gjør SMI med en tekstblokk fra JSON som har flere linjer?
Den beholder linjene. JSON og SMI uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet med `<br>` mellom linjene i stedet for å slå sammen teksten.
Forsvinner karaoketimingen i JSON når jeg konverterer til SMI?
Ja. JSON kan lagre per stavelse når en linje skal lyse opp, men SMI har ingen slik instruksjon; ordene blir stående, men timingen per stavelse er borte.