Formato .ytt:una referencia práctica
Una referencia del formato de texto temporizado de YouTube: el XML que hay detrás de los subtítulos con estilo, que se guarda como .ytt y que dentro de YouTube se conoce como formato 3 o SRV3. Todo lo que viene a continuación es lo que el formato acepta en la práctica, incluidos los valores que parecen razonables y se descartan sin avisar.
Cómo es un archivo
<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>
La cabecera declara los estilos reutilizables: pen para el texto, wp para dónde se coloca la ventana del subtítulo y ws para cómo se alinea el texto dentro de ella. El cuerpo es la lista de líneas de subtítulo, cada una apuntando por id a los estilos que usa.
<pen> — el estilo de texto
| Atributo | Valores | Significado |
|---|---|---|
fs | 0–7 | Tipografía: 0 sans por defecto, 1 Courier New, 2 Times New Roman, 3 Lucida Console, 5 Comic Sans MS, 6 Monotype Corsiva, 7 Carrois Gothic SC. El 4 no está definido. |
sz | integer | Tamaño. 100 es el valor por defecto de YouTube; la escala no es lineal (más abajo). |
b, i, u | "1" | Negrita, cursiva y subrayado. Solo se escriben cuando son verdaderos. |
fc | #RRGGBB | Color del texto. El blanco puro #FFFFFF se suele escribir como #FEFEFE. |
fo | 0–254 | Opacidad del texto. El 255 se descarta: totalmente opaco es 254. |
bc, bo | #RRGGBB, 0–254 | Color de la caja de fondo y su opacidad. bo="0" quita la caja. |
et | 1–4 | Borde: 1 sombra dura, 2 biselado, 3 brillo, 4 sombra suave. No hay un tipo de contorno: se usa un brillo oscuro como tal. |
ec | #RRGGBB | Color del borde. Por defecto es #222222 con la opacidad del texto. |
of | 0–2 | Desplazamiento: 0 subíndice, 1 normal, 2 superíndice. |
rb | 0–5 | Anotación ruby (furigana): 0 ninguna, 1 base, 2 paréntesis, 4 texto antes, 5 texto después. |
La fórmula del tamaño
El valor de sz no es el tamaño que quieres. Se mueve cuatro veces más rápido que la escala real:
sz = (1 + (scale − 1) × 4) × 100
scale = 1 + (sz / 100 − 1) / 4
Así, sz="100" es el 100 %, sz="200" es el 125 % y sz="50" ronda el 87 %. El tamaño de subtítulo por defecto de YouTube es más o menos el 4,6–4,8 % de la altura del fotograma, que es el tamaño al que se dibuja sz="100".
<wp> — la posición de la ventana
| Atributo | Valores | Significado |
|---|---|---|
ap | 0–8 | Punto de anclaje: 0 arriba izquierda, 1 arriba centro, 2 arriba derecha, 3 medio izquierda, 4 centro, 5 medio derecha, 6 abajo izquierda, 7 abajo centro, 8 abajo derecha. |
ah | 0–100 | Posición horizontal. |
av | 0–100 | Posición vertical. |
Las posiciones no son porcentajes directos del fotograma. YouTube las lleva a una zona segura:
screen% = value × 0.96 + 2
av="0" cae al 2 % desde arriba y av="100" al 98 %. Un conversor que haga el camino inverso usa value = (screen% − 2) / 0.96.
<ws> — el estilo de la ventana
| Atributo | Valores | Significado |
|---|---|---|
ju | 0–2 | Justificación: 0 izquierda, 1 derecha, 2 centro. |
pd | 0–3 | Dirección de escritura; 0 es horizontal de izquierda a derecha. |
sd | 0–1 | Dirección de desplazamiento, para texto vertical. |
<p> y <s> — líneas y segmentos
| Atributo | Valores | Significado |
|---|---|---|
p.t | ≥ 1 ms | Tiempo de inicio. Algunos reproductores de Android se saltan una línea que empieza en 0. |
p.d | > 0 ms | Duración. |
p.wp, p.ws | id | Posición de ventana y estilo de ventana que se usan. |
p.p | id | Pluma para toda la línea. |
s.p | id | Pluma para un segmento dentro de la línea. |
s.t | ≥ 0 ms | Inicio del segmento, relativo a la línea: así funcionan los tiempos palabra por palabra. |
Las rarezas que te cuestan una tarde
- Solo un borde por pluma. Un contorno y una sombra en el mismo texto obligan a escribir la línea dos veces, con dos plumas, una encima de la otra.
- Los contornos gruesos son copias apiladas. Repite unas cuantas veces la misma línea con borde de brillo; no agrandes la letra de las copias de abajo, o las capas se separan en horizontal.
- La opacidad 255 desaparece. Usa 254.
- Relleno de ancho cero. Las líneas que mezclan varios segmentos con estilo necesitan espacios de ancho cero alrededor, o algunos reproductores móviles reducen el estilo al de la pluma de la propia línea.
- Sin animación. El zoom y el roll-up son series de entradas de subtítulo separadas por unas decenas de milisegundos.
- Mandan los ajustes de quien mira. Quien haya cambiado el aspecto de los subtítulos en el reproductor ve sus ajustes, no tus plumas.
De dónde sale esta información
YouTube no documenta el formato públicamente. El comportamiento de referencia sale de YTSubConverter, el conversor de código abierto cuyo código fuente es la especificación de facto, contrastado con pistas de subtítulos reales descargadas de YouTube y con lo que los reproductores dibujan de verdad. Rainbow Captions escribe ese mismo formato: puedes construir las pistas a mano con las tablas de arriba o dejar que la app se encargue de las capas, las protecciones y los tiempos palabra por palabra.
Rainbow Captions se encarga de las plumas, los contornos por capas, los caracteres de protección y los tiempos palabra por palabra, en 170 idiomas. Descarga gratuita y los primeros 10 idiomas gratis.
Descargar para Mac