Converter TTML para SBV
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 SBV. Arraste um arquivo ou cole o texto e receba a versão SBV de volta. A conversão roda inteiramente no navegador, então nada é enviado e não há cadastro.
Cada cue do TTML vira um bloco SBV com uma linha de tempos como 0:00:01.000,0:00:03.500 e o texto abaixo, sem número de cue e sem cabeçalho. Os tempos mantêm a precisão do original, ao milissegundo, e as duas linhas de um cue continuam uma embaixo da outra.
O que se perde é a aparência global do documento: a declaração XML, a tabela <styling> com fontes e contornos, a tabela <layout> com as regiões, os metadados e as referências style e region. A ênfase escrita dentro do parágrafo, porém, é mantida como tag no texto: <i>, <b>, <u> ou <font color="…">. A fila aceita vários arquivos e baixa tudo em um ZIP.
Exemplos
Um arquivo TTML típico, convertido para SBV
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
0:00:01.000,0:00:03.500
Hello <i>there</i>.
0:00:03.500,0: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
0:00:01.500,0:00:03.500
Loaded from an offset and a duration.
0:00:04.000,0:00:06.500
A coarser clock spelling.
0:00:07.000,0:00:08.480
Frames, at 25fps.
0:00:09.000,0: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
Como é a linha de tempo do SBV gerada a partir do TTML?
Cada cue produz uma linha no formato 0:00:01.000,0:00:03.500, com os dois horários separados por vírgula e o ponto como separador de milésimos. O texto vem na linha seguinte.
O SBV preserva a precisão de milissegundos do TTML?
Preserva. O TTML grava 00:00:04.126 e o SBV grava 0:00:04.126; nada é arredondado ou deslocado entre os dois, e um cue de 2,9 segundos continua com 2,9 segundos.
O itálico de um parágrafo TTML sobrevive no SBV?
Sobrevive como tag <i> dentro do texto, e o mesmo vale para <b>, <u> e <font color="…">. O que não sobrevive é a tabela de estilos do <head>: fonte, tamanho, contorno, sombra e margens se perdem.
O que acontece com as regiões e a posição na tela ao converter para SBV?
São descartadas. O SBV não diz onde a legenda é desenhada, então o region e o style apontados pelo <p> não têm destino, e cada cue volta à posição padrão do player.
O SBV gerado mantém a ordem dos cues do TTML?
Mantém, com ordenação pelo início: a saída coloca os cue em ordem crescente. Se o TTML listava os parágrafos fora de sequência, isso muda a estrutura do arquivo, mas não o conteúdo de cada legenda.