Sincronización de subtítulos de WebVTT

En este tema, aprenderá cómo configurar subtítulos WebVTT para videos HLS para sincronizar el audio y el video con los subtítulos.

Resumen

El archivo Web Video Text Tracks (WebVTT) es un archivo de texto simple que se utiliza para asociar títulos, subtítulos, descripciones, etc., con segmentos de tiempo en su video.

WEBVTT

  00:00:03.50 --> 00:00:05.000 align:middle line:84%
  In this video, you'll learn
  about how Video Cloud Studio is

Para obtener detalles sobre cómo agregar un archivo WebVTT, consulte la Agregar subtítulos a los videos documento.

Agregar un encabezado de metadatos

Como parte de la especificación HLS, debe agregar un X-TIMESTAMP-MAP encabezado de metadatos a cada encabezado de WebVTT para sincronizar las marcas de tiempo entre el audio y el video con sus subtítulos.

Si falta este encabezado o el MPEGTS El valor no es correcto, es posible que vea que sus subtítulos no están sincronizados con el video. Esto se debe a que cuando X-TIMESTAMP-MAP Falta el encabezado, el cliente asume un desplazamiento de marca de tiempo predeterminado de 0. Por ejemplo, la diferencia entre usar un valor de 900000 y 0 puede hacer que sus subtítulos se desvíen 10 segundos.

X-TIMESTAMP-MAP formato:

X-TIMESTAMP-MAP=MPEGTS:<MPEG-2 time>,LOCAL:<cue time>

Aquí hay un archivo WebVTT de muestra:

WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000

1
00:00:03.500 --> 00:00:05.000 align:middle line:84%
In this video, you'll learn
about how Video Cloud Studio is

Para obtener más detalles, consulte la Segmentos de subtítulos sección del documento de protocolo HLS de Apple.

Determine el valor de compensación

Si está utilizando Dynamic Ingest o Zencoder de Brightcove para transcodificar su contenido, use un valor de compensación de MPEGTS:900000.

Si está utilizando un sistema de codificación que no sea Zencoder, es mejor obtener el valor necesario. Apple recomienda que configure el desplazamiento para que coincida con su video codificado.

La MPEGTS El valor corresponde al valor de la marca de tiempo de presentación (PTS) de la trama MPEG en el LOCAL hora. Si está utilizando el sistema de ingesta heredado de Brightcove, puede encontrar que puede usar un valor de MPEGTS:0.

Si su cuenta está habilitada para Entrega dinámica y estás alojando subtítulos con nosotros (subtítulos no remotos) , luego haremos que todo funcione automáticamente de forma mágica (PTS debe ser cero y nos aseguraremos de que sea así).

Si su cuenta está habilitada para Dynamic Delivery y está utilizando remoto subtítulos, deberá establecer el valor de PTS en cero.

Por ejemplo, para obtener el valor de compensación, puede hacer lo siguiente:

Solicitud1:

En la terminal, obtenga un video HLS y guárdelo en un archivo local. En este caso, lo estamos nombrando seg.ts.

curl -o seg.ts "http://brightcove.vo.llnwd.net/v1/unsecured/media/4360108595001/201507/1154/4360341622001/4360108595001_4360341622001_s-1.ts?pubId=4360108595001&videoId=4360283683001"

Solicitud2:

Luego, usa el ffprobe comando para obtener el valor de compensación. ffprobe es un analizador de flujo multimedia, que forma parte del Marco FFmpeg. Deberá descargarlo e instalarlo en su computadora.

ffprobe -show_frames seg.ts

Respuesta:

Tu respuesta debería ser similar a esta:

pkt_pts=900000
pkt_pts_time=10.000000
pkt_dts=900000
pkt_dts_time=10.000000

Mejores prácticas

Las siguientes pautas deberían ayudar al desarrollar su aplicación con subtítulos.

Duración de los subtítulos

Se recomienda que la duración de los subtítulos no exceda la duración del video. Esto evitará que se muestren subtítulos o que aparezca un área que no se puede buscar en la barra de progreso después de que se haya completado la reproducción del video.