Convertir SRT a JSON
O pega el texto de los subtítulos
Qué cambia esta conversión
No se pierde nada en esta dirección: cada característica del formato de origen tiene un lugar al que ir en el formato de destino.
Esta lista proviene de la matriz de capacidades de estos dos formatos, no del archivo concreto que has cargado. Un archivo específico puede perder más si usa características que el formato permite pero que la matriz no modela.
Esta página convierte un archivo de subtítulos en datos estructurados: un documento JSON que enumera cada cue con su hora de inicio y de fin, y su texto. El esquema es propio de este sitio y es deliberadamente pequeño —un número de versión y una lista de cues, con los tiempos en milisegundos enteros en lugar de códigos de tiempo—. Nada depende de una biblioteca concreta y nada hay que adivinar.
Se usan milisegundos porque no necesitan analizarse para ser útiles. La resolución más fina que guarda cualquier formato de subtítulos de este sitio es un milisegundo, y un entero no puede leerse mal por una convención de coma o de punto. Una línea sin formato es una cadena simple; una línea con cursiva, negrita o color se convierte en un objeto que contiene el texto y las etiquetas que se le aplican, cada una con su tipo y los caracteres que abarca.
El resultado es un archivo que puedes cargar en un script, comparar con un diff o guardar en control de versiones, y convertirlo de vuelta te devuelve los subtítulos. Como en todas las herramientas de este sitio, el trabajo ocurre en tu navegador.
Ejemplos
Un archivo SRT típico convertido a JSON
Entrada
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.
Resultado
{
"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
}
]
}
]
}
]
}
Aquí no se pierde nada: compara los dos lados línea por línea.
La misma conversión con una entrada problemática
Entrada
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.
Resultado
{
"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."
]
}
]
}
Es el tipo de daño que traen los archivos reales: finales de línea mezclados, espacios sueltos, campos vacíos. Compáralo con el ejemplo limpio de arriba para ver qué perdona el analizador.
Preguntas frecuentes
¿Qué esquema sigue la salida de SRT a JSON?
El propio de este sitio, documentado con el ejemplo del panel de arriba: un número de versión y luego una lista de cues. Cada cue tiene un id, un inicio y un fin en milisegundos, y una lista de líneas. No hay metadatos ocultos ni dependencia de un formato de terceros.
¿Por qué SRT a JSON usa milisegundos en lugar de códigos de tiempo?
Para que el archivo se pueda usar sin analizarlo antes. Sumar dos tiempos, compararlos u ordenar por ellos son operaciones numéricas normales sobre un entero, mientras que una cadena como 00:00:01,000 hay que descodificarla primero y puede descodificarse mal.
¿Cómo representa el JSON de SRT a JSON las cursivas, las negritas y los colores?
Una línea simple sigue siendo una cadena simple. Una línea con formato se convierte en un objeto con el texto y una lista de etiquetas, y cada etiqueta dice de qué tipo es y dónde empieza y acaba dentro de ese texto. Si conviertes el JSON de vuelta, el formato se vuelve a escribir.
¿Es seguro editar a mano el JSON generado desde un SRT?
Sí, y la prueba es convertir de vuelta. Si el archivo se analiza, la conversión reproducirá los cues con los tiempos que le diste, así que una ida y vuelta por el conversor es una manera rápida de encontrar una errata.
¿Puedo usar la salida de SRT a JSON en un script?
Para eso sirve. Lee la lista de cues, toma start y end como números y une las líneas: una línea es o bien una cadena, o bien un objeto cuyo campo text contiene las palabras.