Converter TTML 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)
- 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
- Conteúdo específico do formato
conteúdo que o formato de origem guarda fora de seus blocos (blocos que não são cue, texto de cabeçalho, configurações por bloco, eventos comentados) — o formato de destino não tem lugar para ele
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 TTML em LRC. Arraste um arquivo ou cole o texto e receba a versão LRC de volta. A conversão roda inteiramente no navegador, então nada é enviado e não há cadastro.
O LRC registra apenas o começo de cada linha e mantém o texto até o próximo carimbo, então todos os fins do TTML são descartados. Cada início vira [mm:ss.xx], com arredondamento ao centésimo de segundo: 4,126 s sai como [00:04.12]. As duas linhas de um cue TTML viram duas linhas com o mesmo carimbo.
A cor e o itálico escritos dentro do parágrafo não sobrevivem, porque o LRC não tem marcação de estilo. O cabeçalho do TTML também fica fora: declaração XML, namespaces, <styling>, <layout>, metadados e referências. Vários arquivos entram na fila e descem juntos em um ZIP.
Exemplos
Um arquivo TTML típico, convertido para LRC
Entrada
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
<head>
<styling>
<style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
Saída
[00:01.00]Hello there.
[00:03.50]How are you?
[00:03.50]Fine, thanks.
Perdido nesta saída: tempo, estilos, posicionamento, precisão e conteúdo específico do formato. O resto corresponde linha a linha.
A mesma conversão em uma entrada problemática
Entrada
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:frameRate="25" xml:lang="en">
<body>
<div>
<p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
<p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
<p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
<p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom & Jerry.</p>
</div>
</body>
</tt>
Saída
[00:01.50]Loaded from an offset and a duration.
[00:04.00]A coarser clock spelling.
[00:07.00]Frames, at 25fps.
[00:09.00]Half-open and Tom & Jerry.
É 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
Onde foram parar os tempos finais dos cues TTML no LRC?
Foram descartados. O LRC não tem campo de fim, porque um player de letras mantém a linha até o próximo carimbo; só os inícios do TTML são aproveitados, sem qualquer deslocamento.
Como o TTML com itálico e cor sai em LRC?
Sai como texto puro. O LRC não tem marcação de estilo, então um span colorido ou um estilo nomeado da tabela <styling> não tem onde aparecer; as palavras ficam intactas e a aparência se perde.
Com que precisão os milissegundos do TTML viram carimbos LRC?
Ao centésimo de segundo, no formato [mm:ss.xx]. O instante 00:00:04.126 é arredondado para [00:04.12] ou [00:04.13], conforme o centésimo mais próximo, sem mover nenhum cue além de 5 ms.
Duas linhas de um cue TTML continuam juntas no LRC?
Continuam, como duas linhas com o mesmo carimbo. O LRC usa a repetição do horário para dizer que os dois textos aparecem ao mesmo tempo, e é isso que preserva o par.
Para onde vão as regiões e os metadados do TTML?
Não vão a lugar nenhum: o LRC não tem documento, só linhas de texto com tempo. <layout>, <metadata> e os atributos region e style do <p> se perdem, e o player decide onde desenhar.