FreeToGenerate.com

O conselho do costume — troque a vírgula por um ponto e ponha WEBVTT no topo — parte em silêncio qualquer legenda que tenha um e comercial.

O WebVTT define b, i, u, ruby, v, lang e c. Essas ficam; qualquer outra passa a texto literal, porque uma etiqueta que o WebVTT não conhece não é marcação.

Cole um ficheiro de legendas para o converter.

Também disponível em: English · Español · Français · العربية

Converter SRT para VTT

De SubRip para WebVTT com o escape de caracteres que a norma realmente exige, e um relatório de cada decisão que a conversão tomou.

O que é converter SRT para VTT

O SubRip, o formato .srt, é o ficheiro de legendas que quase toda a gente tem: um bloco numerado, uma hora de entrada e outra de saída, e uma ou duas linhas de texto. O WebVTT, o formato .vtt, é o que os navegadores reproduzem de facto. O elemento video do HTML não carrega um .srt de todo, portanto pôr legendas numa página web passa por converter um no outro.

Os dois formatos são tão parecidos que a conversão tem fama de trivial. As diferenças visíveis são que os ficheiros WebVTT começam pela palavra WEBVTT e que as marcas temporais usam um ponto antes dos milissegundos onde o SubRip usa uma vírgula. Quase todos os guias ficam por aí.

Esse conselho está incompleto de uma maneira que faz estragos a sério, e o resto desta página é sobre a parte que eles deixam de fora. Este conversor corre inteiramente no seu navegador e comunica-lhe cada alteração que fez, em vez de a aplicar caladamente.

Como usar

  1. Cole o seu ficheiro .srt na primeira caixa. Abra-o em qualquer editor de texto e copie o conteúdo. Nada é enviado: a conversão acontece neste separador à medida que escreve.
  2. Escolha o que fazer com a formatação e a numeração. Manter as etiquetas de formatação preserva aquelas que o WebVTT define mesmo e passa as restantes a texto literal. Os números das legendas podem ser mantidos como identificadores do WebVTT ou retirados, já que o WebVTT não os exige.
  3. Copie o resultado ou descarregue-o como ficheiro .vtt. Leia antes o relatório em baixo. Enumera tudo o que a conversão teve de decidir — caracteres escapados, etiquetas mantidas ou passadas a texto, coordenadas descartadas, blocos ilegíveis — para que saiba exactamente o que mudou.

O escape que quase todos os conversores erram

Aqui está o que os guias saltam. O WebVTT é uma norma do W3C, e a sua secção 4.2 define um troço de texto de legenda como uma sequência de caracteres diferentes de mudança de linha, retorno de carro, U+0026 E COMERCIAL e U+003C SINAL DE MENOR. Esses dois caracteres não podem aparecer literalmente no texto de uma legenda WebVTT: têm de ser escritos como referências de carácter HTML, & e <.

O SubRip não tem essa regra, porque o SubRip não tem regra nenhuma em sentido formal. Portanto uma legenda que diga Tom & Jerry, ou uma que diga 5 < 6, é SubRip perfeitamente vulgar e WebVTT mal formado. Um conversor que só troca a vírgula por um ponto produz um ficheiro partido de uma maneira que não vai notar até que um leitor engula o texto ou desenhe algo estranho, porque um sinal de menor sem escape abre aquilo que o analisador toma por uma etiqueta.

Isto não é matéria de interpretação, e convém verificar em vez de acreditar. Passando a conversão ingénua de Tom & Jerry < 5 pelo analisador de referência do WebVTT, o que os próprios editores da norma publicam, saem três erros: um escape incorrecto, uma etiqueta de abertura que só v e lang podem anotar, e uma etiqueta de abertura incorrecta. Passando pelo mesmo analisador a saída deste conversor, não sai nenhum, em todos os ficheiros de teste.

A ferramenta escapa o e comercial antes do sinal de menor, o que parece um pormenor e não é. Ao contrário, os e comerciais das entidades que acabou de escrever seriam escapados uma segunda vez, e &lt; passaria a &amp;lt;, que aparece no ecrã como marcação em vez de como um carácter.

