Convertir JSON a LRC
O pega el texto de los subtítulos
Qué cambia esta conversión
5 cosas se descartan o requieren una decisión
- Tiempos
las horas de fin de los bloques (el formato de salida solo registra cuándo empieza un bloque)
- Estilo
todo el estilo (negrita, cursiva, color, contorno, sombra)
- Posición
la posición en pantalla (cada bloque vuelve a la posición predeterminada)
- Karaoke
la sincronización karaoke (resaltado por sílaba)
- Precisión
la precisión de los tiempos: el reloj del resultado es más grueso, así que cada marca de tiempo se redondea al 10 ms más cercano
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 JSON en LRC. Arrastra un archivo —o pega el texto— y recibes la versión LRC. El proceso ocurre íntegramente en el navegador, así que no se sube nada y no se necesita cuenta.
Los dos formatos no guardan lo mismo, y la diferencia no es cosmética: los tiempos, el estilo, la posición, el karaoke y la precisión no tienen dónde ir en LRC. La lista de arriba se deriva de lo que cada formato puede expresar, no de tu archivo, así que es idéntica antes de cargar nada.
Un archivo es suficiente, y una temporada también: la cola avanza en orden y los resultados se descargan juntos en un único ZIP.
Ejemplos
Un archivo JSON típico, convertido a LRC
Entrada
{
"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"
}
]
}
Resultado
[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.
Se pierden los tiempos, el estilo, la posición, el karaoke y la precisión. El resto coincide línea por línea.
La misma conversión con una entrada difícil
Entrada
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Resultado
[00:00.00]First.
[00:01.00]Second.
[00:02.00]Third.
Estos son los daños 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é pasa con la hora de fin de cada bloque JSON en LRC?
LRC registra cuándo empieza una línea y nada más: un reproductor de letras mantiene la línea hasta que empieza la siguiente, así que una hora de fin sobraría. Todo final se descarta y ningún inicio JSON se toca.
¿Qué ocurre con la negrita, la cursiva y el color de JSON a LRC?
LRC no guarda estilo de ningún tipo, así que se va todo: las `tags` que lleva la línea de un bloque, o una entrada del objeto `styles` del propio documento, no tienen dónde caer, y cada línea se escribe como texto plano. Las palabras no se tocan.
¿Qué sucede con la posición en pantalla al pasar de JSON a LRC?
LRC no puede decir dónde se dibuja un subtítulo, así que la posición guardada con cada bloque se descarta al salir de JSON, y cada bloque vuelve a la posición predeterminada que elige el reproductor: el borde inferior del fotograma, centrado, en la mayoría de los casos.
¿Qué ocurre con el karaoke al convertir JSON a LRC?
El tiempo se va; las palabras quedan. El karaoke vive en los tramos de karaoke que lleva un bloque JSON, que marcan cuándo se ilumina cada sílaba, y LRC no tiene forma de registrar un instante dentro de una línea, así que las marcas desaparecen y las sílabas llegan como texto normal de LRC.
¿Por qué se mueven los tiempos de JSON a LRC?
LRC guarda el tiempo como `[00:04.12]` donde JSON lo guarda como `4126` —centésimas frente a milésimas—, así que cada código se redondea a los 10 ms más cercanos: 00:00:04,126 sale como 4,13 segundos. Nada se estira ni se reordena y ningún bloque se mueve más de 5 ms, pero si vas a alinear estos subtítulos con otro archivo, ese es el punto donde la conversión deja de ser exacta.
¿Cómo se ve la salida cuando JSON pasa a LRC?
Como LRC: sin números de bloque; cada línea lleva su propia marca de tiempo entre corchetes. Cada bloque JSON se convierte en un bloque LRC, en el mismo orden y con el mismo texto.
¿Cómo aparece en LRC un bloque JSON de dos líneas?
Como dos líneas con marca de tiempo que llevan la misma hora, que es como LRC dice «estas dos van juntas». La pareja se mantiene: las dos líneas JSON siguen perteneciendo a un mismo subtítulo en la salida LRC, y el reproductor las muestra juntas.
¿Se conserva el orden de los bloques JSON en la salida LRC?
Sí, y de paso se ordenan por hora de inicio: primero los más tempranos, que es lo que esperan todos los formatos de este sitio y cómo los leen los reproductores. Si tu archivo JSON traía los bloques desordenados, la salida LRC los devuelve a su orden; eso cambia la estructura del archivo, no su contenido, y es deliberado.
¿Puedo volver de LRC a JSON?
Sí, y esa dirección tiene su propia lista: convertir LRC en JSON pierde los tiempos. La lista es distinta de la de arriba porque los dos formatos guardan cosas distintas.
¿Respeta la salida LRC la codificación del archivo JSON?
No: la salida es UTF-8, con finales de línea Unix y sin marca de orden de bytes, sea cual sea la que usara el archivo JSON. Un archivo que llega en UTF-16 o en una codificación Windows de un solo byte se decodifica a la entrada (el panel de resultados lo indica cuando ocurre); lo que sale es siempre el mismo LRC en UTF-8.