Vídeo y subtítulos · Kit de herramientas de subtítulos
Por qué un archivo de subtítulos se reproduce en VLC pero falla en el elemento de pista HTML5
· Cómo funciona
subtítulos webvtt procesamiento del navegador
Los reproductores de escritorio son indulgentes; el elemento de seguimiento del navegador no lo es. Esta publicación explica cómo el analizador de subtítulos HTML5 lee un archivo WebVTT, los errores que elimina silenciosamente y cómo preparar un archivo que ambos acepten.
El mismo archivo funciona en VLC y no muestra nada en la página web: dos analizadores, dos niveles de tolerancia
Un archivo de subtítulos que se reproduce correctamente en un reproductor de escritorio y no muestra nada en una página web no ha cambiado entre los dos. Lo que cambió es cuánta tolerancia aporta el lector. Los reproductores de escritorio están diseñados para mostrar todo lo que un usuario les arrastra, de modo que puedan adivinar, reparar y omitir. El elemento de seguimiento HTML5 implementa una especificación, y una especificación que aceptara conjeturas no lo sería.
La diferencia no es un error en ninguno de los dos. Son dos diseños con obligaciones diferentes, y la consecuencia práctica es que el reproductor de escritorio es una mala prueba para saber si un archivo funcionará en la web.
Cómo el elemento de pista carga un archivo de subtítulos: la solicitud, el tipo MIME, CORS para pistas de origen cruzado y la verificación del encabezado WEBVTT
El elemento de seguimiento recupera el archivo de títulos como un recurso normal, lo que significa que está sujeto a las mismas reglas que cualquier otra solicitud. Debe entregarse con el tipo de medio WebVTT y un archivo entregado como texto sin formato se rechaza independientemente de su contenido. Una pista alojada en otro origen necesita encabezados de origen cruzado y el atributo de origen cruzado en el elemento de vídeo, y sin ellos la recuperación falla antes de que se realice cualquier análisis.
Luego viene la verificación del encabezado. Un archivo WebVTT debe comenzar con la firma WEBVTT, opcionalmente precedida por una marca de orden de bytes, y un archivo sin ella no es un archivo WebVTT. Esta es la razón más común por la que un archivo SRT renombrado a una extensión VTT no muestra nada: el cambio de nombre cambió la extensión y no la primera línea.
Análisis cue por cue: qué hace el navegador con un código de tiempo con formato incorrecto o una línea inesperada y por qué el error es silencioso
El análisis después de ese punto se realiza señal por señal, y el modo de falla es lo que lo hace confuso. Un bloque que el analizador no puede leer se descarta y el análisis continúa. No hay excepción, ni error de consola ni indicación visual; la señal simplemente nunca aparece. Un archivo con cuatro códigos de tiempo mal formados entre novecientos se reproduce casi a la perfección, con cuatro momentos de silencio que parecen falta de traducción más que un error de formato.
Esta es la razón por la que el síntoma generalmente se informa como intermitente. No hay nada intermitente en ello. Las mismas señales fallan siempre, pero debido a que las señales circundantes funcionan, el archivo parece funcional en términos generales y la falla se atribuye al contenido más que al análisis.
La indulgencia de los reproductores de escritorio: por qué VLC y otros aceptan archivos que no son técnicamente válidos
Los jugadores de escritorio adoptan deliberadamente la posición opuesta. Aceptan ambos separadores de milisegundos, toleran la falta de líneas de índice, infieren el formato a partir del contenido en lugar de la extensión, reparan los pedidos y se saltan lo que no pueden usar sin quejarse. Un usuario que arrastra un archivo a un reproductor quiere que la película tenga subtítulos, no un informe de validación.
El analizador del kit de herramientas sigue la misma tradición indulgente con la entrada, aceptando horas opcionales, ya sea separadores y archivos cuyos bloques son irregulares. La diferencia es lo que hace después: registra cada defecto que toleró como un problema localizado, y escribe de nuevo una forma canónica en lugar de preservar la irregularidad que aceptó.
Ejemplo resuelto: un archivo con tres fallas comunes: probarlo en un navegador y ver qué señales desaparecen
Tome un archivo con tres fallas: carece del encabezado WEBVTT, una cue tiene un campo de segundos de setenta y cinco y una cue termina antes de comenzar. En un reproductor de escritorio, el archivo se reproduce, los segundos imposibles se reparan o se saltan silenciosamente y la señal invertida parpadea o se elimina. El espectador ve los subtítulos.
En el elemento de seguimiento, el encabezado que falta lo finaliza inmediatamente; no se muestra ninguna señal, porque el archivo nunca fue aceptado como WebVTT. Agregue el encabezado y la imagen cambia: aparecen la mayoría de las señales, la señal con setenta y cinco segundos se descarta durante el análisis y la señal invertida se analiza pero nunca se muestra porque no tiene una duración para mostrar. Nombres de validación antes de cargar la página, informando el código de tiempo imposible y la cue que termina antes de comenzar, cada uno por número.
Lo que esto no cubre: estilo con ::cue, configuración de posicionamiento y subtítulos en vivo
Esto cubre si las señales se cargan, no cómo se ven. El estilo a través del pseudoelemento de referencia, las configuraciones de posicionamiento y alineación en la línea del código de tiempo, las definiciones de región y el texto vertical son preocupaciones separadas que solo importan una vez que el archivo se analiza. Un archivo que no muestra nada no es un problema de estilo y el estilo no lo solucionará.
Los subtítulos en vivo y en streaming también están fuera de esto. Las pistas de subtítulos segmentados entregadas junto con transmisiones adaptativas tienen su propio modelo de entrega, y un archivo estático cargado por un elemento de pista no es la forma en que llegan al reproductor.
Conclusión: prepárese para el analizador más estricto: cómo la conversión y limpieza del Subtitle Toolkit producen un archivo que el elemento de seguimiento acepta
Prepárese para el analizador más estricto en lugar del más indulgente, porque el analizador estricto es el que utiliza su audiencia. Convierta a WebVTT correctamente para que la línea de firma se escriba en lugar de asumirse, sírvala con el tipo de medio correcto y agregue encabezados de origen cruzado si el archivo se encuentra en otro host.
Ejecute la conversión y lea los problemas informados antes del envío. El convertidor escribe marcas de tiempo canónicas con el separador que requiere el formato, renumera las señales de forma contigua e informa las fallas que tuvo que tolerar, que es la lista de señales que habrían desaparecido silenciosamente en un navegador. Luego, vuelva a cargar la página y compare el recuento de señales con la fuente en lugar de confiar en que aparezcan los subtítulos.