Formato de legenda TTML
O que este formato consegue expressar
- Estilo do texto
- Fontes, cor, contorno, sombra
- Posição na tela
- Sim
- Sincronização karaokê
- Não
- Quebras de linha dentro de um bloco
- Sim
- Linha do tempo
- Hora de início e de término para cada bloco
- Resolução dos tempos
- 1 ms
- Tempos guardados como números de quadro
- Não
- Texto da direita para a esquerda
- Sim
Exemplos
Um arquivo TTML típico e o que se lê dele
Arquivo
<?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>
O que ele contém
2 cues, 3 lines of text
00:00:01.000 → 00:00:03.500
Hello there. [italic ×1]
[region="bottom" style="s1"]
00:00:03.500 → 00:00:06.000
How are you?
Fine, thanks.
[region="bottom"]
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
styling 1 × <style> — "s1", the colour and weight a paragraph points at by name
layout 1 × <region> — "bottom", the origin and extent a paragraph points at by name
resolved the head is kept as it was written and is not applied here — a paragraph's style="s1" region="bottom" stays an attribute, not a colour or a screen positionO lado direito não é um arquivo convertido: é o que este site lê do lado esquerdo e o ponto de partida de qualquer conversão desse arquivo.
Um arquivo TTML problemático e o que ainda se lê dele
Arquivo
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<div begin="00:00:01.000" end="00:00:05.000">
<p>Inherits its timing from the div, which we do not resolve.</p>
<p begin="00:00:06.000" end="00:00:07.000">This one has its own timing.</p>
</div>
<!-- <p begin="00:00:08.000" end="00:00:09.000">commented out</p> -->
<div>
<p begin="00:00:10.000"/>
<p begin="00:00:11.000" end="00:00:12.000">Last one.</p>
</div>
</body>
</tt>
O que ele contém
3 cues, 2 lines of text
00:00:06.000 → 00:00:07.000
This one has its own timing.
00:00:10.000 → 00:00:12.000
(no text)
00:00:11.000 → 00:00:12.000
Last one.
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
head none — no <styling> and no <layout>, and no paragraph points at one either
comments the commented-out <p> stays a comment, in the place it was written
divs the timings on an enclosing <div> are not pushed down onto the paragraphs inside it
Reported while reading — repaired or skipped, never silently:
1 × paragraphs with no readable begin time of their own (they were skipped — see the note about timing inherited from an enclosing div)
1 × paragraphs with neither an end time nor a duration of their own (their end times were generated)Arquivos reais chegam com BOM, fins de linha do Windows, uma linha solta antes de um timecode ou um valor que não dá para ler. Nada disso lança exceção: o que não é entendido é reportado, não descartado em silêncio.
Converter TTML (Timed Text) para outro formato
Cada uma destas roda inteiramente no seu navegador. Os rótulos dizem o que aquela direção custa antes de você abri-la.
- Precisão
- Conteúdo específico do formato
- Estilo
- Posição
- Conteúdo específico do formato
- Conteúdo específico do formato
- Tempos
- Estilo
- Posição
- Precisão
- Conteúdo específico do formato
- Estilo
- Posição
- Taxa de quadros
- Conteúdo específico do formato
- Estilo
- Posição
- Conteúdo específico do formato
- Estilo
- Conteúdo específico do formato
- Estilo
- Posição
- Conteúdo específico do formato
- Precisão
- Conteúdo específico do formato
- Tempos
- Estilo
- Posição
- Quebras de linha
- Conteúdo específico do formato
- Estilo
- Posição
- Conteúdo específico do formato
Convertendo para este formato
- SubRip (SRT) → TTML (Timed Text)
- WebVTT (VTT) → TTML (Timed Text)
- Advanced SubStation Alpha (ASS) → TTML (Timed Text)
- SubStation Alpha (SSA) → TTML (Timed Text)
- YouTube SBV → TTML (Timed Text)
- SAMI (SMI) → TTML (Timed Text)
- LRC Lyrics → TTML (Timed Text)
- MicroDVD → TTML (Timed Text)
- SubtitleMatrix JSON → TTML (Timed Text)
- Plain Text (TXT) → TTML (Timed Text)
- CSV Spreadsheet → TTML (Timed Text)
TTML (Timed Text) é um dos formatos de legenda que este site trata, e esta página é a sua referência: o que ele guarda, o que não guarda e uma página para cada formato para o qual dá para converter.
A tabela acima é o retrato completo — não existe lista de recursos escondida. Quando uma linha diz não, é exatamente isso que se perde ao converter para TTML, e cada página de conversão abaixo diz o mesmo antes de você abrir um arquivo.
Todas essas conversões rodam no navegador. Nada é enviado e não há cadastro, o que importa para material sob NDA, prontuário de paciente ou embargo de transmissão.
Perguntas frequentes
O que é um arquivo TTML?
É um documento XML de texto cronometrado usado na transmissão e no streaming: o <head> declara estilos e regiões com nome, e os elementos <p> são as legendas. Perfis como SMPTE-TT e IMSC são construídos sobre ele.
O TTML guarda estilo?
Guarda bastante: a seção <styling> traz estilos nomeados com tts:color, tts:fontWeight e tts:fontFamily, e <layout> traz regiões nomeadas com tts:origin e tts:extent. Um <p> aponta para eles por nome, como style="s1" region="bottom".
O TTML guarda tempo de karaokê?
Não. O arquivo registra quando um cue começa e termina, não quando cada sílaba acende. Por isso converter um ASS com karaokê para TTML perde a marcação por sílaba, e a página de conversão respectiva informa isso.
Como um instante aparece em um arquivo TTML?
Como 00:00:04.126, exato ao milissegundo. O começo pode vir de um deslocamento mais uma duração, como begin="1.5s" dur="2s", ou de um número de quadro como 00:00:07:00 com ttp:frameRate="25".
O que o TTML guarda fora dos cues?
A declaração XML, os namespaces, o <head> inteiro com <styling>, <layout> e <metadata>, além de comentários. Um tempo herdado de um <div> não é resolvido: parágrafos sem begin próprio são pulados e reportados.