JSON til LRC
Eller lim inn underteksttekst
Hva denne konverteringen endrer
5 ting slippes eller trenger en avgjørelse
- Tider
tekstblokkenes sluttider (resultatformatet registrerer bare når en tekstblokk starter)
- Formatering
all formatering (fet, kursiv, farge, kontur, skygge)
- Plassering
plassering på skjermen (hver tekstblokk går tilbake til standardposisjonen)
- Karaoke
karaoketiming (utheving per stavelse)
- Presisjon
tidspresisjon — resultatets klokke er grovere, så hvert tidsstempel rundes av til nærmeste 10 ms
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.
Her konverteres en JSON-fil til LRC i nettleseren: du slipper inn en fil — eller limer inn teksten — og får LRC-utdataen tilbake.
Forskjellen mellom JSON og LRC er ikke kosmetisk: sluttidene forsvinner, fordi LRC bare lagrer når en linje starter — spilleren holder linjen oppe til neste linje begynner; all formatering forsvinner — fet, kursiv, farge, omriss og skygge; plasseringen forsvinner, og hver tekstblokk faller tilbake til standardplassen; karaoketimingen per stavelse forsvinner; den siste desimalen forsvinner, fordi klokken i LRC runder hvert tidsstempel til nærmeste 10 ms.
Listen over filboksen er regnet ut fra hva JSON og LRC kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.
Du kan kjøre én JSON-fil eller en hel sesong til LRC i samme kjøring: filene behandles én om gangen, kjøringen kan avbrytes underveis, og alt kommer ned som én ZIP.
Konverteringen fra JSON til LRC skjer i nettleseren din, så ingenting lastes opp.
Eksempler
En typisk JSON-fil konvertert til LRC
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
[ti:Fixture: typical]
[00:00.00]Hello world.
[00:00.00]Second line.
[00:02.50]Plain line.
[00:02.50]Styled line.
[00:04.50]Roger: I am here.
Dette går tapt i utdataen: sluttidene, formatering, plassering, karaoke og tidspresisjon. Starttidene beholdes med hundredels presisjon; sluttidene utledes fra neste linje.
Samme JSON-til-LRC-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
[00:00.00]First.
[00:01.00]Second.
[00:02.00]Third.
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 LRC?
Dette: sluttidene forsvinner, fordi LRC bare lagrer når en linje starter — spilleren holder linjen oppe til neste linje begynner; all formatering forsvinner — fet, kursiv, farge, omriss og skygge; plasseringen forsvinner, og hver tekstblokk faller tilbake til standardplassen; karaoketimingen per stavelse forsvinner; den siste desimalen forsvinner, fordi klokken i LRC runder hvert tidsstempel til nærmeste 10 ms. På kildesiden har JSON et JSON-skjema med tider i millisekunder og tagger per linje; på målsiden har LRC bare starttider med hundredels presisjon, og derfor kommer de nevnte tingene ikke med. Teksten og rekkefølgen kommer over.
Hvordan skrives tidsstemplene om fra JSON til LRC?
En tid i JSON ser slik ut: `"start": 4126` — heltall millisekunder. I LRC skrives den som `[00:04.12]` — hundredeler, og bare starttiden. LRC lagrer bare starttiden, så det finnes ingen sluttid i filen; spilleren holder linjen oppe til neste linje begynner. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.
Hvordan får en tekstblokk fra JSON en sluttid i LRC?
LRC har ingen sluttid: en spiller holder linjen oppe til neste linje begynner. Derfor skrives JSON-tekstblokken som en starttid med hundredels presisjon, og sluttiden kastes — den er en opplysning JSON har som LRC ikke kan lagre.
Hva skjer med formateringen fra JSON i LRC?
Stiltabellen og de innebygde taggene i JSON forsvinner: LRC har ingen stiltabell og skriver rå tekst, så fet, kursiv og farge blir bare vanlige tegn.
Hvordan ser en LRC-fil ut når den er laget fra JSON?
LRC har metadata-tagger som `[ti:]` og `[ar:]`, deretter én tidsstemplet linje per sanglinje. Konverteringen fra JSON fyller den formen: hver tekstblokk blir én LRC-blokk, i samme rekkefølge, med JSON-ens tekst delt i de samme linjene.
Kan jeg konvertere LRC tilbake til JSON, og hva går tapt da?
Ja, og den veien har sin egen tap-liste: sluttidene blir genererte, fordi LRC ikke lagrer dem — de utledes fra neste linjes starttid. Det er ikke den samme listen som JSON → LRC, fordi de to formatene beholder ulike ting.
Beholder LRC plasseringen som JSON beskriver?
Nei. JSON kan plassere en tekstblokk på skjermen, men LRC har ingen posisjonsmodell, så hver tekstblokk faller tilbake til spillerens standardplass; posisjonen står i tap-listen.
Hva gjør LRC med en tekstblokk fra JSON som har flere linjer?
Den beholder linjene. JSON og LRC uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet som flere tidsstemplede linjer med samme starttid i stedet for å slå sammen teksten.
Forsvinner karaoketimingen i JSON når jeg konverterer til LRC?
Ja. JSON kan lagre per stavelse når en linje skal lyse opp, men LRC har ingen slik instruksjon; ordene blir stående, men timingen per stavelse er borte.
Hva skjer med kommentarer og metadata i JSON når filen blir LRC?
JSON har `version`, `title`, `fps` og `styles` på dokumentnivå, men de er en del av modellen, ikke private blokker. LRC har metadata-taggene i hodet: tittel, artist, lengde og offset — men det er LRC-konstruksjoner som ikke fantes i JSON, ikke noe som ble borte.