Saltar al contenido principal
SubtitleMatrix

Convertir JSON a SRT

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 lee un documento JSON que describe subtítulos y escribe un archivo SRT a partir de él. Acepta la forma que produce este sitio —un número de versión y después un arreglo de bloques— y la forma simple en la que el documento es solo una lista de bloques. En ambos casos necesita de cada bloque un inicio, un final y algo de texto; los tiempos están en milisegundos y pasan directos a los códigos de tiempo SRT, que tienen la misma resolución, así que nada se redondea por el camino.

Todo lo que el documento contenga y SRT no pueda guardar se informa en vez de descartarse en silencio: un título, una velocidad de fotogramas y una tabla de estilos no tienen sitio en un archivo de subtítulos que solo son bloques numerados. Cuando un bloque usa formato —cursiva, negrita, un color— se escribe como la etiqueta correspondiente, y lo que la etiqueta no puede expresar se enumera arriba.

Un archivo dañado no detiene la conversión. El analizador lee lo que puede y repara un bloque cuyo final no es posterior a su inicio, porque un archivo de subtítulos que puedes cargar y arreglar vale más que un mensaje de error. Un conjunto entero de archivos JSON se convierte en una pasada, en tu navegador, y vuelve como un ZIP.

Ejemplos

Un archivo JSON típico, convertido a SRT

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

1
00:00:00,000 --> 00:00:02,000
Hello world.
Second line.

2
00:00:02,500 --> 00:00:04,000
Plain line.
<i>Styled</i> line.

3
00:00:04,500 --> 00: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

1
00:00:00,000 --> 00:00:01,000
First.

2
00:00:01,000 --> 00:00:02,000
Second.

3
00:00:02,000 --> 00: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

¿Qué formas de JSON acepta la conversión a SRT?

El documento que produce este sitio —un número de versión y un arreglo de bloques— y la forma de arreglo equivalente, en la que el archivo es solo la lista de bloques. Lo que importa es que cada bloque tenga un inicio, un final y algo de texto en una de las formas reconocidas.

¿Qué pasa con el título, los estilos y la velocidad de fotogramas de mi JSON al convertir a SRT?

Se leen y después se informan como descartados, porque SRT no tiene campo para ellos. La velocidad de fotogramas en particular no tiene dónde ir —SRT guarda tiempo de reloj, no fotogramas—, así que se enumera arriba en vez de usarse en silencio.

¿Se redondean los milisegundos al convertir JSON a SRT?

No. SRT guarda milisegundos y el archivo JSON está escrito en milisegundos, así que cada inicio y cada final se transfieren exactos y la línea de tiempo no se desvía.

¿Qué ocurre si el inicio de un bloque JSON es posterior a su final en SRT?

El conversor lo repara en vez de rechazar el archivo, de modo que un documento editado a mano sigue produciendo un archivo de subtítulos cargable. Comprueba los tiempos de ese bloque contra el vídeo, porque el archivo te estaba avisando de que algo iba mal.

¿Puedo convertir de JSON a SRT y volver sin perder nada?

Convertir a SRT y de vuelta reproduce tu línea de tiempo exactamente y reproduce el formato que JSON puede describir: la cursiva, la negrita y los colores se convierten en etiquetas y vuelven como etiquetas. Lo que no sobrevive a la ida y vuelta es todo lo que SRT no puede guardar, que es exactamente lo que se enumera arriba.

Herramientas relacionadas