Convertir TTML a VTT
O pega el texto de los subtítulos
Qué cambia esta conversión
3 cosas se descartan o requieren una decisión
- Estilo
todo el estilo excepto negrita y cursiva (color, contorno, sombra, márgenes)
- Posición
la posición en pantalla (cada bloque vuelve a la posición predeterminada)
- Contenido específico del formato
contenido que el formato de origen guarda fuera de sus bloques (bloques que no son cue, texto de cabecera, ajustes por bloque, eventos comentados): el formato de destino no tiene sitio para él
Esta lista proviene de la matriz de capacidades de estos dos formatos, no del archivo concreto que has cargado. Un archivo específico puede perder más si usa características que el formato permite pero que la matriz no modela.
Esta página convierte TTML en VTT. Arrastra un archivo —o pega el texto— y obtienes la versión VTT. La conversión se ejecuta por completo en el navegador, así que no se sube nada y no se necesita cuenta.
Los dos formatos no guardan lo mismo, y la diferencia no es cosmética: el estilo, la posición y el contenido propio del formato no tienen dónde ir en VTT. La lista de arriba proviene de lo que cada formato puede expresar, no de tu archivo, así que es la misma antes de cargar nada.
Un archivo basta, y una temporada completa también: la cola los recorre en orden y los resultados se descargan juntos en un único ZIP.
Ejemplos
Un archivo TTML típico, convertido a VTT
Entrada
<?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>
Resultado
WEBVTT
00:00:01.000 --> 00:00:03.500
Hello <i>there</i>.
00:00:03.500 --> 00:00:06.000
How are you?
Fine, thanks.
Se pierden el estilo, la posición y el contenido propio del formato. El resto coincide línea por línea.
La misma conversión con una entrada difícil
Entrada
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:frameRate="25" xml:lang="en">
<body>
<div>
<p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
<p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
<p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
<p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom & Jerry.</p>
</div>
</body>
</tt>
Resultado
WEBVTT
00:00:01.500 --> 00:00:03.500
Loaded from an offset and a duration.
00:00:04.000 --> 00:00:06.500
A coarser clock spelling.
00:00:07.000 --> 00:00:08.480
Frames, at 25fps.
00:00:09.000 --> 00:00:11.000
<font color="#FF0000">Half-open</font> and Tom & Jerry.
Estos son los daños que traen los archivos reales: finales de línea mezclados, espacios sueltos, campos vacíos. Compáralo con el ejemplo limpio de arriba para ver qué perdona el analizador.
Preguntas frecuentes
¿Qué estilo se conserva de TTML a VTT?
El énfasis, escrito en el texto como etiquetas: la negrita, la cursiva, el subrayado y un color salen como `<b>`, `<i>`, `<u>` y `<font color="…">`, que los navegadores aplican. Lo que el archivo VTT no llevará es la tabla de estilos en la que se apoya TTML: la fuente, su tamaño, el contorno, la sombra y los márgenes se van, y la página que incrusta los subtítulos los estiliza con su propio CSS.
¿Qué pasa con la posición en pantalla al convertir TTML a VTT?
VTT no puede decir dónde se dibuja un subtítulo, así que las referencias `region` y `style` que lleva un `<p>` se descartan al salir de TTML, y cada bloque vuelve a la posición predeterminada que elige el reproductor: el borde inferior del fotograma, centrado, en la mayoría de los casos.
¿Qué ocurre con el prólogo TTML y sus tablas <styling> y <layout> al pasar a VTT?
Se descartan. Un archivo TTML guarda su aspecto y su disposición en la cabecera, no en las palabras: la declaración XML y sus espacios de nombres, la tabla `<styling>` de estilos con nombre (`tts:color`, `tts:fontWeight`), la tabla `<layout>` de regiones con nombre (`tts:origin`, `tts:extent`), cualquier `<metadata>` y los atributos `style` / `region` con los que un `<p>` apunta a ellas. VTT guarda bloques de subtítulos, no un documento, así que nada de esa cabecera tiene dónde caer. El estilo escrito dentro de un párrafo es otra cosa: un `<span tts:fontStyle="italic">` es énfasis sobre las palabras y se escribe con la marca propia de VTT allí donde VTT la tiene.
¿Qué aspecto tiene la salida cuando TTML se convierte en VTT?
Como VTT: una línea de identificador opcional encima de cada bloque, que ningún reproductor muestra. Cada bloque TTML se convierte en un bloque VTT, en el mismo orden y con el mismo texto.
¿Son exactos los tiempos TTML en el archivo VTT?
Sí, al milisegundo, que es lo más fino que llega cualquiera de los dos formatos. Tanto TTML como VTT escriben un instante de la misma manera, `00:00:04.126`, así que los códigos de tiempo salen carácter por carácter como entraron.
¿Cómo sale en VTT un bloque TTML de dos líneas?
Como dos líneas, una debajo de la otra. La pareja se mantiene: las dos líneas TTML siguen perteneciendo a un mismo subtítulo en la salida VTT, y el reproductor las muestra juntas.
¿Mantienen los bloques TTML su orden en la salida VTT?
Sí, y de paso se ordenan por hora de inicio: primero los más tempranos, que es lo que esperan todos los formatos de este sitio y cómo los leen los reproductores. Si tu archivo TTML traía los bloques desordenados, la salida VTT los devuelve a su orden; eso cambia la estructura del archivo, no su contenido, y es deliberado.
¿Puedo convertir el VTT de vuelta a TTML?
Sí, y esa dirección tiene su propia lista: convertir VTT en TTML pierde el contenido propio del formato. La lista es distinta de la de arriba porque los dos formatos guardan cosas distintas.
¿Conserva la salida VTT la codificación del archivo TTML?
No: la salida es UTF-8, con finales de línea Unix y sin marca de orden de bytes, sea cual sea la que usara el archivo TTML. Un archivo que llega en UTF-16 o en una codificación Windows de un solo byte se decodifica a la entrada (el panel de resultados lo indica cuando ocurre); lo que sale es siempre el mismo VTT en UTF-8.