Converter JSON para LRC
Ou cole o texto da legenda
O que esta conversão altera
5 coisas são descartadas ou precisam de uma decisão
- Tempos
as horas de término dos blocos (o formato de saída só registra quando um bloco começa)
- Estilo
todo o estilo (negrito, itálico, cor, contorno, sombra)
- Posição
a posição na tela (cada bloco volta à posição padrão)
- Karaokê
a sincronização karaokê (destaque por sílaba)
- Precisão
a precisão dos tempos — o relógio da saída é mais grosseiro, então cada marca de tempo é arredondada para o 10 ms mais próximo
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 JSON em LRC. Arraste um arquivo — ou cole o texto — e receba a versão LRC de volta. A conversão roda inteiramente no seu navegador, então nada é enviado e nenhuma conta é necessária.
Estes dois formatos não guardam as mesmas coisas, e a diferença não é cosmética: sincronização, estilo, posicionamento, karaokê e precisão não têm para onde ir no LRC. A lista acima vem do que cada um dos formatos consegue expressar, não do seu arquivo, então a resposta é a mesma antes de você carregar qualquer coisa.
Um arquivo está bom, e uma temporada inteira também: a fila processa na ordem e os resultados descem juntos num único ZIP.
Exemplos
Um arquivo JSON típico, convertido para 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"
}
]
}
Saída
[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.
Perdidos nesta saída: sincronização, estilo, posicionamento, karaokê e precisão. Todo o resto corresponde linha a linha.
A mesma conversão sobre uma entrada problemática
Entrada
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Saída
[00:00.00]First.
[00:01.00]Second.
[00:02.00]Third.
É o tipo de dano que os arquivos reais têm: fim de linha misturado, espaço sobrando, campos vazios. Compare com o exemplo organizado acima para ver o que o analisador perdoa.
Perguntas frequentes
O que acontece com o fim de cada bloco JSON no LRC?
O LRC registra quando uma linha começa e nada mais: um player de letras mantém a linha até a próxima começar, então um fim seria redundante. Todo fim é descartado e todo início do JSON passa intacto.
O que acontece com negrito, itálico e cor do JSON para o LRC?
O LRC não guarda estilo de espécie alguma, então tudo se perde: as tags que a linha de um bloco carrega e as entradas do objeto styles do documento não têm onde aterrissar, e cada linha é escrita como texto puro. As palavras em si não são tocadas.
O que acontece com a posição na tela do JSON para o LRC?
Como o LRC não expressa onde a legenda é desenhada, a posição guardada em cada bloco some na saída do JSON e todos os blocos retornam à posição padrão do player, em geral a parte de baixo do quadro, centralizada.
O que acontece com o karaokê do JSON para o LRC?
O tempo se vai, as palavras ficam. O karaokê está nos trechos marcados de um bloco JSON, que indicam quando cada sílaba acende; o LRC não registra instantes dentro de uma linha, então as marcas saem e as sílabas viram texto LRC comum.
Por que os tempos se movem de JSON para LRC?
O LRC guarda o tempo como [00:04.12] e o JSON como 4126 — centésimo contra milésimo — então cada timecode é arredondado para os 10 ms mais próximos. Nada é esticado nem reordenado e nenhum bloco se move mais de 5 ms, mas na hora de alinhar com outro arquivo esse é o ponto em que a conversão deixa de ser exata.
Como fica a saída quando JSON vira LRC?
Fica no formato LRC: sem números de bloco, cada linha carrega o próprio timestamp entre colchetes, e o título do documento vira uma etiqueta ti no topo. Cada bloco JSON vira uma linha LRC, na mesma ordem, com o mesmo texto.
As duas linhas de um bloco JSON sobrevivem no LRC?
Sobrevivem como duas linhas com o mesmo timestamp, que é o jeito LRC de dizer que as duas andam juntas. O vínculo se mantém: as duas linhas do JSON continuam sendo uma legenda só no LRC, e o player as exibe juntas.
Consigo converter o LRC de volta para JSON?
Consigo, e essa direção tem lista própria: converter LRC para JSON descarta a sincronização, porque um LRC só marca começos e o JSON precisa de início e fim. A lista difere da de cima porque os dois formatos guardam coisas diferentes.
O LRC de saída mantém a codificação do arquivo JSON?
Não. O LRC sai em UTF-8, com fim de linha Unix e sem BOM, independentemente da codificação do JSON. Se o arquivo de origem estava em UTF-16 ou numa codificação de byte único do Windows, ele é decodificado na entrada, com aviso no painel de resultado.