Rainbow Captions Blog Descargar

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

AtributoValoresSignificado
fs0–7Tipografí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.
szintegerTamañ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#RRGGBBColor del texto. El blanco puro #FFFFFF se suele escribir como #FEFEFE.
fo0–254Opacidad del texto. El 255 se descarta: totalmente opaco es 254.
bc, bo#RRGGBB, 0–254Color de la caja de fondo y su opacidad. bo="0" quita la caja.
et1–4Borde: 1 sombra dura, 2 biselado, 3 brillo, 4 sombra suave. No hay un tipo de contorno: se usa un brillo oscuro como tal.
ec#RRGGBBColor del borde. Por defecto es #222222 con la opacidad del texto.
of0–2Desplazamiento: 0 subíndice, 1 normal, 2 superíndice.
rb0–5Anotació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

AtributoValoresSignificado
ap0–8Punto 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.
ah0–100Posición horizontal.
av0–100Posició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

AtributoValoresSignificado
ju0–2Justificación: 0 izquierda, 1 derecha, 2 centro.
pd0–3Dirección de escritura; 0 es horizontal de izquierda a derecha.
sd0–1Dirección de desplazamiento, para texto vertical.

<p> y <s> — líneas y segmentos

AtributoValoresSignificado
p.t≥ 1 msTiempo de inicio. Algunos reproductores de Android se saltan una línea que empieza en 0.
p.d> 0 msDuración.
p.wp, p.wsidPosición de ventana y estilo de ventana que se usan.
p.pidPluma para toda la línea.
s.pidPluma para un segmento dentro de la línea.
s.t≥ 0 msInicio del segmento, relativo a la línea: así funcionan los tiempos palabra por palabra.

Las rarezas que te cuestan una tarde

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.

Deja que la app escriba el XML

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