WebVTT

OuvrirEnregistrerTexte brutWeb

Le format de sous-titres du web : ce qu'un navigateur affiche grâce à <track> dans HTML. Les blocs de SubRip, avec un en-tête, un point avant les millisecondes, et une place pour la mise en forme, les positions et les intervenants.

En bref

Extension.vtt
Type de médiatext/vtt
SpécificationW3C, WebVTT: The Web Video Text Tracks Format, une Candidate Recommendation
Précision temporelleMillisecondes
Encodage du texteUTF-8, toujours : la spécification l'exige. Subtitld lit tout de même d'autres encodages.
Mise en formeBalises italique, gras et souligné ; couleurs par classes et CSS (::cue). Pas de barré.
PositionnementRéglages de cue (line, position, align, size, vertical) et régions
IntervenantsBalises de voix : <v Thom>
Dans les conteneursMatroska en S_TEXT/WEBVTT ; MP4 en wvtt (ISO/IEC 14496-30) ; flux HLS et DASH

Anatomie d'un cue

Un fichier est un en-tête, puis des cues. Chaque cue est un bloc semblable à ceux de SubRip, avec deux parties facultatives.

WEBVTT
 
intro
00:00:23.000 --> 00:00:24.500 line:0
<v Celia>You're a jerk,
<i>Thom</i>.
 
  1. 1 · En-tête

    WEBVTT, seul ou suivi d'un espace et d'un titre, puis d'une ligne vide. Sans lui, un navigateur refuse tout le fichier.

  2. 2 · Identifiant

    Facultatif. Un nom pour le cue, sur sa propre ligne : un numéro, comme dans SubRip, ou un mot.

  3. 3 · Temps

    Le début, la flèche -->, puis la fin. Un point avant les millisecondes.

  4. 4 · Réglages

    Facultatif. L'endroit où afficher le cue, après l'heure de fin.

  5. 5 · Texte

    Des lignes de texte, avec des balises de mise en forme et de voix. Une ligne vide termine le cue, il n'y en a donc aucune à l'intérieur.

Le code temporel

Les heures peuvent être omises. 00:27.000 désigne le même instant, et beaucoup de fichiers de moins d'une heure sont écrits ainsi. Une virgule avant les millisecondes est une habitude de SubRip, et non de WebVTT ; Subtitld la lit tout de même.

Blocs autres que les cues

Bloc Contenu
NOTE Un commentaire, pour les humains. Les lecteurs l'ignorent.
STYLE Du CSS pour les cues, via ::cue. Avant le premier cue.
REGION Une zone nommée de l'écran où les cues peuvent défiler.

Texte des cues

Balise Effet
<i>…</i>, <b>…</b>, <u>…</u> Italique, gras, souligné
<c.yellow>…</c> Une classe, que le CSS (ou les classes de couleur propres à WebVTT) peut colorer
<v Thom>… La voix : qui parle. La fermer est facultatif.
<lang pt>…</lang> La langue d'un passage de texte
<ruby>漢<rt>kan</rt></ruby> Une lecture au-dessus du texte, pour le japonais et le chinois
<00:00:28.500> Un horodatage à l'intérieur du cue, pour le karaoké
&amp; &lt; &gt; &nbsp; Une esperluette, <, > et une espace insécable, qui sans cela se liraient comme du balisage

Couleurs

Huit classes sont colorées sans aucun CSS : white, lime, cyan, red, yellow, magenta, blue et black, et les mêmes huit avec bg_ pour l'arrière-plan. Toute autre couleur nécessite une classe propre et un bloc STYLE :