O SubRip não tem norma, por isso o conversor comunica os seus palpites

O WebVTT tem uma norma que se pode consultar. O SubRip não tem nenhuma em lado nenhum: está definido inteiramente pelo que os leitores aceitam, portanto lê-lo é uma sucessão de decisões. Os ficheiros reais usam um ponto em vez de uma vírgula, dispensam as horas nas marcas temporais, omitem os números de sequência, separam os blocos com linhas só de espaços em vez de linhas verdadeiramente vazias, e começam por uma marca de ordem de bytes. Tudo isso é aceite aqui, e cada coisa é contada.

Contar é precisamente o objectivo. Como não há autoridade a que recorrer, o que um conversor pode fazer de honesto é dizer-lhe o que decidiu. O relatório enumera quantos e comerciais e sinais de menor foram escapados, quantas etiquetas de formatação foram mantidas por oposição às que passaram a texto, quantas marcas temporais vinham sem horas, quantas legendas não traziam número e se foi removida uma marca de ordem de bytes.

Comunica também problemas que já vinham no seu ficheiro, em vez de os reparar em silêncio: legendas cuja hora de saída precede a de entrada, legendas que duram zero e legendas que começam antes de a anterior acabar. As invertidas são emitidas na ordem que o WebVTT exige, porque de outro modo o analisador de referência as rejeita, mas o facto de ter acontecido é comunicado em vez de escondido.

Os blocos que não se conseguem ler ficam fora do resultado e são-lhe mostrados por inteiro. Um conversor que descarta em silêncio o que não percebe é pior do que um que falha alto, porque só dá por isso quando alguém vê o vídeo.

Limites honestos

Os ficheiros SubRip que circulam trazem por vezes coordenadas X1, X2, Y1 e Y2 na linha dos tempos, para colocar a legenda no ecrã. São descartadas, e o número é comunicado. O WebVTT exprime a posição através de definições de legenda medidas em percentagens do vídeo, que é um modelo genuinamente diferente, e não há maneira fiel de passar de um ao outro sem conhecer as dimensões do vídeo. Uma posição errada é pior do que nenhuma, portanto a ferramenta recusa-se a adivinhar.

As etiquetas de formatação são tratadas segundo o que o WebVTT define mesmo: b, i, u, ruby, rt, v, lang e c. Essas sobrevivem. Uma etiqueta font com um atributo de cor, muito comum no SubRip, não é marcação do WebVTT, portanto passa a texto literal e é contada como tal. É deliberado e é a leitura honesta: deixá-la tal como está daria um ficheiro que o analisador de referência rejeita, e apagá-la em silêncio perderia conteúdo que talvez queira.

Isto converte texto, não ficheiros. Cole o conteúdo em vez de largar um ficheiro, o que ainda por cima deixa a questão da codificação entregue ao seu editor de texto em vez de adivinhada aqui. O WebVTT tem de ser UTF-8; se o seu .srt estiver numa codificação antiga do Windows, abra-o e volte a guardá-lo como UTF-8 ou os acentos não sobrevivem.

Por fim, converte num só sentido. O WebVTT admite regiões, blocos de estilo e definições de legenda que o SubRip não consegue exprimir, portanto ir ao contrário perderia coisas em silêncio, que é exactamente a falha de que esta página se queixa.

Porque é grátis

Porque não custa nada manter. A conversão acontece no seu navegador à medida que escreve. Nada é enviado, nada é registado e nenhum servidor vê as suas legendas, porque não há servidor nenhum pelo meio.

Nem conta, nem registo, nem marca de água, nem limite de tamanho para além do que o seu próprio navegador aguentar. As regras de escape saem da norma WebVTT do W3C, e a saída é verificada com o analisador de referência publicado pelos editores dessa norma, e não com a ideia que outro sítio tenha do que é um ficheiro .vtt.