Converter TTML para VTT
Ou cole o texto da legenda
O que esta conversão altera
3 coisas são descartadas ou precisam de uma decisão
- Estilo
todo o estilo exceto negrito e itálico (cor, contorno, sombra, margens)
- Posição
a posição na tela (cada bloco volta à posição padrão)
- 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 VTT. Arraste um arquivo ou cole o texto e receba a versão VTT de volta. A conversão roda inteiramente no navegador, então nada é enviado e não há cadastro.
A saída começa com WEBVTT e traz os tempos do TTML sem arredondamento, no formato 00:00:01.000 --> 00:00:03.500. O <br/> do TTML vira uma quebra de linha, e as duas linhas continuam no mesmo cue. A ênfase escrita dentro do parágrafo é mantida como tag: <i>, <b>, <u> e <font color="…">.
O que não vai para o VTT é a aparência global do documento: declaração XML, namespaces, tabela <styling> com fonte e contorno, tabela <layout> com as regiões, metadados e referências style e region. O VTT guarda cues, não um documento. O processamento é local e o lote desce em um ZIP.
Exemplos
Um arquivo TTML típico, convertido para VTT
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
WEBVTT
00:00:01.000 --> 00:00:03.500
Hello <i>there</i>.
00:00:03.500 --> 00:00:06.000
How are you?
Fine, thanks.
Perdido nesta saída: estilos, posicionamento 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
WEBVTT
00:00:01.500 --> 00:00:03.500
Loaded from an offset and a duration.
00:00:04.000 --> 00:00:06.500
A coarser clock spelling.
00:00:07.000 --> 00:00:08.480
Frames, at 25fps.
00:00:09.000 --> 00:00:11.000
<font color="#FF0000">Half-open</font> 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
O VTT gerado a partir do TTML mantém a precisão dos tempos?
Mantém: os dois formatos escrevem 00:00:04.126, então os timecodes saem caractere por caractere como entraram. A duração de cada cue não muda e nada é arredondado.
Como o VTT representa o itálico e a cor embutidos no TTML?
Com tags no texto: <i> para itálico, <b>, <u> e <font color="…"> para as demais ênfases. Essas tags são as que o navegador entende em um cue VTT, mas a tabela <styling> com fonte e contorno não é reproduzida.
O atributo region do TTML chega ao VTT?
Não. O VTT tem recursos próprios para posicionamento, mas esta conversão não os usa: o region e o style apontados pelo <p> são descartados, e cada cue fica na posição padrão do player.
O VTT gerado abre com a linha WEBVTT?
Abre: é a primeira linha do arquivo, e sem ela o formato não é reconhecido. O TTML não tem equivalente, então a linha é acrescentada pela conversão independentemente do conteúdo de origem.
Posso carregar o VTT em um elemento <track> de vídeo?
Pode: a saída é VTT padrão, com cabeçalho, tempos, texto e tags suportadas. A conversão acontece no navegador, sem upload, e vários arquivos podem ser baixados juntos em um ZIP.