Saltar al contenido principal
SubtitleMatrix

Convertir JSON a SBV

O pega el texto de los subtítulos

Qué cambia esta conversión

3 cosas se descartan o requieren una decisión

  • 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)

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 SBV. Arrastra un archivo —o pega el texto— y recuperas la versión SBV. La conversión corre por completo en el navegador, de modo que nada se sube y no se pide cuenta.

Los dos formatos no guardan lo mismo, y la diferencia no es cosmética: el estilo, la posición y el karaoke no tienen dónde ir en SBV. La lista de arriba nace de lo que cada formato puede expresar, no de tu archivo, así que es la misma antes de cargar nada.

Un archivo basta, y una temporada entera también: la cola los trata en orden y los resultados bajan juntos en un solo ZIP.

Ejemplos

Un archivo JSON típico, convertido a SBV

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

0:00:00.000,0:00:02.000
Hello world.
Second line.

0:00:02.500,0:00:04.000
Plain line.
<i>Styled</i> line.

0:00:04.500,0:00:06.000
Roger: I am here.

Se pierden el estilo, la posición y el karaoke. 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

0:00:00.000,0:00:01.000
First.

0:00:01.000,0:00:02.000
Second.

0:00:02.000,0:00:03.000
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

¿Se conservan la negrita y la cursiva de JSON en SBV?

El énfasis sí; la tabla de estilos no. El formato que pertenece a un fragmento de texto —negrita, cursiva, subrayado, un color— se escribe en el texto SBV como etiquetas (`<i>`, `<b>`, `<u>`, `<font color="…">`), porque es el único tipo de estilo que un formato por bloques puede llevar. Se pierde todo lo que el archivo JSON decía globalmente: la fuente, su tamaño, el contorno, la sombra y los márgenes.

¿Qué pasa con la posición en pantalla de JSON a SBV?

SBV 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é sucede con los tiempos de karaoke de JSON a SBV?

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 SBV 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 SBV.

¿Qué aspecto tiene la salida cuando JSON se convierte en SBV?

Como SBV: sin números de bloque y sin cabecera; una línea con los dos tiempos y después el texto. Cada bloque JSON se convierte en un bloque SBV, en el mismo orden y con el mismo texto.

¿Son exactos los tiempos de JSON en el archivo SBV?

Sí, al milisegundo, que es lo más fino que llega cualquiera de los dos formatos. JSON escribe un instante como `4126` y SBV escribe el mismo instante como `0:00:04.126`; nada se redondea ni se desplaza, y un bloque que estaba en pantalla 2,9 segundos sigue estándolo.

¿Cómo sale en SBV un bloque JSON de dos líneas?

Como dos líneas, una debajo de la otra. La pareja se mantiene: las dos líneas JSON siguen perteneciendo a un mismo subtítulo en la salida SBV, y el reproductor las muestra juntas.

¿Conservan los bloques JSON su orden en la salida SBV?

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 SBV los devuelve a su orden; eso cambia la estructura del archivo, no su contenido, y es deliberado.

¿Puedo convertir el SBV de vuelta a JSON?

Sí, y esa dirección no cuesta nada: un archivo SBV guarda menos de lo que JSON puede, así que no se pierde nada más al volver. Lo que esta dirección perdió sigue perdido: el estilo, la posición y el karaoke no se reconstruyen desde un archivo SBV, porque nada en él registra cómo eran.

¿Mantiene la salida SBV 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 SBV en UTF-8.

Herramientas relacionadas