Pular para o conteúdo
Free Subtitle Converter
Idioma
Tema de cores
Apoie-nos

Legendas em XML explicadas: TTML, DFXP e IMSC

O que são arquivos de legenda TTML, DFXP e IMSC, como funcionam os tempos deles e exatamente o que o conversor deste site lê e o que deixa de fora.

Por Syed Peera Saheb · Publicado

A resposta curta

TTML, DFXP e IMSC são arquivos de legenda em XML baseados na Timed Text Markup Language do W3C. DFXP é um nome antigo do TTML, e o IMSC é um perfil dele usado em entregas para streaming e TV.

Se você tem um arquivo de legenda .ttml, .dfxp ou .xml e precisa de SRT ou VTT, o conversor deste site consegue ler o texto, os tempos, as quebras de linha e o itálico, negrito e sublinhado. Ele não mantém posições, cores nem fontes, e não lê todo arquivo XML que contém legendas.

Uma família, vários nomes

O TTML é um padrão do W3C para texto sincronizado. Enquanto estava sendo escrito, ele se chamava DFXP, Distribution Format Exchange Profile, e a especificação TTML 1 ainda observa que o nome antigo sobrevive em nomes de perfis e extensões de arquivo. Na prática, um arquivo .dfxp e um arquivo .ttml contêm o mesmo tipo de documento. O TTML2 é a segunda versão e acrescenta mais recursos.

Como o TTML é extenso, os setores definem perfis: subconjuntos que dizem quais recursos um arquivo pode usar. O IMSC, perfil Internet Media Subtitles and Captions, é um dos mais comuns. Suas versões atuais definem um perfil só de texto e um perfil só de imagem. O EBU-TT é um perfil usado por emissoras europeias, e o SMPTE-TT é usado nas emissoras americanas. Todos começam com um elemento raiz <tt>.

Como é um arquivo TTML

Um documento TTML tem um head e um body. O head pode definir estilos, como uma fonte ou uma cor, e regiões, que são áreas da tela. O body contém parágrafos, elementos <p>, cada um com um tempo de início e de fim e o texto da legenda. Um <br/> começa uma nova linha, e elementos <span> formatam ou sincronizam partes de uma linha.

Um arquivo TTML curto
<?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:tickRate="10000000">
  <head>
    <styling><style xml:id="it" tts:fontStyle="italic" tts:color="yellow"/></styling>
    <layout><region xml:id="top" tts:origin="10% 5%" tts:extent="80% 20%"/></layout>
  </head>
  <body>
    <div>
      <p begin="12000000t" end="35000000t" region="top">Hello<br/><span style="it">there</span></p>
    </div>
  </body>
</tt>

Como funcionam os tempos no TTML

O TTML permite várias formas de escrever um tempo. Tempos de relógio são como 00:00:01.200, ou 00:00:01:05, com um número de quadro no final. Tempos de offset são um número com uma unidade: 1.2s, 1200ms, 30f para quadros ou 12000000t para ticks. Ticks são comuns em arquivos de serviços de streaming; o tickRate do elemento raiz diz quantos ticks formam um segundo, então, com um tickRate de 10.000.000, 12000000t equivale a 1,2 segundo.

Os tempos também podem ser relativos. Um div pode ter seu próprio tempo de begin, ao qual os parágrafos dentro dele somam os seus, um parágrafo pode informar uma duração em vez de um tempo de fim, e um parágrafo sem tempos pode tirá-los dos seus spans. É por isso que ferramentas simples de localizar e substituir costumam errar os tempos do TTML.

O que este site lê

O conversor reconhece o TTML pelo elemento raiz <tt>, seja qual for a extensão do arquivo, então arquivos .ttml, .dfxp e .xml abrem todos. O exemplo acima vira uma legenda de 1,2 a 3,5 segundos com duas linhas, a segunda em itálico. Em detalhes, ele lê:

  • Tempos de relógio com frações ou quadros, e tempos de offset em horas, minutos, segundos, milissegundos, quadros e ticks.
  • As configurações frameRate, frameRateMultiplier, subFrameRate e tickRate do elemento raiz. Sem um tickRate, ele calcula um a partir da taxa de quadros, ou usa um tick por segundo, como a especificação descreve.
  • Begin, end e dur em parágrafos e spans, somando os tempos de begin do body e dos divs que os contêm.
  • Quebras de linha escritas como <br/>.
  • Itálico, negrito e sublinhado, sejam definidos diretamente em um elemento ou por um estilo nomeado.
  • Elementos com prefixo de namespace, como <tt:p> em arquivos EBU-TT e alguns IMSC. Metadados, como notas para editores, são ignorados e nunca viram texto de legenda.

