Format .ytt :une référence de travail
Une référence du format de texte synchronisé de YouTube — le XML derrière les sous-titres stylisés, enregistré en .ytt et appelé format 3, ou SRV3, chez YouTube. Tout ce qui suit est ce que le format accepte en pratique, y compris les valeurs qui semblent raisonnables et qui sont silencieusement ignorées.
La forme d’un fichier
<timedtext format="3">
<head>
<pen id="1" b="1" fc="#FEFEFE" fo="254" et="4" ec="#000000"/>
<wp id="0" ap="7" ah="50" av="90"/>
<ws id="0" ju="2"/>
</head>
<body>
<p t="1000" d="1600" wp="0" ws="0" p="1">Today we fix that.</p>
</body>
</timedtext>
L’en-tête déclare des styles réutilisables : pen pour le texte, wp pour l’endroit où se place la fenêtre de sous-titre, ws pour l’alignement du texte à l’intérieur. Le corps est la liste des lignes de sous-titres, chacune pointant par identifiant vers les styles qu’elle utilise.
<pen> — le style de texte
| Attribut | Valeurs | Signification |
|---|---|---|
fs | 0–7 | Police : 0 sans-serif par défaut, 1 Courier New, 2 Times New Roman, 3 Lucida Console, 5 Comic Sans MS, 6 Monotype Corsiva, 7 Carrois Gothic SC. 4 n’est pas défini. |
sz | integer | Taille. 100 est la valeur par défaut de YouTube ; l’échelle n’est pas linéaire (voir plus bas). |
b, i, u | "1" | Gras, italique, souligné. Écrits seulement quand ils sont vrais. |
fc | #RRGGBB | Couleur du texte. Le blanc pur #FFFFFF s’écrit couramment #FEFEFE. |
fo | 0–254 | Opacité du texte. 255 est supprimé — totalement opaque, c’est 254. |
bc, bo | #RRGGBB, 0–254 | Couleur du fond et son opacité. bo="0" supprime le fond. |
et | 1–4 | Bordure : 1 ombre dure, 2 biseau, 3 halo, 4 ombre douce. Il n’existe pas de type contour — un halo sombre en tient lieu. |
ec | #RRGGBB | Couleur de la bordure. Par défaut #222222, à l’opacité du texte. |
of | 0–2 | Décalage : 0 indice, 1 normal, 2 exposant. |
rb | 0–5 | Annotation ruby (furigana) : 0 aucune, 1 base, 2 parenthèse, 4 texte avant, 5 texte après. |
La formule de taille
La valeur de sz n’est pas la taille que vous visez. Elle avance quatre fois plus vite que l’échelle réelle :
sz = (1 + (scale − 1) × 4) × 100
scale = 1 + (sz / 100 − 1) / 4
Ainsi sz="100" vaut 100 %, sz="200" vaut 125 %, et sz="50" environ 87 %. La taille de sous-titre par défaut de YouTube est d’environ 4,6–4,8 % de la hauteur de l’image, et c’est la taille à laquelle sz="100" s’affiche.
<wp> — la position de la fenêtre
| Attribut | Valeurs | Signification |
|---|---|---|
ap | 0–8 | Point d’ancrage : 0 haut gauche, 1 haut centre, 2 haut droite, 3 milieu gauche, 4 centre, 5 milieu droite, 6 bas gauche, 7 bas centre, 8 bas droite. |
ah | 0–100 | Position horizontale. |
av | 0–100 | Position verticale. |
Les positions ne sont pas des pourcentages bruts de l’image. YouTube les ramène dans une zone de sécurité :
screen% = value × 0.96 + 2
av="0" tombe à 2 % du haut et av="100" à 98 %. Un convertisseur qui va dans l’autre sens utilise value = (screen% − 2) / 0.96.
<ws> — le style de la fenêtre
| Attribut | Valeurs | Signification |
|---|---|---|
ju | 0–2 | Justification : 0 à gauche, 1 à droite, 2 centré. |
pd | 0–3 | Sens d’écriture ; 0 est horizontal, de gauche à droite. |
sd | 0–1 | Sens de défilement, pour le texte vertical. |
<p> et <s> — lignes et segments
| Attribut | Valeurs | Signification |
|---|---|---|
p.t | ≥ 1 ms | Heure de départ. Certains lecteurs Android ignorent une ligne qui démarre à 0. |
p.d | > 0 ms | Durée. |
p.wp, p.ws | id | Position de fenêtre et style de fenêtre à utiliser. |
p.p | id | Plume pour toute la ligne. |
s.p | id | Plume pour un segment à l’intérieur de la ligne. |
s.t | ≥ 0 ms | Départ du segment, relatif à la ligne — c’est ainsi que fonctionne le minutage mot par mot. |
Les bizarreries qui coûtent un après-midi
- Une seule bordure par plume. Un contour et une ombre sur le même texte, cela veut dire écrire la ligne deux fois, avec deux plumes, l’une par-dessus l’autre.
- Les contours épais sont des copies empilées. Répétez plusieurs fois la même ligne à bordure halo ; n’agrandissez pas la police des copies du dessous, sinon les calques se décalent horizontalement.
- L’opacité 255 disparaît. Utilisez 254.
- Le remplissage de largeur nulle. Les lignes qui mêlent plusieurs segments stylisés ont besoin d’espaces de largeur nulle autour d’eux, sinon certains lecteurs mobiles rabattent le style sur la plume de la ligne.
- Aucune animation. Le zoom et le défilement sont des séries d’entrées de sous-titres, espacées de quelques dizaines de millisecondes.
- Les réglages du spectateur l’emportent. Quiconque a modifié l’apparence des sous-titres dans le lecteur voit ses réglages, pas vos plumes.
D’où viennent ces informations
Le format n’est pas documenté publiquement par YouTube. Le comportement de référence vient de YTSubConverter, le convertisseur open source dont le code fait office de spécification de fait, vérifié sur de vraies pistes de sous-titres téléchargées depuis YouTube et sur ce que les lecteurs affichent réellement. Rainbow Captions écrit le même format — vous pouvez construire vos pistes à la main à partir des tableaux ci-dessus, ou laisser l’application gérer l’empilement, les garde-fous et le minutage mot par mot.
Rainbow Captions gère les plumes, les contours empilés, les caractères de garde et le minutage mot par mot, en 170 langues. Téléchargement gratuit, 10 premières langues offertes.
Télécharger pour Mac