Formato de subtítulos TTML
Qué puede expresar este formato
- Estilo del texto
- Fuentes, color, contorno, sombra
- Posición en pantalla
- Sí
- Sincronización karaoke
- No
- Saltos de línea dentro de un bloque
- Sí
- Línea de tiempo
- Hora de inicio y de fin para cada bloque
- Resolución de tiempos
- 1 ms
- Tiempos guardados como números de fotograma
- No
- Texto de derecha a izquierda
- Sí
Ejemplos
Un archivo TTML típico, y lo que se lee de él
Archivo
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
<head>
<styling>
<style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
Qué contiene
2 cues, 3 lines of text
00:00:01.000 → 00:00:03.500
Hello there. [italic ×1]
[region="bottom" style="s1"]
00:00:03.500 → 00:00:06.000
How are you?
Fine, thanks.
[region="bottom"]
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
styling 1 × <style> — "s1", the colour and weight a paragraph points at by name
layout 1 × <region> — "bottom", the origin and extent a paragraph points at by name
resolved the head is kept as it was written and is not applied here — a paragraph's style="s1" region="bottom" stays an attribute, not a colour or a screen positionEl lado derecho no es un archivo convertido: es lo que este sitio lee del lado izquierdo, y el punto de partida de cualquier conversión de ese archivo.
Un archivo TTML difícil, y lo que aún se lee de él
Archivo
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<div begin="00:00:01.000" end="00:00:05.000">
<p>Inherits its timing from the div, which we do not resolve.</p>
<p begin="00:00:06.000" end="00:00:07.000">This one has its own timing.</p>
</div>
<!-- <p begin="00:00:08.000" end="00:00:09.000">commented out</p> -->
<div>
<p begin="00:00:10.000"/>
<p begin="00:00:11.000" end="00:00:12.000">Last one.</p>
</div>
</body>
</tt>
Qué contiene
3 cues, 2 lines of text
00:00:06.000 → 00:00:07.000
This one has its own timing.
00:00:10.000 → 00:00:12.000
(no text)
00:00:11.000 → 00:00:12.000
Last one.
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
head none — no <styling> and no <layout>, and no paragraph points at one either
comments the commented-out <p> stays a comment, in the place it was written
divs the timings on an enclosing <div> are not pushed down onto the paragraphs inside it
Reported while reading — repaired or skipped, never silently:
1 × paragraphs with no readable begin time of their own (they were skipped — see the note about timing inherited from an enclosing div)
1 × paragraphs with neither an end time nor a duration of their own (their end times were generated)Los archivos reales llegan con marca de orden de bytes, finales de línea Windows, una línea suelta antes de un código de tiempo o un código que no se puede leer. Nada lanza una excepción: lo que no se entiende se informa en vez de descartarse en silencio.
Convertir TTML (Timed Text) a otro formato
Cada una de estas conversiones se ejecuta por completo en tu navegador. Las etiquetas indican qué cuesta esa dirección antes de abrirla.
- Precisión
- Contenido específico del formato
- Estilo
- Posición
- Contenido específico del formato
- Contenido específico del formato
- Tiempos
- Estilo
- Posición
- Precisión
- Contenido específico del formato
- Estilo
- Posición
- Velocidad de fotogramas
- Contenido específico del formato
- Estilo
- Posición
- Contenido específico del formato
- Estilo
- Contenido específico del formato
- Estilo
- Posición
- Contenido específico del formato
- Precisión
- Contenido específico del formato
- Tiempos
- Estilo
- Posición
- Saltos de línea
- Contenido específico del formato
- Estilo
- Posición
- Contenido específico del formato
Convertir a este formato
- SubRip (SRT) → TTML (Timed Text)
- WebVTT (VTT) → TTML (Timed Text)
- Advanced SubStation Alpha (ASS) → TTML (Timed Text)
- SubStation Alpha (SSA) → TTML (Timed Text)
- YouTube SBV → TTML (Timed Text)
- SAMI (SMI) → TTML (Timed Text)
- LRC Lyrics → TTML (Timed Text)
- MicroDVD → TTML (Timed Text)
- SubtitleMatrix JSON → TTML (Timed Text)
- Plain Text (TXT) → TTML (Timed Text)
- CSV Spreadsheet → TTML (Timed Text)
TTML (Timed Text) es uno de los formatos de subtítulos que trata este sitio, y esta página es su referencia: qué puede guardar, qué no y una página para cada formato al que puedes convertirlo.
La tabla de arriba lo es todo: no hay una lista de funciones ocultas. Cuando una fila dice que no, eso es exactamente lo que se pierde al convertir a TTML, y cada página de conversión enlazada abajo lo dice antes de que abras un archivo.
Todas esas conversiones se ejecutan en el navegador. No se sube nada y no hace falta cuenta, lo que importa para material bajo un acuerdo de confidencialidad, una historia clínica o un embargo de emisión.
Preguntas frecuentes
¿Qué es un archivo TTML?
`.ttml` es TTML, el formato de texto cronometrado en el que el mundo de la emisión y el streaming escribe sus subtítulos: un documento XML cuya cabecera `<head>` declara estilos y regiones con nombre, y cuyos elementos `<p>` son los subtítulos. Las cadenas de subtitulado para streaming lo hablan, y los perfiles SMPTE-TT e IMSC se construyen sobre él.
¿Guarda TTML estilos?
Sí, y más que los demás: una tabla de estilos con fuentes, tamaños, colores, contornos y márgenes, además de códigos por bloque dentro del texto, así que una línea puede ir en negrita, con color y colocada sin ningún estilo con nombre. No guarda tiempos de karaoke: un archivo TTML registra cuándo empieza y termina un bloque, no cuándo se ilumina una sílaba. Aquí esas dos tablas son el `<head>`: `<styling>` contiene estilos con nombre (`tts:color`, `tts:fontWeight`, `tts:fontFamily`) y `<layout>` contiene regiones con nombre (`tts:origin`, `tts:extent`), y un `<p>` apunta a ellas por nombre (`style="s1" region="bottom"`) en vez de repetirlas.
¿Guarda cada bloque TTML un inicio y un final?
Sí, y un instante en un archivo TTML se lee `00:00:04.126`. Es lo más fino que llega TTML —al milisegundo— y el número es exacto, así que un bloque puede ser corto, largo o solaparse con el siguiente sin que nada quede implícito.
¿A qué formato conviene convertir TTML?
Nada en este sitio acepta todo lo que guarda un archivo TTML, así que no hay dirección gratuita: cada página de conversión nombra su propia lista de pérdidas. Elige el destino por cuál de esas listas puedes asumir, no por el formato que hayas visto más veces.
¿Qué guarda un archivo TTML fuera de sus bloques?
La declaración XML y todo el `<head>`: una tabla `<styling>` de estilos con nombre (`tts:color`, `tts:fontWeight`), una tabla `<layout>` de regiones con nombre (`tts:origin`, `tts:extent`) y cualquier `<metadata>`. Cada `<p>` se refiere a ellas por nombre en vez de repetirlas, así que un archivo puede reestilizar todos los subtítulos editando una sola entrada. Esas referencias viven en el párrafo y no en el modelo de bloques, y por eso convertir a un formato que no las tiene se informa como pérdida.