Converter TTML para SRT
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 (negrito, itálico, cor, contorno, sombra)
- 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 SRT. Arraste um arquivo ou cole o texto e receba a versão SRT de volta. A conversão roda inteiramente no navegador, então nada é enviado e não há cadastro.
Cada <p> do TTML vira um bloco SRT numerado, com os mesmos tempos ao milissegundo e a vírgula decimal que o formato pede: 00:00:01,000 --> 00:00:03,500. O <br/> vira uma quebra de linha, e as duas linhas continuam no mesmo bloco.
A ênfase escrita dentro do parágrafo sobrevive como tag de texto: um span em itálico vira <i>there</i>, e o mesmo vale para <b>, <u> e <font color="…">. O que se perde é tudo o que o arquivo dizia globalmente: declaração XML, namespaces, tabela <styling> com fonte e contorno, tabela <layout> com as regiões, metadados e referências style e region. O processamento é local e o lote baixa em ZIP.
Exemplos
Um arquivo TTML típico, convertido para SRT
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
1
00:00:01,000 --> 00:00:03,500
Hello <i>there</i>.
2
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
1
00:00:01,500 --> 00:00:03,500
Loaded from an offset and a duration.
2
00:00:04,000 --> 00:00:06,500
A coarser clock spelling.
3
00:00:07,000 --> 00:00:08,480
Frames, at 25fps.
4
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 SRT gerado a partir do TTML mantém os tempos exatos?
Mantém, ao milissegundo. O TTML grava 00:00:04.126 e o SRT grava 00:00:04,126, apenas trocando o ponto pela vírgula; nenhum valor é arredondado e a duração de cada cue se conserva.
O itálico de um span TTML chega ao SRT como marcação?
Chega como <i>texto</i> dentro do bloco, e as demais ênfases seguem o mesmo caminho com <b>, <u> e <font color="…">. O estilo nomeado da tabela <styling>, por outro lado, não tem como ser reproduzido.
As regiões e a posição na tela do TTML sobrevivem no SRT?
Não. O SRT não descreve posição, então o region e o style do <p> são descartados e o player escolhe onde desenhar; na maioria das vezes, a parte de baixo da tela, centralizado.
Como fica a numeração dos blocos quando o TTML vira SRT?
O TTML não numera parágrafos; o SRT cria uma sequência começando em 1. Cada <p> recebe um número na saída, e esse número serve apenas para leitura humana, sem correspondência com o original.
O cabeçalho do TTML aparece de alguma forma no SRT?
Não. A declaração XML, os namespaces, <styling>, <layout>, <metadata> e os atributos style e region não têm campo no SRT. A saída contém apenas os blocos com número, tempos e texto.