JSON naar SRT
Of plak ondertiteltekst
Wat deze conversie verandert
3 dingen vervallen of vragen om een beslissing
- Opmaak
alle opmaak (vet, cursief, kleur, contour, schaduw)
- Positionering
positionering op het scherm (elk blok keert terug naar de standaardpositie)
- Karaoke
karaoke-timing (markering per lettergreep)
Deze lijst komt uit de capaciteitenmatrix voor deze twee formaten, niet uit het bestand dat je hebt geladen. Een specifiek bestand kan meer verliezen wanneer het kenmerken gebruikt die het formaat toestaat maar de matrix niet modelleert.
Deze pagina leest een JSON-document met ondertitels en schrijft er een SRT-bestand van. Ze accepteert de vorm die deze site zelf schrijft — een versienummer en een array met blokken — en de eenvoudige vorm waarin het document gewoon een lijst blokken is. In beide gevallen heeft elk blok een start, een eind en tekst nodig; de tijden staan in milliseconden en gaan rechtstreeks in SRT-tijdcodes, met dezelfde resolutie, dus er wordt niets afgerond.
Wat SRT niet kan bevatten, wordt gemeld in plaats van stil weggegooid: een titel, een beeldsnelheid en een stijltabel hebben geen plek in een ondertitelbestand dat niets anders is dan genummerde blokken. Gebruikt een blok opmaak — cursief, vet, een kleur — dan wordt die als bijpassende tag uitgeschreven, en wat de tag niet kan uitdrukken, staat hierboven.
Een beschadigd bestand stopt de conversie niet. De parser leest wat hij kan en herstelt een blok waarvan het einde niet na het begin ligt, want een ondertitelbestand dat je kunt laden en repareren is meer waard dan een foutmelding. Een hele reeks JSON-bestanden gaat in één keer door, in je browser, en komt terug als ZIP.
Voorbeelden
Een typisch JSON-bestand, omgezet naar SRT
Invoer
{
"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"
}
]
}
Uitvoer
1
00:00:00,000 --> 00:00:02,000
Hello world.
Second line.
2
00:00:02,500 --> 00:00:04,000
Plain line.
<i>Styled</i> line.
3
00:00:04,500 --> 00:00:06,000
Roger: I am here.
In deze uitvoer gaan stijl, positie en karaoke verloren. Al het andere komt regel voor regel overeen.
Dezelfde conversie op een rommelige invoer
Invoer
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Uitvoer
1
00:00:00,000 --> 00:00:01,000
First.
2
00:00:01,000 --> 00:00:02,000
Second.
3
00:00:02,000 --> 00:00:03,000
Third.
Zo zien echte bestanden er vaak uit: gemengde regeleinden, losse spaties, lege velden. Vergelijk het met het nette voorbeeld hierboven om te zien wat de parser vergeeft.
Veelgestelde vragen
Welke JSON-vormen accepteert deze pagina bij JSON naar SRT?
Het document dat deze site schrijft — een versienummer en een array met blokken — en de gelijkwaardige arrayvorm, waarin het bestand alleen de lijst blokken is. Wat telt, is dat elk blok een start, een eind en tekst heeft in een van de herkende vormen.
Wat gebeurt er met de titel, stijlen en beeldsnelheid van mijn JSON in SRT?
Ze worden gelezen en daarna als verloren gemeld, omdat SRT er geen veld voor heeft. Vooral een beeldsnelheid heeft nergens heen te gaan: SRT bewaart kloktijd, geen frames. Daarom staat ze hierboven en wordt ze niet stilzwijgend gebruikt.
Worden de milliseconden van JSON naar SRT onderweg afgerond?
Nee. SRT bewaart milliseconden en het JSON-bestand is in milliseconden geschreven, dus elke start en elk eind wordt exact overgenomen en de tijdlijn gaat niet lopen.
Wat als de start van een JSON-blok na het einde ligt bij JSON naar SRT?
De converter herstelt het in plaats van het bestand te weigeren, zodat een met de hand bewerkt document toch een laadbaar ondertitelbestand oplevert. Controleer de tijden van dat blok tegen de video, want het bestand zei dat er iets mis was.
Kan ik tussen JSON en SRT heen en weer omzetten zonder iets te verliezen?
Omzetten naar JSON en terug geeft je tijdlijn exact terug, en ook de opmaak die JSON kan beschrijven: cursief, vet en kleuren worden tags en komen als tags terug. Wat een retour niet overleeft, is alles wat SRT zelf niet kan bewaren — precies wat hierboven staat.