Ir para o conteúdo principal
SubtitleMatrix

Converter TTML para CSV

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 CSV. Arraste um arquivo ou cole o texto e receba a versão CSV de volta. A conversão roda inteiramente no navegador, então nada é enviado e não há cadastro.

O CSV resultante tem a linha start,end,text e um registro por cue. Os tempos do TTML são copiados ao milissegundo, com ponto decimal, sem arredondamento. A ênfase que está dentro do parágrafo continua no texto da célula como tags: <i>, <b>, <u> e <font color="…">, e um cue de duas linhas fica em uma célula só, entre aspas.

O cabeçalho do TTML não tem para onde ir: a declaração XML, a tabela <styling> com fontes e contornos, a tabela <layout> com as regiões, os metadados e os atributos style e region se perdem, e cada cue volta à posição padrão do player. A fila processa vários arquivos e entrega tudo em um ZIP.

Exemplos

Um arquivo TTML típico, convertido para CSV

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

start,end,text
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 &amp; Jerry.</p>
    </div>
  </body>
</tt>

Saída

start,end,text
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 &amp; 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

Que colunas o CSV gerado a partir do TTML traz?

Três: start, end e text, com uma linha de cabeçalho no topo. Cada cue do TTML vira uma linha de dados, e os tempos mantêm o formato 00:00:01.000 do original, com ponto decimal.

A cor e o itálico do TTML aparecem na célula de texto do CSV?

A ênfase aparece como tags no texto: <i>there</i> para itálico, <b>, <u> e <font color="…"> para as demais. O que não vem é a tabela de estilos do <head> — fonte, tamanho, contorno, sombra e margens ficam fora.

Os tempos do TTML são arredondados ao virar CSV?

Não. Os dois formatos escrevem um instante como 00:00:04.126, então os timecodes saem caractere por caractere como entraram, sem perda de precisão e sem deslocamento.

Como fica um cue de duas linhas na célula do CSV?

As duas linhas ficam na mesma célula text, separadas por quebra de linha e envolvidas por aspas, que é a forma que o CSV exige. O par continua sendo um único registro.

O CSV gerado pode ser aberto em uma planilha?

Pode: é CSV padrão, com cabeçalho, vírgulas e aspas nos campos multilinha. A conversão acontece no navegador, então uma planilha com material confidencial não passa por servidor nenhum.

Ferramentas relacionadas