Converter ASS para SMI
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 exceto negrito e itálico (cor, contorno, sombra, margens)
- Karaokê
a sincronização karaokê (destaque por sílaba)
- 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 um script ASS para SAMI (SMI). O SAMI é um documento HTML com bloco STYLE, classes e uma sequência de tags SYNC, usado por anos pelo Windows Media e por caixas de TV.
O que sobrevive é a ênfase escrita no texto: negrito, itálico, sublinhado e cor viram tags, que o navegador aplica. O que não sobrevive é a tabela de estilo do ASS — fonte, corpo, contorno, sombra e margens —, porque o SMI deixa a aparência para a página que o incorpora e para o próprio CSS.
O karaokê também não tem como ser levado: os códigos de sílaba somem e as palavras ficam. E o script fora dos eventos Dialogue: — [Script Info], Comment:, [Fonts], [Graphics] — não vira legenda em lugar nenhum. Um arquivo ou uma temporada inteira, no navegador.
Exemplos
Um arquivo ASS comum, convertido para SMI
Entrada
[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0
[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left
Saída
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>
<SYNC Start=5000>
<P><i>Italic</i> and <b>bold</b> text.
<SYNC Start=8500>
<P>
<SYNC Start=9000>
<P>Positioned
<SYNC Start=12000>
<P>
<SYNC Start=13000>
<P><c>ka</c><c>ra</c><c>o</c><c>ke</c>
<SYNC Start=16000>
<P>
<SYNC Start=17000>
<P>Line one<br>Line two
<SYNC Start=20000>
<P>
<SYNC Start=21000>
<P>Top left
<SYNC Start=24000>
<P>
</BODY>
</SAMI>
Descartado nesta saída: estilo declarado, karaokê e o resto do script. O resto confere linha por linha.
A mesma conversão com uma entrada problemática
Entrada
[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecodeSaída
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello, world
<SYNC Start=4000>
<P>
<SYNC Start=5000>
<P>{\fad(300,300)}Unmodelled override
<SYNC Start=8000>
<P>
<SYNC Start=9000>
<P>Both, wrong order
<SYNC Start=12000>
<P>
<SYNC Start=13000>
<P>One decimal centisecond
<SYNC Start=16500>
<P>
<SYNC Start=17000>
<P>Soft<br>break
<SYNC Start=20000>
<P>
</BODY>
</SAMI>
É o tipo de dano que scripts reais trazem: BOM, fins de linha misturados e um carimbo com um decimal só. Compare com o exemplo organizado acima para ver o que o analisador perdoa.
Perguntas frequentes
Que estilo do ASS o SMI recebe?
A ênfase embutida no texto: negrito, itálico, sublinhado e cor viram tags de HTML que o navegador aplica. A tabela de estilo declarada — família, corpo, contorno, sombra e margens — não é levada; a página que exibe as legendas define isso no próprio CSS.
O karaokê do ASS sobrevive no SMI?
Não. O SAMI não registra instantes dentro de uma linha, então os códigos de karaokê são retirados e as sílabas chegam como texto comum, na ordem certa e sem destaque.
O [Script Info] e os anexos viram alguma coisa?
Não. Só os eventos Dialogue: viram legendas; o bloco [Script Info], inclusive o título, as linhas Comment: e o conteúdo de [Fonts] e [Graphics] não têm destino no SAMI e são descartados.
As posições do ASS se perdem no SMI?
Não é o que a lista acima diz: o SMI tem como declarar região e classe, então posicionamento não aparece entre as perdas desta direção — o que se perde é a tabela de estilo, não a possibilidade de colocar texto numa região.
Como fica a saída do SMI?
Um documento com bloco STYLE, corpo e tags SYNC. Cada evento vira um SYNC Start=4130 com o texto num P, seguido de um P com espaço forçado que limpa a tela, porque um SYNC substitui o que estava visível.
Os tempos do ASS mudam na conversão?
Não. O ASS escreve 0:00:04.13 e o SMI escreve Start=4130 para o mesmo instante; o centésimo é convertido em milissegundos sem arredondamento, então a sincronia é exata.