Synchronisation des sous-titres WebVTT

Dans cette rubrique, vous apprendrez comment configurer les sous-titres WebVTT pour les vidéos HLS afin de synchroniser l'audio et la vidéo avec les sous-titres.

Aperçu

Le fichier Web Video Text Tracks (WebVTT) est un simple fichier texte utilisé pour associer des légendes, des sous-titres, des descriptions, etc. avec des segments de temps dans votre vidéo.

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

Pour plus de détails sur l'ajout d'un fichier WebVTT, consultez le Ajouter des légendes aux vidéos document.

Ajouter un en-tête de métadonnées

Dans le cadre de la spécification HLS, vous devez ajouter un X-TIMESTAMP-MAP en-tête de métadonnées à chaque en-tête WebVTT afin de synchroniser les horodatages entre l'audio et la vidéo avec vos sous-titres.

S'il vous manque cet en-tête ou le MPEGTS valeur n'est pas correcte, vous pouvez constater que vos sous-titres ne sont pas synchronisés avec la vidéo. C'est parce que lorsque le X-TIMESTAMP-MAP l'en-tête est manquant, le client suppose un décalage d'horodatage par défaut de 0. Par exemple, la différence entre l'utilisation d'une valeur de 900000 et 0 peut entraîner la suppression de vos sous-titres de 10 secondes.

X-TIMESTAMP-MAP format :

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

Voici un exemple de fichier WebVTT :

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

Pour plus de détails, consultez le Segments de sous-titres section du document du protocole HLS d'Apple.

Déterminer la valeur de décalage

Si vous utilisez Dynamic Ingest ou Zencoder de Brightcove pour transcoder votre contenu, utilisez une valeur de décalage de MPEGTS:900000.

Si vous utilisez un système d'encodage autre que Zencoder, il est préférable d'obtenir la valeur nécessaire. Apple vous recommande de définir le décalage pour qu'il corresponde à votre vidéo encodée.

Les MPEGTS correspond à la valeur d'horodatage de présentation (PTS) de la trame MPEG à l'heure donnée. LOCAL temps. Si vous utilisez le système d'acquisition hérité de Brightcove, vous constaterez peut-être que vous pouvez utiliser une valeur de MPEGTS:0.

Si votre compte est activé pour la livraison dynamique et que vous hébergez des sous-titres avec nous (sous-titres non distants), nous ferons tout fonctionner automatiquement par magie (PTS doit être nul et nous veillerons à ce qu'il le soit.)

Si votre compte est activé pour la livraison dynamique et que vous utilisez des sous-titres distants, vous devez définir la valeur PTS sur zéro.

Par exemple, pour obtenir la valeur de décalage, vous pouvez procéder comme suit :

Demande 1 :

Dans le terminal, récupérez une vidéo HLS et stockez-la dans un fichier local. Dans ce cas, nous le nommons 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"

Demande 2 :

Ensuite, utilisez le ffprobe commande pour obtenir la valeur de décalage. ffprobe est un analyseur de flux multimédia, qui fait partie de la Cadre FFmpeg. Vous devrez le télécharger et l'installer sur votre ordinateur.

ffprobe -show_frames seg.ts

Réponse :

Votre réponse devrait ressembler à ceci :

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

Les meilleures pratiques

Les instructions suivantes devraient vous aider lors du développement de votre application avec des sous-titres.

Durée du sous-titre

Il est recommandé que la durée du sous-titre ne dépasse pas la durée de la vidéo. Cela empêchera l'affichage des sous-titres ou l'apparition d'une zone introuvable dans la barre de progression une fois la lecture vidéo terminée.