Ir para o conteúdo principal
SubtitleMatrix

Converter LRC para JSON

Ou cole o texto da legenda

Opções

Usada quando a origem não tem horas de término (texto simples, LRC). A linha do tempo do resultado é gerada aqui em vez de convertida, então este número é o que você obtém.

O que esta conversão altera

1 coisa é descartada ou precisa de uma decisão

  • Tempos

    as horas de término dos blocos — a origem não as registra, então as da saída serão geradas em vez de convertidas

Esta lista vem da matriz de capacidades destes dois formatos, não do arquivo específico que você carregou. Um arquivo específico pode perder mais se usar recursos que o formato permite mas a matriz não modela.

Esta página converte LRC em JSON. Arraste um arquivo ou cole o texto e receba a versão JSON de volta. A conversão roda inteiramente no navegador, então nada é enviado e não há cadastro.

O LRC não guarda tempo de fim, e o JSON usa milissegundos inteiros. O conversor resolve a diferença tomando o início da linha seguinte como fim da anterior; a última linha recebe a duração configurada na página. Cada bloco vira um objeto com start e end, e o texto aparece em um array lines com uma entrada por linha. Um bloco de duas linhas, portanto, continua sendo um único cue.

O offset do arquivo é mantido como informação, não aplicado aos tempos, e o título entra em um campo de nível superior quando existe. A lista de perdas acima é a mesma para qualquer LRC, porque vem das capacidades dos dois formatos. Vários arquivos entram na fila e descem juntos em um ZIP.

Exemplos

Um arquivo LRC típico, convertido para JSON

Entrada

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

Saída

{
  "version": 1,
  "title": "Sample Song",
  "cues": [
    {
      "start": 12000,
      "end": 15300,
      "lines": [
        "First line of the song."
      ]
    },
    {
      "start": 15300,
      "end": 18000,
      "lines": [
        "Second line.",
        "Second line, translated."
      ]
    },
    {
      "start": 18000,
      "end": 21500,
      "lines": [
        ""
      ]
    },
    {
      "start": 21500,
      "end": 23500,
      "lines": [
        "Final line."
      ]
    }
  ]
}

Perdido nesta saída: tempo. O resto corresponde linha a linha.

A mesma conversão em uma entrada problemática

Entrada

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

Saída

{
  "version": 1,
  "cues": [
    {
      "start": 3000,
      "end": 5500,
      "lines": [
        "Out of order."
      ]
    },
    {
      "start": 5500,
      "end": 7000,
      "lines": [
        "Leading zero omitted, one decimal."
      ]
    },
    {
      "start": 7000,
      "end": 9000,
      "lines": [
        "Second with no centiseconds.",
        "Repeated chorus line."
      ]
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Repeated chorus line."
      ]
    },
    {
      "start": 12000,
      "end": 14000,
      "lines": [
        ""
      ]
    }
  ]
}

É o tipo de dano que arquivos reais trazem — fins de linha misturados, espaços soltos, campos vazios. Compare com o exemplo organizado acima para ver o que o leitor tolera.

Perguntas frequentes

Como o JSON representa o fim de uma linha do LRC?

Cada objeto de cue traz start e end em milissegundos inteiros. O end vem do start da linha seguinte; a última linha recebe a duração configurada, e o relatório avisa que esse fim foi gerado.

Como o texto de um bloco aparece no JSON?

Em um array lines, com uma entrada por linha do LRC. Um bloco de duas linhas gera duas entradas e continua sendo um único cue, com um par start e end só.

O JSON guarda o título e o offset do arquivo LRC?

O título entra no campo title de nível superior quando existe. O offset não é aplicado aos tempos; ele é lido e preservado como informação do arquivo, não como deslocamento.

A ordem do arquivo LRC é mantida no JSON?

Os cues são ordenados pelo start antes de serem escritos. Se o LRC estiver fora de ordem, o JSON sai em ordem crescente — mudança de estrutura, não de conteúdo.

O JSON é gerado localmente ou em um servidor?

Localmente, na aba do navegador. Não há upload, cadastro nem chamada de API; depois do carregamento, a página funciona até offline e o lote baixa em ZIP.

Ferramentas relacionadas