Vídeo e legendas · Kit de ferramentas de legendas
Por que um arquivo de legenda é reproduzido em VLC, mas falha no elemento de faixa HTML5
· Como funciona
legendas webvtt processamento do navegador
Os jogadores de desktop perdoam; o elemento track do navegador não é. Esta postagem explica como o analisador de legenda HTML5 lê um arquivo WebVTT, os erros que ele elimina silenciosamente e como preparar um arquivo que ambos aceitem.
O mesmo arquivo funciona em VLC e não mostra nada na página web — dois analisadores, dois níveis de tolerância
Um arquivo de legenda que é reproduzido corretamente em um player de desktop e não mostra nada em uma página da web não mudou entre os dois. O que mudou é quanta tolerância o leitor traz. Os players de desktop são criados para exibir tudo o que o usuário arrasta para eles, para que eles adivinhem, reparem e pulem. O elemento track HTML5 implementa uma especificação, e uma especificação que aceita suposições não seria uma.
A diferença também não é um bug. São dois designs com obrigações diferentes, e a consequência prática é que o player para desktop é um teste ruim para saber se um arquivo funcionará na web.
Como o elemento track carrega um arquivo de legenda — a solicitação, o tipo MIME, CORS para faixas de origem cruzada e a verificação de cabeçalho WEBVTT
O elemento track busca o arquivo de legenda como um recurso normal, o que significa que está sujeito às mesmas regras que qualquer outra solicitação. Ele deve ser veiculado com o tipo de mídia WebVTT, e um arquivo veiculado como texto simples é rejeitado independentemente de seu conteúdo. Uma faixa hospedada em outra origem precisa de cabeçalhos de origem cruzada e do atributo crossorigin no elemento de vídeo e, sem eles, a busca falha antes que qualquer análise aconteça.
Depois vem a verificação do cabeçalho. Um arquivo WebVTT deve começar com a assinatura WEBVTT, opcionalmente precedida por uma marca de ordem de byte, e um arquivo sem ela não é um arquivo WebVTT. Este é o motivo mais comum pelo qual um arquivo SRT renomeado para uma extensão VTT não exibe nada: a renomeação alterou a extensão e não a primeira linha.
Análise sugestão por sugestão — o que o navegador faz com um timecode malformado ou uma linha inesperada e por que a falha é silenciosa
A análise após esse ponto é feita sugestão por sugestão, e o modo de falha é o que a torna confusa. Um bloco que o analisador não consegue ler é descartado e a análise continua. Não há exceção, nenhum erro de console e nenhuma indicação visual; a deixa simplesmente nunca aparece. Um arquivo com quatro timecodes malformados de novecentos é reproduzido quase perfeitamente, com quatro momentos de silêncio que mais parecem falta de tradução do que uma falha de formato.
É por isso que o sintoma geralmente é relatado como intermitente. Nada é intermitente nisso. As mesmas dicas falham sempre, mas como as dicas ao redor funcionam, o arquivo parece amplamente funcional e a falha é atribuída ao conteúdo e não à análise.
Indulgência dos players de desktop — por que VLC e outros aceitam arquivos que são tecnicamente inválidos
Os jogadores de desktop assumem deliberadamente a posição oposta. Eles aceitam ambos os separadores de milissegundos, toleram linhas de índice ausentes, inferem o formato a partir do conteúdo em vez da extensão, reparam a ordem e ignoram o que não podem usar sem reclamar. Um usuário que arrasta um arquivo para um player deseja que o filme tenha legendas, não um relatório de validação.
O analisador do kit de ferramentas segue a mesma tradição tolerante de entrada, aceitando horas opcionais, tanto separadores quanto arquivos cujos blocos são irregulares. A diferença é o que faz depois: regista cada falha que tolerou como um problema localizado e escreve de volta uma forma canónica em vez de preservar a irregularidade que aceitou.
Exemplo resolvido: um arquivo com três falhas comuns – testando-o em um navegador e vendo quais dicas desaparecem
Pegue um arquivo com três falhas: falta o cabeçalho WEBVTT, um cue tem um campo de segundos de setenta e cinco e um cue termina antes de começar. Em um reprodutor de desktop, o arquivo é reproduzido, os segundos impossíveis são reparados ou ignorados silenciosamente e o sinal invertido pisca ou é descartado. O espectador vê legendas.
No elemento track, o cabeçalho ausente o encerra imediatamente; nenhuma sugestão é exibida, porque o arquivo nunca foi aceito como WebVTT. Adicione o cabeçalho e a imagem muda: a maioria das dicas aparece, a sugestão com setenta e cinco segundos é descartada durante a análise e a sugestão invertida é analisada, mas nunca mostrada porque não tem duração para ser exibida. A validação nomeia ambos antes de você carregar a página, relatando o timecode impossível e a sugestão que termina antes de começar, cada um por número.
O que isso não cobre – estilo com ::cue, configurações de posicionamento e legendas ao vivo
Isso abrange se as dicas são carregadas, e não sua aparência. O estilo através do pseudoelemento cue, as configurações de posicionamento e alinhamento na linha do timecode, as definições de região e o texto vertical são preocupações separadas que só importam quando o arquivo é analisado. Um arquivo que não exibe nada não é um problema de estilo e o estilo não o salvará.
Legendas ao vivo e streaming também estão fora disso. As faixas de legenda segmentadas entregues junto com os fluxos adaptativos têm seu próprio modelo de entrega, e um arquivo estático carregado por um elemento de faixa não é a forma como elas chegam ao player.
Conclusão: prepare-se para o analisador mais rigoroso - como a conversão e limpeza do Subtitle Toolkit produzem um arquivo que o elemento track aceita
Prepare-se para o analisador mais rigoroso, em vez do mais indulgente, porque o analisador estrito é aquele que seu público usa. Converta para WebVTT corretamente para que a linha de assinatura seja escrita em vez de assumida, sirva-a com o tipo de mídia correto e adicione cabeçalhos de origem cruzada se o arquivo residir em outro host.
Execute a conversão e leia os problemas relatados antes do envio. O conversor grava carimbos de data/hora canônicos com o separador exigido pelo formato, renumera as dicas de forma contígua e relata as falhas que teve que tolerar, que é a lista de dicas que teriam desaparecido silenciosamente em um navegador. Em seguida, recarregue a página e compare a contagem de dicas com a fonte, em vez de confiar que as legendas apareceram.