YamlBox

Conversores de dados · 5 min de leitura

SRT a VTT: legendas que o navegador irá realmente carregar

Um elemento de vídeo HTML5 ignorará alegremente um arquivo SRT: o elemento `<track>` do navegador carrega WebVTT e nada mais. Converter SRT em VTT é, portanto, uma etapa rotineira na publicação de vídeo na web - e as diferenças entre os dois formatos são menores do que você esperaria, e é exatamente por isso que vale a pena entender a conversão, em vez de tratá-la como uma caixa preta.

Atualizado

O que muda entre SRT e VTT

  • O cabeçalho — os arquivos WebVTT começam com a linha `WEBVTT`, opcionalmente com um título depois dela.
  • Timecodes — SRT escreve `00:00:12,500` com uma vírgula antes dos milissegundos; VTT escreve `00:00:12.500` com um ponto.
  • Identificadores de sugestão — ambos permitem um nome opcional acima da sugestão; VTT os mantém mais úteis para scripts.
  • Códigos de tempo de término — obrigatórios em SRT; VTT pode inferir um fim a partir da próxima deixa, embora explícito seja mais seguro.
  • Recursos extras — VTT adiciona configurações de sinalização, como posição da linha, alinhamento e marcação de texto.

Estilo e marcação segura

WebVTT permite um conjunto limitado de tags dentro de um cue — `<b>`, `<i>`, `<u>` e `<c.classname>` para classes que você estiliza com CSS via `::cue`. Qualquer outra coisa tem maior probabilidade de ser renderizada como texto literal. É também por isso que a conversão deve preservar a formatação simples quando presente e eliminar o que o formato não pode expressar, em vez de escapar da marcação para colchetes angulares visíveis.

                WEBVTT

00:00:12.500 --> 00:00:15.000 align:start
That was the point.
              

Por que é importante além da reprodução

As legendas são um requisito de acessibilidade na maioria das plataformas e também são materiais indexados: uma faixa de texto fornece aos mecanismos de pesquisa e assistentes um script legível por máquina que o áudio por si só não fornece. Um `<track kind="captions">` corretamente codificado está, portanto, cumprindo uma função dupla: cumprir a conformidade e dar ao vídeo uma presença de texto que, de outra forma, não teria.

A codificação é importante: sirva VTT como UTF-8 com um conjunto de caracteres apropriado. Um arquivo com caracteres acentuados salvo em uma codificação legada será renderizado como mojibake no player e parecerá um bug de conversão em vez de um bug de codificação.

O fluxo de trabalho prático

  1. Converta SRT em VTT e verifique o primeiro e o último cue para obter os timecodes corretos.
  2. Salve como UTF-8 com a extensão .vtt e sirva-o com um tipo de conteúdo text/vtt onde você controla o servidor.
  3. Faça referência a ele no elemento video com `<track kind="captions" srclang="en" label="English" default>`.
  4. Carregue o arquivo de legenda junto com o arquivo de vídeo para que os caminhos relativos continuem funcionando após a implantação.

Off-line e instantâneo

Arquivos de legenda são documentos de texto grandes e muitas vezes trabalhos inéditos – o script de um corte de revisão não deve ser carregado em lugar nenhum. O conversor de SRT para VTT neste site é executado no navegador, portanto, uma transcrição de duas horas é convertida em uma fração de segundo, sem sair da sua máquina.

SRT a VTT — perguntas frequentes

Por que meu player de vídeo ignora meu arquivo de legenda?

Quase sempre porque o arquivo é SRT e não WebVTT. HTML5 `<track>` aceita apenas VTT. Converta para VTT, confirme se o arquivo começa com a linha WEBVTT e verifique se os códigos de tempo usam pontos, não vírgulas.

O YouTube e outras plataformas precisam de VTT?

O YouTube aceita uploads de SRT e VTT e os converte internamente, mas a maioria dos players auto-hospedados e todos os elementos de vídeo HTML5 precisam de WebVTT. A conversão antes do upload mantém as legendas renderizadas da mesma forma em todos os lugares.

O WebVTT pode ser estilizado?

Sim — dentro do texto de sugestão você pode usar tags de negrito, itálico e sublinhado, além de extensões de classe, e estilizar classes com CSS contra o pseudoelemento `::cue`. O posicionamento é controlado com configurações de sinalização como linha, posição e alinhamento.

Ferramentas mencionadas nesta postagem

Navegue pela lista completa de 19 ferramentas

Mais artigos para ler

Todas as 19 postagens →