SRT naar JSON
Of plak ondertiteltekst
Wat deze conversie verandert
In deze richting gaat niets verloren — elk kenmerk van het bronformaat heeft in het doelformaat een plek.
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 maakt van een ondertitelbestand gestructureerde data: een JSON-document dat elk blok vermeldt met zijn begin- en eindtijd en zijn tekst. Het schema is van deze site zelf en bewust klein — een versienummer en een array met blokken, met tijden als hele milliseconden in plaats van tijdstempels. Niets erin hangt van een bepaalde bibliotheek af en niets hoef je te raden.
Milliseconden worden gebruikt omdat ze bruikbaar zijn zonder eerst geparseerd te worden. De fijnste resolutie die een ondertitelformaat hier bewaart is één milliseconde, en een geheel getal kan niet verkeerd gelezen worden door een komma- of puntconventie. Een regel zonder opmaak blijft een gewone tekenreeks; een regel met cursief, vet of een kleur wordt een object met de tekst en de tags die erop van toepassing zijn, elk met wat het is en welke tekens het beslaat.
Het resultaat is een bestand dat je in een script kunt laden, kunt diffen of in versiebeheer kunt zetten, en terug omzetten geeft je de ondertitels weer. Zoals bij elke tool hier gebeurt het werk in je browser.
Voorbeelden
Een typisch SRT-bestand, omgezet naar JSON
Invoer
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
Uitvoer
{
"version": 1,
"cues": [
{
"id": "1",
"start": 1000,
"end": 3500,
"lines": [
"Hello there."
]
},
{
"id": "2",
"start": 3500,
"end": 6000,
"lines": [
{
"text": "Whispering now.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 10
}
]
},
"And a second line."
]
},
{
"id": "3",
"start": 6000,
"end": 9250,
"lines": [
{
"text": "Bold statement.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
}
]
}
]
}
]
}
Hier gaat niets verloren: vergelijk beide kanten regel voor regel.
Dezelfde omzetting op een rommelige invoer
Invoer
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
Uitvoer
{
"version": 1,
"cues": [
{
"id": "1",
"start": 1000,
"end": 3500,
"lines": [
{
"text": "Bold and italic.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
},
{
"kind": "italic",
"start": 9,
"end": 15
}
]
}
]
},
{
"id": "2",
"start": 3500,
"end": 6000,
"lines": []
},
{
"id": "3",
"start": 8000,
"end": 9000,
"lines": [
"Last one."
]
}
]
}
Zo zien echte bestanden eruit — gemengde regeleinden, losse spaties, lege velden. Vergelijk met het nette voorbeeld hierboven om te zien wat de parser vergeeft.
Veelgestelde vragen
Welk schema volgt de JSON-uitvoer van SRT?
Het eigen schema van deze site, en het staat hierboven met een voorbeeld: een versienummer en daarna een array met blokken. Elk blok heeft een id, een start en een eind in milliseconden en een lijst regels. Er is geen verborgen metadata en geen afhankelijkheid van een formaat van derden.
Waarom milliseconden in plaats van tijdcodes in JSON?
Zodat het bestand bruikbaar is zonder eerst geparseerd te worden. Twee tijden optellen, vergelijken of sorteren zijn gewone getalhandelingen op een geheel getal, terwijl een tekenreeks als 00:00:01,000 eerst gedecodeerd moet worden en verkeerd gedecodeerd kan worden.
Hoe wordt opmaak in de JSON van SRT vastgelegd?
Een gewone regel blijft een gewone tekenreeks. Een regel met opmaak wordt een object met de tekst en een array tags, en elke tag zegt wat hij is en waar hij in die tekst begint en eindigt. Zet je de JSON terug, dan wordt de opmaak opnieuw uitgeschreven.
Is het veilig om de JSON met de hand te bewerken?
Ja, en terug omzetten is de controle. Als het bestand parseert, reproduceert de omzetting de blokken met de tijden die je hebt opgegeven — een rondje door de omzetter is dus een snelle manier om een typefout te vinden.
Kan ik de JSON in een script inlezen?
Daar is het voor bedoeld. Lees de array cues, neem start en end als getallen en voeg de regels samen — een regel is een tekenreeks of een object waarvan het veld text de woorden bevat.