Converter SMI para TTML
Ou cole o texto da legenda
O que esta conversão altera
1 coisa é descartada ou precisa de uma decisã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 SMI em TTML. Arraste um arquivo — ou cole o texto — e receba de volta a versão TTML. A conversão roda inteiramente no seu navegador, então nada é enviado e não é preciso criar conta.
Os dois formatos não guardam as mesmas coisas, e a diferença não é cosmética: conteúdo específico do formato não tem onde ficar no TTML — o bloco `<STYLE>` do SAMI não se torna a tabela de estilos do TTML, e o `<TITLE>` não vira metadado. A lista acima vem do que cada formato consegue expressar, não do seu arquivo, então a resposta é a mesma antes de você carregar qualquer coisa.
Um arquivo só está ótimo, e uma temporada inteira também: a fila processa na ordem, você pode parar no meio e os resultados descem juntos num único ZIP.
Exemplos
Um arquivo SMI típico, convertido para TTML
Entrada
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>
</BODY>
</SAMI>
Saída
<?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>
<p begin="00:00:01.000" end="00:00:03.000">Hello there.</p>
<p begin="00:00:03.500" end="00:00:06.000">How are you?<br/>Fine, thanks.</p> </body>
</tt>
Perdido nesta saída: conteúdo específico do formato. Todo o resto bate linha por linha.
A mesma conversão num arquivo problemático
Entrada
<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom & Jerry
<SYNC Start=12000>
<P Class=ENCC>
</BODY>
</SAMI>
Saída
<?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>
<p begin="00:00:02.500" end="00:00:09.000">Line one<br/>Line two</p>
<p begin="00:00:09.000" end="00:00:12.000">Tom & Jerry</p> </body>
</tt>
É o tipo de dano que arquivos reais têm — fim de linha misturado, espaço solto, campo vazio. Compare com o exemplo organizado acima para ver o que o analisador perdoa.
Perguntas frequentes
O que acontece com o bloco `<STYLE>`, o `<TITLE>` e os atributos `Class=` do SAMI no TTML?
São descartados. O SAMI diz como suas legendas se parecem fora do texto do bloco: um bloco `<STYLE>` com CSS para os parágrafos, um `<TITLE>` e o marcador de canal que cada parágrafo carrega — `Class=ENCC`, que aponta para uma dessas regras. O TTML tem os próprios mecanismos de estilo, região e metadados, mas nada mapeia o CSS nem o título do SAMI para eles, então não há onde nada disso ficar. A ênfase escrita dentro do texto do próprio bloco não é afetada — ela pertence à linha —, e os blocos chegam com texto e tempos inteiros.
Como fica a saída quando SMI vira TTML?
Como TTML: sem números de bloco: cada legenda é um elemento `<p>` com atributos `begin` e `end`, aninhado num `<body>` (e normalmente num `<div>`), com uma declaração XML acima do documento inteiro. Cada bloco SMI vira um bloco TTML, na mesma ordem e com o mesmo texto.
Os tempos SMI ficam exatos no arquivo TTML?
Sim, ao milissegundo — que é o máximo dos dois formatos. O SMI escreve um instante como `Start=4126` e o TTML escreve o mesmo instante como `00:00:04.126`; nada é arredondado nem deslocado entre os dois, e um bloco que ficou 2,9 segundos na tela continua com 2,9 segundos.
Como sai um bloco SMI de duas linhas no TTML?
Como duas linhas com um `<br/>` entre elas, que é como o TTML escreve uma quebra de linha dura. O par sobrevive — as duas linhas SMI ainda pertencem a uma legenda só na saída TTML, e o reprodutor mostra as duas juntas.
Os blocos SMI mantêm a ordem na saída TTML?
Mantêm, e são ordenados pelo horário de início no caminho — o mais cedo primeiro, que é como todo formato daqui espera e como os reprodutores leem. Se o seu arquivo SMI listava os blocos fora de sequência, a saída TTML os põe em ordem; isso muda a estrutura do arquivo, não o conteúdo, e é de propósito.
Dá para converter o TTML de volta para SMI?
Dá, e essa direção tem lista própria: converter TTML para SMI perde estilo e conteúdo específico do formato. A lista é diferente da acima porque os dois formatos guardam coisas diferentes.
A saída TTML preserva a codificação do arquivo SMI?
Não — a saída é UTF-8, com fim de linha Unix e sem marca de ordem de bytes, seja qual for a codificação do arquivo SMI. Um arquivo em UTF-16 ou numa codificação Windows de um byte é decodificado na entrada (o painel de resultado avisa quando isso acontece); o que sai é sempre o mesmo TTML em UTF-8.