Timed Text Markup Language

AbrirGuardarXMLCon estilo

El XML del W3C para subtítulos y subtítulos para sordos, y lo que piden las emisoras y los servicios de streaming. DFXP fue el nombre de su primer perfil, y muchos archivos todavía lo llevan. IMSC, EBU-TT-D e iTT de Apple también son TTML, cada uno con sus costumbres.

De un vistazo

Extensión.ttml
Tipo de medioapplication/ttml+xml
EspecificaciónW3C, Timed Text Markup Language 1 (TTML1), una Recomendación. TTML2 la amplía; IMSC y EBU-TT-D son subconjuntos para distribución.
Precisión temporalLibre: fracciones de segundo, fotogramas o ticks
Codificación del textoDeclarada en el XML. Casi siempre UTF-8.
EstiloEstilos con nombre y atributos tts:: tipografía, tamaño, color, fondo, cursiva, negrita, subrayado, tachado y contorno
PosiciónRegiones: cajas colocadas y dimensionadas en cualquier parte de la imagen
HablantesAgentes (ttm:agent), con nombre en la cabecera
En contenedoresMP4 como stpp (ISO/IEC 14496-30), en flujos DASH, CMAF y HLS

Anatomía de un archivo

Un documento XML: una cabecera que nombra estilos y regiones, y un cuerpo de párrafos, uno por cada subtítulo.

<tt xml:lang="en" …>
<head>styles, regions</head>
<body><div>
<p begin="00:00:23.000"
   end="00:00:24.500">
You're a jerk,<br/>Thom.</p>
</div></body>
</tt>
  1. 1 · Raíz

    <tt>, con los espacios de nombres de TTML, el idioma y el reloj con el que se cuentan los tiempos: ttp:frameRate, ttp:tickRate.

  2. 2 · Cabecera

    Estilos con nombre, las regiones de la pantalla y quién habla.

  3. 3 · Tiempos

    El begin de cada párrafo, y su end o dur.

  4. 4 · Texto

    El subtítulo. Los span dan estilo a partes de él, y <br/> rompe la línea.

Tiempos

TTML escribe un tiempo de más maneras que cualquier otro formato de subtítulos:

Escrito Qué es
00:00:23.500 Horas, minutos, segundos y una fracción
00:00:23:12 Fotogramas tras los segundos: doce según el ttp:frameRate del archivo
23.5s, 23500ms, 1h Un desplazamiento en horas, minutos, segundos o milisegundos
564f Fotogramas
235000000t Ticks, ttp:tickRate por segundo

Los tiempos cuentan desde lo que los contiene. El begin de un párrafo cuenta desde el inicio de su <div> y de su <body>, y un párrafo sin end propio termina con ellos.

Estilos

Un estilo es un conjunto de atributos tts:. El texto los toma en orden: de su región, y luego del body, el div, el párrafo y el span que lo rodean. Cada elemento toma los estilos que nombra (style="s1 s2", y los que estos nombran) y luego sus propios atributos.

Atributo Efecto En Subtitld
tts:fontStyle="italic" Cursiva Se conserva
tts:fontWeight="bold" Negrita Se conserva
tts:textDecoration="underline", "lineThrough" Subrayado, tachado Se conserva
tts:color Color del texto: un nombre, #rrggbb, #rrggbbaa o rgb() Se conserva, sin su transparencia
tts:displayAlign, tts:textAlign Dónde se sitúa el texto en su región Se conserva, como uno de nueve lugares
tts:fontFamily, tts:fontSize Tipografía y tamaño No se conserva
tts:backgroundColor, tts:textOutline Un recuadro tras el texto, un contorno No se conserva
<set> Un estilo que cambia con el tiempo No se conserva

Regiones

Una región es una caja sobre la imagen, colocada con tts:origin y dimensionada con tts:extent. Dentro de ella, tts:displayAlign pone el texto arriba, en medio o abajo (before, center, after), y tts:textAlign a un lado o en el centro.

<region xml:id="top"
        tts:origin="10% 10%"
        tts:extent="80% 80%"
        tts:displayAlign="before"/>

Subtitld calcula dónde cae el texto, tanto si la región se mide en porcentajes, en píxeles o en celdas, y toma el más cercano de los nueve lugares que nombran {\an1} a {\an9} de SubRip. Al escribir un archivo, cada lugar que usa es una región con ese nombre: bottom, top, top-left…

