Formato de subtítulos JSON
Qué puede expresar este formato
- Estilo del texto
- Fuentes, color, contorno, sombra
- Posición en pantalla
- Sí
- Sincronización karaoke
- Sí
- Saltos de línea dentro de un bloque
- Sí
- Línea de tiempo
- Hora de inicio y de fin para cada bloque
- Resolución de tiempos
- 1 ms
- Tiempos guardados como números de fotograma
- No
- Texto de derecha a izquierda
- Sí
Ejemplos
Un archivo JSON típico, y lo que se lee de él
Archivo
{
"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"
}
]
}
Qué contiene
3 cues, 5 lines of text
0 ms → 2000 ms
Hello world.
Second line.
[Default; position 100,200 (center)]
2500 ms → 4000 ms
Plain line.
Styled line. [italic ×1]
4500 ms → 6000 ms
Roger: I am here.
[speaker Roger]
Outside the cues:
styles Default
other keys version, title, fps, generator — carried through untouchedEl lado derecho no es un archivo convertido: es lo que este sitio lee del lado izquierdo, y el punto de partida de cualquier conversión de ese archivo.
Un archivo JSON difícil, y lo que aún se lee de él
Archivo
{
"cues": [
{ "start": "0:00:01,5", "end": "0:00:03,0", "text": "Unpadded timecode." },
{ "start": 4000.5, "end": 5000, "lines": ["Fractional start.", { "text": "Second.", "tags": [] }] },
{ "start": 9000, "end": 8000, "lines": ["End before start."] },
{ "start": "nope", "end": 12000, "lines": ["No readable start."] },
{ "start": 13000, "lines": ["No end at all."] }
],
"generator": "subtitlematrix boundary",
"styles": {},
"title": "Fixture: boundary"
}
Qué contiene
3 cues, 4 lines of text
1500 ms → 3000 ms
Unpadded timecode.
4001 ms → 5000 ms
Fractional start.
Second.
9000 ms → 9001 ms
End before start.
Outside the cues:
other keys generator, title — carried through untouched
Reported while reading — repaired or skipped, never silently:
2 × entries with no readable start and end time (they are not cues, so they were skipped)
1 × cue times that were not whole milliseconds (they were rounded to the nearest millisecond)
1 × cues whose end time was not after their start time (they were given a 1ms duration)Los archivos reales llegan con marca de orden de bytes, finales de línea Windows, una línea suelta antes de un código de tiempo o un código que no se puede leer. Nada lanza una excepción: lo que no se entiende se informa en vez de descartarse en silencio.
Convertir SubtitleMatrix JSON a otro formato
Cada una de estas conversiones se ejecuta por completo en tu navegador. Las etiquetas indican qué cuesta esa dirección antes de abrirla.
- Estilo
- Posición
- Karaoke
- Tiempos
- Estilo
- Posición
- Karaoke
- Precisión
- Estilo
- Posición
- Karaoke
- Velocidad de fotogramas
- Estilo
- Posición
- Karaoke
- Estilo
- Posición
- Karaoke
- Tiempos
- Estilo
- Posición
- Karaoke
- Saltos de línea
- Estilo
- Posición
- Karaoke
Convertir a este formato
- SubRip (SRT) → SubtitleMatrix JSON
- WebVTT (VTT) → SubtitleMatrix JSON
- Advanced SubStation Alpha (ASS) → SubtitleMatrix JSON
- SubStation Alpha (SSA) → SubtitleMatrix JSON
- YouTube SBV → SubtitleMatrix JSON
- SAMI (SMI) → SubtitleMatrix JSON
- LRC Lyrics → SubtitleMatrix JSON
- MicroDVD → SubtitleMatrix JSON
- TTML (Timed Text) → SubtitleMatrix JSON
- Plain Text (TXT) → SubtitleMatrix JSON
- CSV Spreadsheet → SubtitleMatrix JSON
El JSON de SubtitleMatrix es uno de los formatos de subtítulos que trata este sitio, y esta página es su referencia: qué puede guardar, qué no y una página para cada formato al que puedes convertirlo.
La tabla de arriba lo es todo: no hay una lista de funciones ocultas. Cuando una fila dice que no, eso es exactamente lo que se pierde al convertir a JSON, y cada página de conversión enlazada abajo lo dice antes de que abras un archivo.
Todas esas conversiones se ejecutan en el navegador. No se sube nada y no hace falta cuenta, lo que importa para material bajo un acuerdo de confidencialidad, una historia clínica o un embargo de emisión.
Preguntas frecuentes
¿Qué es un archivo JSON de subtítulos?
`.json` aquí es la forma de subtítulos propia de este sitio: un campo de versión, una tabla de estilos opcional y un arreglo de bloques cuyos tiempos son milisegundos. Es deliberadamente sin pérdidas respecto a todo lo que los otros formatos pueden expresar, y está pensado para guiones y canalizaciones de datos más que para reproductores.
¿Guarda estilos el formato JSON de subtítulos?
Sí, y más que los demás: una tabla de estilos con fuentes, tamaños, colores, contornos y márgenes, además de códigos por bloque dentro del texto, así que una línea puede ir en negrita, con color y colocada sin ningún estilo con nombre. También guarda tiempos de karaoke. Aquí la tabla es un objeto `styles` indexado por nombre de estilo, y el estilo por bloque viaja en el arreglo `tags` de cada línea en vez de como códigos dentro del texto, y por eso no hay que escapar nada al entrar ni al salir.
¿Guarda cada bloque JSON un inicio y un final?
Sí, y un instante en un archivo JSON se lee `4126`. Es lo más fino que llega JSON —al milisegundo— y el número es exacto, así que un bloque puede ser corto, largo o solaparse con el siguiente sin que nada quede implícito.
¿A qué formato conviene convertir JSON?
Nada en este sitio acepta todo lo que guarda un archivo JSON, así que no hay dirección gratuita: cada página de conversión nombra su propia lista de pérdidas. Elige el destino por cuál de esas listas puedes asumir, no por el formato que hayas visto más veces.
¿Puedo abrir un archivo JSON de subtítulos en un editor de texto?
Sí. Sí, siempre que mantengas derechas las comas y las comillas. Los tiempos son milisegundos como números simples, así que un bloque en 1,25 segundos se escribe `"start": 1250`.