O que ele deixa de fora

O conversor mantém as palavras e os tempos e descarta a apresentação. Regiões e posições, cores, fontes, tamanhos, fundos, contornos e configurações de direção do texto não são transferidos. Se um arquivo mostra dois parágrafos ao mesmo tempo em regiões diferentes, por exemplo dois falantes no alto e embaixo, eles viram duas legendas sobrepostas; o verificador de legendas vai apontá-las.

Alguns arquivos de legenda em XML nem são TTML, e a página avisa que não os reconhece como legendas. Isso inclui o próprio XML timedtext do YouTube, cujo elemento raiz é <timedtext> ou <transcript>, e não <tt>. Arquivos IMSC baseados em imagem, que guardam imagens do texto, não têm texto para ler. Modos de tempo incomuns, como timecodes SMPTE drop-frame, não recebem tratamento especial, então compare algumas legendas perto do fim da prévia com o vídeo.

O que ele grava

Quando você converte para TTML ou DFXP, o conversor grava um documento TTML 1 simples: cada legenda vira um parágrafo com tempos de begin e end em formato de relógio, em milissegundos, as quebras de linha viram <br/>, e itálico, negrito e sublinhado viram spans com o atributo de estilo correspondente. Não há head com estilos ou regiões, então os players usam a aparência padrão. A opção DFXP grava o mesmo documento com a extensão .dfxp.

O atributo de idioma do elemento raiz fica vazio, porque o conversor não tem como saber em que idioma estão as suas legendas. Algumas plataformas o exigem. Se for o caso da sua, abra o arquivo em um editor de texto e preencha xml:lang com um código como en ou es antes de enviá-lo.

O arquivo que o conversor grava a partir do exemplo
<?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="">
  <body>
    <div>
      <p begin="00:00:01.200" end="00:00:03.500">Hello<br/><span tts:fontStyle="italic">there</span></p>
    </div>
  </body>
</tt>

Como converter TTML ou DFXP para SRT ou VTT

A conversão leva alguns segundos, e o arquivo fica no seu dispositivo.

  • Abra o conversor de TTML para SRT ou de DFXP para SRT, ou o conversor principal, e escolha o seu arquivo .ttml, .dfxp ou .xml.
  • Confira o resumo. Ele informa quantas legendas foram encontradas e se algum parágrafo tinha tempos que não puderam ser lidos.
  • Escolha o formato de saída, como SRT ou VTT, e confira a prévia.
  • Reproduza o resultado com o seu vídeo e compare uma legenda perto do início e outra perto do fim, caso o arquivo use um modo de tempo que o conversor não trata.
  • Baixe o arquivo. Ele é salvo em UTF-8.

Quando usar TTML, e quando não usar

Use TTML ou DFXP quando uma plataforma, serviço de streaming ou emissora pedir; as especificações de entrega deles geralmente indicam um perfil, e um arquivo TTML 1 simples pode ou não atendê-lo. No dia a dia, em players, editores e plataformas de vídeo, SRT ou WebVTT é mais simples e tem mais suporte. Se você recebeu um arquivo TTML e só quer assisti-lo ou editá-lo, converta-o para SRT.

Guarde o arquivo original de qualquer forma. Converter para SRT descarta de vez as regiões e os estilos, então, se mais tarde você precisar entregar TTML de novo com as posições originais, vai querer a fonte original, e não um TTML reconstruído a partir do SRT.

Perguntas comuns

DFXP é o mesmo que TTML? Na prática, sim. DFXP era o nome usado enquanto o TTML estava sendo elaborado, e o conversor trata os dois da mesma forma.

Por que meu arquivo .xml diz que não é um arquivo de legenda? Ou ele não é TTML, como o XML timedtext do YouTube, ou não contém um elemento raiz <tt>. O conversor não lê esses arquivos.

O SRT convertido mantém a posição de cada legenda? Não. O SRT não tem um jeito padrão de posicionar legendas, e o conversor não transfere as regiões do TTML para nenhum formato.

Abrir o conversor de legendas
Me pague um café