Cuando el archivo no lo dice. Los valores predeterminados de TTML sitúan el texto arriba a la izquierda de su región, pero los reproductores lo muestran abajo y centrado, y así lo hace Subtitld. También lee textAlign="start" en una región sin tamaño ni posición como centrado: los archivos escritos con pycaption, entre ellos los de versiones antiguas de Subtitld, lo ponen en todas las regiones.

Perfiles

La mayor parte de TTML se escribe con un perfil: un subconjunto del lenguaje, con reglas propias. Subtitld lee cada uno como TTML.

Perfil Dónde se usa Sus costumbres
DFXP El primer perfil de TTML, y la extensión .dfxp Archivos antiguos en el espacio de nombres http://www.w3.org/2006/10/ttaf1
IMSC 1 Streaming sobre DASH, CMAF y HLS El perfil del W3C para subtítulos en línea
EBU‑TT‑D Reproductores en línea de las emisoras europeas Elementos a menudo escritos con prefijo: <tt:p>
SMPTE‑TT Subtítulos en línea de la televisión estadounidense Añadidos de SMPTE, para subtítulos trasladados desde la emisión
iTT (.itt) Entregas a iTunes Store y Apple TV Tiempos en fotogramas (ttp:timeBase="smpte")

TTML en Subtitld

Conservado en el .ttml
  • El texto y los saltos de línea de cada subtítulo
  • Cursiva, negrita, subrayado, tachado y color
  • Dónde se sitúa en pantalla
  • Hablantes, como agentes
  • Inicio y fin, al milisegundo, en orden
Sin dónde ir
  • Tipografías, tamaños, fondos y contornos línea a línea
  • El tamaño y el lugar exactos de una región
  • Estilos que cambian con el tiempo, ruby, subtítulos de imagen
  • Traducciones junto al original, doblajes, caras de los hablantes

Guarda un proyecto .usfx para conservar lo que es de Subtitld.

Abrir un archivo TTML

Subtitld abre .ttml, .dfxp, .itt y .xml, y:

  • lee TTML como esté escrito: en su espacio de nombres, en el DFXP antiguo, o con tt: delante de cada elemento;
  • lee todas las formas de tiempo, cada una contada desde el div y el body en que está;
  • sigue los estilos tal como los aplica TTML, conservando cursiva, negrita, subrayado, tachado y cualquier color distinto del blanco;
  • pone cada subtítulo donde lo muestra su región;
  • toma los agentes como hablantes, listos para el doblaje, y el xml:lang del archivo como idioma del proyecto;
  • lee la codificación que declara el archivo, y las entidades de HTML como &nbsp;.

Un archivo que no es XML bien formado se abre con un mensaje que indica la línea y la columna. Un archivo que no es TTML en absoluto lo dice.

Exportar TTML

El diálogo de exportación de Subtitld con TTML elegido y los hablantes escritos como agentes

Exportar, y después Subtítulos y TTML o DFXP, ofrece:

  • TextoEl original, una traducción, o ambos, con la traducción debajo.
  • Nombres de hablantesSe omiten, van antes del texto (Thom: …), o como agentes (ttm:agent), la forma propia de TTML.
  • FormatoSe conserva, o se quita.
  • Desplazar tiemposCada subtítulo antes o después en la misma cantidad.
  • AspectoBlanco con contorno negro, o tal como lo dibuja la vista previa de Subtitld: su tipografía, color y recuadro translúcido.

El archivo es TTML 1 en UTF-8. Los tiempos se escriben como 00:00:23.000, cada lugar donde se sitúan los subtítulos como una región, el formato como span, y los saltos de línea como <br/>. Su xml:lang es el idioma del texto que contiene. TTML y DFXP obtienen el mismo archivo; solo cambia la extensión.

TTML o WebVTT

WebVTT para un <track> en una página web: los navegadores lo leen por sí mismos. TTML para las emisoras, para los servicios de streaming que lo piden, y para reproductores que lo leen, como dash.js y Shaka Player. La página de WebVTT tiene el resto.

Curiosidades

2010

TTML 1.0 se convirtió en Recomendación del W3C en noviembre de 2010, tras borradores que llevaban el nombre de su primer perfil: el Distribution Format Exchange Profile, DFXP.

ttaf1

El espacio de nombres antiguo, http://www.w3.org/2006/10/ttaf1, viene de los borradores de 2006, cuando TTML era el Timed Text Authoring Format. Los archivos todavía lo llevan.

Emmy

En 2016 el W3C recibió un Technology & Engineering Emmy por TTML, junto a HBO, Netflix, Telestream y SMPTE.

Formatos relacionados

¿Tienes un .ttml que corregir?

Ábrelo en Subtitld con el vídeo y reajústalo sobre la forma de onda.

Descargar Subtitld