STYLE
::cue(.gold) { color: #ffd700; }

00:00:30.800 --> 00:00:34.000
<c.gold>Why don't you just admit that</c>

Tous les lecteurs ne lisent pas les blocs STYLE ; les classes de couleur propres à WebVTT sont le choix le plus sûr. Subtitld les utilise dès qu'une couleur fait partie des huit.

Réglages de cue

Réglage Effet
line:0 La ligne à l'écran : un nombre compte les lignes depuis le haut (négatif depuis le bas), un pourcentage depuis le bord supérieur
position:10% Où se place la boîte du cue à travers l'écran
align:start Alignement du texte dans la boîte : start, center, end, left, right
size:50% La largeur de la boîte
vertical:rl Texte vertical, de droite à gauche ou de gauche à droite
region:fred Affiche le cue dans une REGION

Subtitld lit line, position et align comme l'emplacement du sous-titre à l'écran, parmi les mêmes neuf emplacements que {\an1} à {\an9} de SubRip, et les réécrit ainsi : line:0 pour le haut, line:50%,center pour le milieu, position:10% align:start et position:90% align:end pour les côtés.

WebVTT dans Subtitld

Conservé dans le .vtt
  • Le texte et les retours à la ligne de chaque sous-titre
  • Italique, gras, souligné et couleur
  • L'endroit où il se place à l'écran
  • Les intervenants, sous forme de balises de voix
  • Début et fin, à la milliseconde, dans l'ordre
Nulle part où aller
  • Le barré : WebVTT n'a pas de balise pour cela
  • Les visages et les couleurs des intervenants
  • Les traductions à côté de l'original (l'une peut le remplacer, ou se placer en dessous)
  • Doublages et métadonnées

Enregistrez un projet .usfx pour les conserver.

Ouvrir un fichier WebVTT

Subtitld retrouve chaque cue grâce à sa ligne de temps et lit :

  • l'en-tête et les blocs NOTE, STYLE et REGION pour ce qu'ils sont, et non comme des sous-titres ; les identifiants de cue comme des noms ;
  • les heures avec ou sans heures, avec un point ou une virgule ;
  • les voix comme intervenants des sous-titres, prêts pour le doublage ;
  • les classes de couleur de WebVTT, et les couleurs qu'un bloc STYLE donne aux autres classes ;
  • line, position et align comme l'emplacement à l'écran ;
  • n'importe quel encodage, bien que WebVTT demande l'UTF-8.

Il laisse de côté ce qu'il n'a pas de place pour : les régions, la taille d'un cue, le texte vertical, les lectures de ruby et les horodatages de karaoké. Le texte lui-même reste.

Exporter en WebVTT

Boîte de dialogue d'export de Subtitld avec VTT choisi et les intervenants écrits comme balises de voix

Exporter, puis Sous-titres et VTT, propose :

  • TexteL'original, une traduction, ou les deux, la traduction en dessous.
  • Noms des intervenantsOmis, placés avant le texte (Thom : …), ou sous forme de balises de voix (<v Thom>), la façon propre à WebVTT.
  • Mise en formeConservée, ou supprimée.
  • Décalage des tempsChaque sous-titre plus tôt ou plus tard, du même écart.

Le fichier est toujours en UTF-8, comme l'exige WebVTT : WEBVTT, puis les cues dans l'ordre de leur début, chaque heure avec ses heures. Les caractères qui se liraient comme du balisage sont écrits sous forme d'entités, et les sous-titres vides sont omis.

Sur une page web

<video controls src="tears-of-steel.mp4">
  <track kind="subtitles" src="tears-of-steel.en.vtt"
         srclang="en" label="English" default>
</video>

Servez le fichier en text/vtt. Depuis un autre domaine, la vidéo a besoin de crossorigin et le serveur d'un en-tête Access-Control-Allow-Origin, faute de quoi le navigateur ne charge pas la piste.

WebVTT ou SubRip ?

SubRip pour les lecteurs, les éditeurs et les envois ; WebVTT pour la vidéo sur le web. La page SubRip les met côte à côte.

Anecdotes

2010

Il est né sous le nom de WebSRT, une ébauche du WHATWG pour le nouvel élément <track> de HTML5, fondée sur SubRip, avant de prendre le nom de WebVTT.

WEBVTT

Six lettres au tout début de chaque fichier. Un navigateur qui ne les trouve pas refuse toute la piste.

8

Couleurs qu'un lecteur connaît sans aucun CSS : blanc, vert citron, cyan, rouge, jaune, magenta, bleu et noir, pour le texte comme pour son arrière-plan.

Formats associés

Un fichier .vtt à corriger ?

Ouvrez-le dans Subtitld avec la vidéo et recalez-le sur la forme d'onde.

Télécharger Subtitld