Formatos de subtítulos: diferencias entre SRT, VTT y ASS
8 min de lectura
Los archivos de subtítulos son simples archivos de texto, pero las diferencias entre ellos determinan dónde y cómo se verá tu vídeo. En este artículo explicamos la estructura de los tres formatos más habituales, el origen del problema de la codificación de caracteres y las causas técnicas de los desfases de sincronía.
SRT: el más extendido y el más simple
El formato SubRip Text toma su nombre de un programa de extracción de subtítulos de DVD y su estructura es lo más sencilla posible:
1
00:00:01,500 --> 00:00:04,200
Hola, esta es la primera línea de subtítulo.
2
00:00:04,500 --> 00:00:07,800
Esta es la segunda línea y
está dividida en dos renglones.
Cada bloque consta de cuatro partes:
- Número de orden (empieza en 1)
- Intervalo de tiempo (inicio
-->fin) - Texto (una o varias líneas)
- Línea en blanco (separa los bloques)
El formato de tiempo es horas:minutos:segundos,milisegundos y el separador de milisegundos es la coma. Este detalle es uno de los puntos clave que lo distinguen de VTT.
Los límites de SRT:
- No hay información de estilo. Tipografía, tamaño, color, posición: nada de eso se define en el archivo. El reproductor o la herramienta de incrustado los determina desde fuera.
- No hay posicionamiento. Todos los subtítulos aparecen en el mismo sitio (normalmente centrados abajo).
- Formato limitado. Algunos reproductores admiten las etiquetas HTML
<i>(cursiva),<b>(negrita) y<u>(subrayado), pero no es una característica estándar; no todos los reproductores las interpretan.
A cambio tiene un soporte universal: prácticamente cualquier reproductor, cualquier televisor y cualquier editor de subtítulos lee SRT. Al ser tan simple, se puede editar a mano en un editor de texto.
VTT: SRT diseñado para la web
WebVTT (Web Video Text Tracks) se desarrolló para el vídeo HTML5. Se parece mucho a SRT, pero presenta tres diferencias:
WEBVTT
1
00:00:01.500 --> 00:00:04.200
Hola, esta es la primera línea de subtítulo.
2
00:00:04.500 --> 00:00:07.800 position:50% line:80%
Esta línea tiene una posición personalizada.
Diferencia 1: la cabecera WEBVTT. El archivo tiene que empezar obligatoriamente con esa línea.
Diferencia 2: el separador con punto. En las marcas de tiempo, el separador de milisegundos no es la coma sino el punto. La forma más sencilla de convertir un archivo SRT a VTT es añadir la línea WEBVTT al principio y cambiar las comas por puntos.
Diferencia 3: indicaciones de posición y estilo. Al final de la línea de tiempo se pueden añadir valores como position, line, align o size. Además, es posible aplicar estilos con CSS.
La verdadera importancia de VTT: la etiqueta <video> de HTML5 solo acepta VTT.
<video controls>
<source src="video.mp4" type="video/mp4">
<track src="subtitulos-es.vtt" kind="subtitles" srclang="es" label="Español" default>
<track src="subtitulos-en.vtt" kind="subtitles" srclang="en" label="English">
</video>
Esta estructura tiene una ventaja importante: el texto del subtítulo lo pueden leer los motores de búsqueda. Un subtítulo incrustado en la imagen forma parte del vídeo y las máquinas no lo pueden leer; un archivo VTT independiente, en cambio, es accesible como texto.
El atributo kind distingue distintos tipos de pista: subtitles (traducción), captions (para personas sordas, incluye también los efectos de sonido), descriptions (audiodescripción para personas ciegas), chapters (marcas de capítulo).
ASS/SSA: potencia de estilo
Advanced SubStation Alpha es un formato mucho más complejo y lleva la información de estilo dentro de sí mismo:
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, OutlineColour, ...
Style: Predeterminado,Arial,48,&H00FFFFFF,&H00000000,...
Style: Cartel,Arial,36,&H0000FFFF,&H00000000,...
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Text
Dialogue: 0,0:00:01.50,0:00:04.20,Predeterminado,,0,0,0,,Hola.
Dialogue: 0,0:00:05.00,0:00:07.00,Cartel,,0,0,0,,{\pos(800,200)}CERRADO
Lo que ofrece ASS:
- Estilos con nombre. Se definen estilos distintos para distintos hablantes o tipos de texto.
- Posicionamiento libre. Con
\pos(x,y)el subtítulo se puede colocar en cualquier punto de la pantalla. - Control de color y borde. Cada estilo lleva su propia paleta.
- Animación. Desplazamiento, fundido, rotación, escalado.
- Efecto karaoke. Resaltado sucesivo de las sílabas en la letra de una canción.
- Capas. Subtítulos superpuestos.
¿Cuándo hace falta? Cuando la posición, el color o el movimiento del subtítulo tienen que cambiar según el contenido: poner la traducción de un cartel que aparece en pantalla justo al lado de ese cartel, distinguir a los hablantes con colores, resaltar la letra de una canción.
El precio: su soporte no es tan amplio como el de SRT. Algunos reproductores ignoran los estilos y muestran texto plano; otros directamente no lo abren.
Codificación de caracteres: el gran quebradero de cabeza
Este es el problema más frecuente con los subtítulos en idiomas con caracteres especiales, y su origen está en la naturaleza misma de los formatos.
Los archivos de subtítulos son texto plano y los archivos de texto no indican por sí mismos en qué codificación se guardaron. Un programa tiene que hacer una suposición al abrirlos.
Históricamente, los textos con caracteres no ingleses se guardaban en estas codificaciones:
| Codificación | Época | Estado | |---|---|---| | ISO-8859-1 / ISO-8859-9 | Años 90 y 2000 | Antigua | | Windows-1252 / Windows-1254 | Sistemas Windows | Antigua | | UTF-8 | Desde los años 2000 | Estándar moderno |
Cuando lees un archivo Windows-1252 suponiendo que es UTF-8, las letras propias del idioma se estropean:
| Correcto | Aspecto corrompido | |---|---| | á | á | | é | é | | í | à | | ñ | ñ | | ó | ó | | ü | ü |
Solución: abre el archivo en un editor de texto y vuelve a guardarlo como UTF-8. En el Bloc de notas encontrarás la opción de codificación en la parte inferior de la ventana Guardar como; en VS Code, la codificación actual se muestra en la esquina inferior derecha y se puede cambiar haciendo clic sobre ella.
La cuestión del BOM: los archivos UTF-8 pueden llevar opcionalmente al principio una "marca de orden de bytes" (BOM). Algunas herramientas leen mal la primera línea en archivos con BOM. Si tienes problemas, prueba con UTF-8 sin BOM.
Velocidad de fotogramas y desfase de sincronía
La sincronía de los subtítulos se rompe de dos formas distintas y cada una tiene una solución diferente.
Desfase constante
El subtítulo llega siempre adelantado o retrasado en la misma medida.
Causa: al principio de tu vídeo hay un fragmento que no está contemplado en el archivo de subtítulos (logotipo de la distribuidora, pantalla de aviso), o al revés.
Solución: suma o resta el mismo valor a todas las marcas de tiempo. Los editores de subtítulos lo hacen en una sola operación.
Desfase creciente
Al principio la sincronía es buena, pero se estropea hacia el final.
Causa: desajuste de velocidad de fotogramas. Un mismo contenido puede existir en versiones con distintas velocidades:
| Estándar | Velocidad de fotogramas | Uso | |---|---|---| | Cine | 24 fps | Rodaje cinematográfico | | PAL | 25 fps | Televisión europea | | NTSC | 23,976 fps | América, distribución digital | | Vídeo NTSC | 29,97 fps | Televisión americana |
Un subtítulo preparado para 25 fps acumula un error de aproximadamente el 4 % por segundo cuando se reproduce sobre un vídeo a 23,976 fps. En una película de dos horas, eso significa un desfase superior a cinco minutos hacia el final.
Solución: corrección proporcional. Todas las marcas de tiempo se multiplican por la razón (fps destino / fps origen). Los editores de subtítulos ofrecen una opción de "conversión de velocidad de fotogramas".
Algunos formatos antiguos (como MicroDVD) guardan el tiempo directamente mediante el número de fotograma, no en segundos. En esos formatos es imposible calcular el tiempo sin conocer la velocidad de fotogramas.
Incrustar y quemar: qué cambia en el archivo
Incrustado (subtítulo blando): el subtítulo se añade al contenedor de vídeo como una pista aparte. MKV lo admite a la perfección; en MP4 el soporte es más limitado (normalmente solo ciertos formatos). No se toca el dato de vídeo, así que se puede copiar la pista y la calidad se conserva.
Quemado (hardsub): el subtítulo se dibuja sobre cada fotograma del vídeo y se convierte en píxeles. Esto exige recodificar el vídeo, así que hay cierta pérdida de calidad.
Durante el quemado, el texto del subtítulo se pierde de forma permanente; solo queda la imagen. Por eso:
- No se puede deshacer.
- Los motores de búsqueda no lo pueden leer.
- Los lectores de pantalla no acceden a él.
- No se puede desactivar.
A cambio, no hay ningún problema de compatibilidad: el subtítulo ya forma parte de la imagen.
En resumen
SRT es el formato más simple y con soporte más amplio, pero no lleva información de estilo ni de posición; VTT está diseñado para la web, es el único formato que acepta la etiqueta de vídeo de HTML5 y el hecho de que los motores de búsqueda puedan leerlo es una ventaja añadida; ASS ofrece potencia de estilo, posición y animación, pero su soporte es más estrecho. El problema más frecuente en los subtítulos con caracteres acentuados es la codificación, y la solución es volver a guardar el archivo como UTF-8. En los desfases de sincronía, el desfase constante se corrige con un simple desplazamiento temporal y el creciente con una corrección proporcional a la velocidad de fotogramas. Y la elección entre incrustar y quemar es una decisión irreversible: el quemado funciona en todas partes, pero el texto del subtítulo se pierde para siempre.
Preguntas frecuentes
SRT y VTT parecen casi idénticos, ¿cuál es la diferencia real?
Estructuralmente se parecen mucho, pero hay tres diferencias: un archivo VTT empieza con la línea WEBVTT, usa punto en lugar de coma en las marcas de tiempo (00:00:01.500) y admite indicaciones de posición, alineación y estilo. Lo más importante: la etiqueta de vídeo de HTML5 solo acepta VTT, así que no puedes usar un archivo SRT directamente en una página web.
¿Por qué la codificación de caracteres da tantos problemas?
Porque los archivos de subtítulos son texto plano y los archivos de texto no indican por sí mismos en qué codificación se guardaron. Un programa tiene que hacer una suposición al abrirlos. Los subtítulos en turco se guardaban antiguamente con la codificación Windows-1254; cuando una herramienta moderna que asume UTF-8 lee ese archivo, letras como ş, ğ o ı se convierten en caracteres sin sentido. Lo mismo ocurre con los acentos y la ñ del español.
¿Por qué la velocidad de fotogramas afecta a la sincronía de los subtítulos?
Algunos formatos antiguos de subtítulos guardan el tiempo mediante el número de fotograma en vez de en segundos. Además, una misma película puede tener versiones a distintas velocidades: 24 fps en cine, 25 fps en televisión PAL, 23,976 fps en NTSC. Si un subtítulo preparado para 25 fps se reproduce sobre un vídeo a 23,976 fps, cada segundo acumula un pequeño error y al cabo de dos horas el desfase puede llegar a varios minutos.
¿Cuándo hace falta el formato ASS?
Cuando la posición, el color, la tipografía o el movimiento del subtítulo tienen que cambiar según el contenido. Por ejemplo, colocar la traducción de un cartel que aparece en pantalla justo al lado de ese cartel, distinguir a los distintos hablantes con colores diferentes o resaltar la letra de una canción al estilo karaoke. SRT no puede hacer nada de eso: cada línea aparece con el mismo estilo y en la misma posición.
Pruébalo ahora mismo con Videoya Altyazı Ekle.
Probar Videoya Altyazı Ekle