Converter VTT para ASS
Ou cole o texto da legenda
O que esta conversão altera
2 coisas são descartadas ou precisam de uma decisão
- Precisão
a precisão dos tempos — o relógio da saída é mais grosseiro, então cada marca de tempo é arredondada para o 10 ms mais próximo
- 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 reescreve um WebVTT como script Advanced SubStation Alpha, com cabeçalho, tabela de estilo e eventos Dialogue. O texto, as quebras de linha e a ordem dos blocos chegam intactos; o que separa os dois formatos é a sintaxe e a resolução do tempo.
O ASS grava centésimos, então 00:00:04.126 vira 0:00:04.13, com arredondamento para os 10 ms mais próximos e desvio máximo de 5 ms. E o ASS exige uma tabela de estilo, que o WebVTT não tem: um estilo Default é criado — Arial, corpo 20, branco com contorno escuro — e você pode reestilizá-lo depois em qualquer editor ASS.
Não atravessa o que o VTT guarda fora dos blocos: o cabeçalho, os blocos NOTE, STYLE e REGION e os ajustes como align:start ou position:10%. O ASS sabe posicionar, mas faz isso com códigos dentro do texto, como \an7 ou \pos(320,240) — um vocabulário diferente, sem mapeamento direto, então o conversor não adivinha. Um arquivo ou uma temporada inteira, sem envio.
Exemplos
Um arquivo VTT comum, convertido para ASS
Entrada
WEBVTT
intro
00:00:01.000 --> 00:00:04.000
Hello there.
00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.
Saída
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:04.50,0:00:08.00,Default,,0,0,0,,Second line with {\i1}italics{\i0}.
Descartado nesta saída: o milésimo, arredondado a centésimo, e a sintaxe exclusiva do WebVTT. O resto confere linha por linha.
A mesma conversão com uma entrada problemática
Entrada
a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.
Saída
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,No header, two lines before the timecode.
Cabeçalho ausente, fins de linha misturados e uma linha solta antes do carimbo: compare com o exemplo organizado acima para ver o que o analisador perdoa.
Perguntas frequentes
Meus tempos do VTT são arredondados no ASS?
São, ao centésimo mais próximo. Um bloco que começa em 00:00:01.234 vira 0:00:01.23, com desvio máximo de 5 ms. Na tela é imperceptível; numa comparação quadro a quadro com outro arquivo, pode aparecer.
De onde vem a tabela de estilos que eu não escrevi?
De uma exigência do formato: toda linha Dialogue aponta para um estilo, então o script precisa declarar pelo menos um. O conversor cria Default com Arial 20 e contorno escuro; se você mudar essa linha do cabeçalho, o arquivo inteiro muda junto.
O que acontece com align:start e position:10%?
São descartados e reportados. O ASS posiciona com códigos dentro do texto, como \an7 para o canto superior esquerdo, e não há tradução de um para o outro sem inventar valores; o conversor deixa o texto em paz.
Os blocos STYLE e REGION do VTT sobrevivem?
Não. São construtos específicos do WebVTT e não têm contrapartida no ASS. O STYLE é o mais sensível, porque pode carregar o layout do documento todo; essa aparência terá de ser refeita no script.
Duas linhas dentro de um bloco continuam juntas no ASS?
Continuam, unidas pelo código de quebra do ASS dentro de um único evento Dialogue. O tempo do evento é o tempo do bloco, então as duas linhas entram e saem juntas.
O ASS de saída preserva a ordem do VTT?
Preserva, e reordena pelo início se o arquivo de origem estiver fora de sequência. O renderizador lê os eventos na ordem em que aparecem, então a sequência de escrita é a sequência de exibição.