WebVTT
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édia | text/vtt |
| Spécification | W3C, WebVTT: The Web Video Text Tracks Format, une Candidate Recommendation |
| Précision temporelle | Millisecondes |
| Encodage du texte | UTF-8, toujours : la spécification l'exige. Subtitld lit tout de même d'autres encodages. |
| Mise en forme | Balises italique, gras et souligné ; couleurs par classes et CSS (::cue). Pas de barré. |
| Positionnement | Réglages de cue (line, position, align, size, vertical) et régions |
| Intervenants | Balises de voix : <v Thom> |
| Dans les conteneurs | Matroska 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 · 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 · Identifiant
Facultatif. Un nom pour le cue, sur sa propre ligne : un numéro, comme dans SubRip, ou un mot.
- 3 · Temps
Le début, la flèche
-->, puis la fin. Un point avant les millisecondes. - 4 · Réglages
Facultatif. L'endroit où afficher le cue, après l'heure de fin.
- 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é |
& < > |
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
- 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
- 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,STYLEetREGIONpour 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
STYLEdonne aux autres classes ; line,positionetaligncomme 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
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
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.
Six lettres au tout début de chaque fichier. Un navigateur qui ne les trouve pas refuse toute la piste.
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
Ouvrez-le dans Subtitld avec la vidéo et recalez-le sur la forme d'onde.