Ir para o conteúdo principal
SubtitleMatrix

Converter ASS para SRT

Conversão de formatosAdvanced SubStation Alpha (ASS)
Ou cole o texto da legenda

O que esta conversão altera

4 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)

  • 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 achata um script Advanced SubStation Alpha em SRT puro. O ASS trata a legenda como texto desenhado por um motor de estilo; o SRT trata como uma linha de texto exibida entre dois carimbos. A linha do tempo é preservada, reescrita de 0:00:01.00 para 00:00:01,000, e as palavras também.

O que o script diz sobre desenho não tem para onde ir. Posição na tela, fonte, contorno, sombra e o tempo por sílaba do karaokê são instruções para o renderizador, e o SRT não tem renderizador para instruir — são descartados, não contrabandeados como marcação falsa. A formatação que o SRT consegue expressar é traduzida: um trecho em itálico vira tag de itálico, um trecho em negrito vira tag de negrito.

Cada perda aparece listada abaixo da caixa de arquivo, então o custo está na tela antes de você converter. Uma temporada inteira é aceita: os arquivos passam um de cada vez, o lote pode ser interrompido e o resultado desce num ZIP. Nada é enviado.

Exemplos

Um arquivo ASS comum, convertido para SRT

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

1
00:00:01,000 --> 00:00:04,000
Hello there.

2
00:00:05,000 --> 00:00:08,500
<i>Italic</i> and <b>bold</b> text.

3
00:00:09,000 --> 00:00:12,000
Positioned

4
00:00:13,000 --> 00:00:16,000
<c>ka</c><c>ra</c><c>o</c><c>ke</c>

5
00:00:17,000 --> 00:00:20,000
Line one
Line two

6
00:00:21,000 --> 00:00:24,000
Top left

Descartado nesta saída: estilo declarado, posição e karaokê. 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 timecode

Saída

1
00:00:01,000 --> 00:00:04,000
Hello, world

2
00:00:05,000 --> 00:00:08,000
{\fad(300,300)}Unmodelled override

3
00:00:09,000 --> 00:00:12,000
Both, wrong order

4
00:00:13,000 --> 00:00:16,500
One decimal centisecond

5
00:00:17,000 --> 00:00:20,000
Soft
break

É 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

O que o ASS tem que o SRT não consegue representar?

Fonte, cores, contorno, sombra, margens, posição na tela e o tempo por sílaba do karaokê. Todos são instruções de renderização, e o SRT não tem nenhuma noção de renderização: guarda texto e dois carimbos.

Meu itálico e negrito desaparecem na conversão?

Não. Os códigos de itálico e negrito do ASS viram tags no texto do SRT, que tocadores leem. O que se perde é a camada declarada na tabela de estilo: família de fonte, corpo, cores, contorno, sombra e margens.

E o karaokê, o que acontece com ele?

A marcação de tempo por sílaba é descartada; as sílabas continuam no texto, como palavras comuns. Perde-se o destaque progressivo, não as letras — o SRT não registra instantes dentro de uma linha.

As posições na tela sobrevivem de algum jeito?

Não. Códigos como \pos(320,240) e \an7 são instruções de layout do ASS e não têm contraparte no SRT. O conversor não transforma posição em tag nem inventa coordenadas: descarta e reporta.

Os tempos do script chegam exatos ao SRT?

Chegam: 0:00:01.00 e 00:00:01,000 nomeiam o mesmo instante. A notação muda de centésimo para milésimo, mas o valor é copiado, não arredondado — o ASS não tinha nada mais fino para perder.

O tempo de um bloco de duas linhas continua um só?

Continua. O evento Dialogue tem um início e um fim, e as duas linhas se tornam duas linhas do mesmo bloco SRT; o SRT não tem como separá-las em dois tempos.

Ferramentas relacionadas