Convertir TTML a SMI
O pega el texto de los subtítulos
Qué cambia esta conversión
2 cosas se descartan o requieren una decisión
- Estilo
todo el estilo excepto negrita y cursiva (color, contorno, sombra, márgenes)
- 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 SMI. Arrastra un archivo —o pega el texto— y obtienes la versión SMI. El proceso ocurre 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 y el contenido propio del formato no tienen dónde ir en SMI. La lista de arriba procede de lo que cada formato puede expresar, no de tu archivo, así que no varía con lo que cargues.
Un archivo vale, y una temporada completa también: la cola los procesa en orden y los resultados se descargan juntos en un único ZIP.
Ejemplos
Un archivo TTML típico, convertido a SMI
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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello <i>there</i>.
<SYNC Start=3500>
<P>
<SYNC Start=3500>
<P>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
Se pierden el estilo 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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1500>
<P>Loaded from an offset and a duration.
<SYNC Start=3500>
<P>
<SYNC Start=4000>
<P>A coarser clock spelling.
<SYNC Start=6500>
<P>
<SYNC Start=7000>
<P>Frames, at 25fps.
<SYNC Start=8480>
<P>
<SYNC Start=9000>
<P><font color="#FF0000">Half-open</font> and Tom & Jerry.
<SYNC Start=11000>
<P>
</BODY>
</SAMI>
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 sobrevive de TTML a SMI?
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 SMI 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é ocurre con el prólogo TTML y sus tablas <styling> y <layout> en SMI?
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. SMI 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 SMI allí donde SMI la tiene.
¿Qué aspecto tiene la salida cuando TTML se convierte en SMI?
Como SMI: sin números de bloque y sin línea de código de tiempo; cada bloque es una etiqueta `<SYNC Start=…>` con su texto en un `<P>` debajo, y —como un SYNC reemplaza lo que hubiera en pantalla— un bloque `<P> ` justo después que deja la pantalla vacía. Cada bloque TTML se convierte en un bloque SMI, en el mismo orden y con el mismo texto.
¿Son exactos los tiempos TTML en el archivo SMI?
Sí, al milisegundo, que es lo más fino que llega cualquiera de los dos formatos. TTML escribe un instante como `00:00:04.126` y SMI escribe el mismo instante como `Start=4126`; nada se redondea ni se desplaza, y un bloque que estaba en pantalla 2,9 segundos sigue estándolo.
¿Cómo sale en SMI un bloque TTML de dos líneas?
Como dos líneas con un `<br>` entre ellas, que es como SAMI escribe un salto de línea duro. La pareja se mantiene: las dos líneas TTML siguen perteneciendo a un mismo subtítulo en la salida SMI, y el reproductor las muestra juntas.
¿Conservan los bloques TTML su orden en la salida SMI?
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 SMI los devuelve a su orden; eso cambia la estructura del archivo, no su contenido, y es deliberado.
¿Puedo convertir el SMI de vuelta a TTML?
Sí, y esa dirección tiene su propia lista: convertir SMI 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 SMI 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 SMI en UTF-8.