Convertir xml a srt

Convertidor online gratuito de XML a SRT

Convierte el XML de captions en subtítulos SRT compatibles y editables, y verifica la sincronización y el formato perdido.

Convertir XML a SRT online - gratis

Uploading…
Los archivos seleccionados superan el límite total de 9 MB. Selecciona archivos más pequeños o en menor cantidad.

Tu archivo se procesa al instante y se elimina en cuanto lo descargas.

Cómo funciona

  1. 1/3

    Sube tu archivo .xml

    Haz clic para seleccionar el archivo que quieres convertir o simplemente arrástralo y suéltalo en el área indicada.

  2. 2/3

    Realiza la conversión de .xml a .srt

    Una vez subido el archivo correctamente, haz clic en convertir cuando estés listo.

  3. 3/3

    Descarga el archivo .srt convertido

    El resultado de la conversión está listo para descargar.

Cómo convertir un archivo xml a srt

Un editor de vídeo, un reproductor multimedia o un servicio de subtítulos puede requerir SRT cuando los subtítulos se exportaron como XML desde otro sistema. Convertir el archivo hace que los subtítulos sean portátiles y editables, pero solo si el XML contiene texto de las señales y datos de temporización identificables.

Qué es el formato XML

XML es un lenguaje de marcado estructurado, no un formato de subtítulos único. Los sistemas de subtítulos y transcripciones utilizan distintos esquemas XML, incluidos TTML/DFXP, EBU-TT, Final Cut Pro XML y exportaciones propietarias de software de edición, difusión y conversión de voz a texto.

Un archivo XML de subtítulos puede almacenar señales en elementos como <p begin="00:00:01.000" end="00:00:04.000">, o utilizar atributos denominados start, end, in, out o duration. Final Cut Pro XML puede describir un proyecto de edición en lugar de contener señales de subtítulos utilizables directamente, por lo que puede requerir una exportación desde la aplicación original antes de la conversión.

XML no tiene una estructura universal de subtítulos. Cambiar el nombre de captions.xml a captions.srt no lo convierte; el software debe identificar los campos de temporización, extraer el texto visible y reescribir los datos con la sintaxis de SRT.

Qué es el formato SRT

SRT es un formato de texto sin formato compatible con la mayoría de los reproductores de vídeo, editores no lineales, servidores multimedia y plataformas de subtítulos. Cada señal contiene un número secuencial, una hora de inicio y finalización, el texto del subtítulo y una línea en blanco:

1
00:00:01,000 --> 00:00:04,000
Example caption.

Las marcas de tiempo de SRT utilizan comas antes de los milisegundos y el formato HH:MM:SS,mmm. En cambio, los subtítulos XML pueden utilizar segundos decimales, puntos, números de fotograma, tiempo de reloj, ticks o duraciones ISO 8601. SRT ocupa poco espacio, es fácil de editar en un editor de texto y ofrece una amplia compatibilidad, pero contiene muchos menos metadatos y opciones de estilo que la mayoría de los esquemas XML de subtítulos.

Convertir XML reconocido con Subtitle Edit

  1. Crea una copia de seguridad del XML de origen.
  2. Instala la versión de escritorio actual de Subtitle Edit, un editor de subtítulos de código abierto para Windows.
  3. Abre el archivo mediante File → Open. Subtitle Edit puede importar varios formatos estándar de subtítulos y captions, pero la compatibilidad depende del esquema XML específico.
  4. Comprueba las señales importadas en la cuadrícula de subtítulos y la línea de tiempo. Compara la primera, la intermedia y la última señal con el origen o el vídeo, y comprueba los saltos de línea y los caracteres no latinos.
  5. Exporta mediante File → Save as, selecciona SubRip (*.srt) y elige la codificación UTF-8 si el cuadro de diálogo ofrece una opción de codificación.

Si el archivo se abre como XML normal, no importa ninguna señal o genera tiempos incorrectos, probablemente se trate de un esquema no compatible o específico de un proyecto. Inspeccionar el XML en un editor de texto puede revelar si contiene texto de subtítulos y datos de temporización reales; no consideres que la apertura correcta del archivo sea una prueba de que la conversión es correcta.

Usar un convertidor en línea para archivos documentados y no confidenciales

Los servicios de subtítulos en línea, como Happy Scribe y VEED, son compatibles con determinados formatos de subtítulos y captions, pero la compatibilidad con XML varía según el producto y puede estar limitada a un esquema con nombre, como TTML. Verifica que el servicio indique explícitamente el tipo exacto de XML antes de cargarlo. No cargues subtítulos confidenciales, no publicados o que contengan información personal identificable, a menos que se permita el procesamiento por terceros.

Los sitios web genéricos de XML a texto o XML a SRT suelen seleccionar los elementos incorrectos, ignorar los espacios de nombres, tratar los milisegundos como segundos o devolver un archivo vacío. Descarga el resultado, ábrelo en un editor de subtítulos y compara sus tiempos con el vídeo antes de utilizarlo.

Convertir un esquema personalizado predecible con Python

Un script es adecuado cuando cada señal tiene valores reconocibles de start, end y texto. Este ejemplo admite tiempos de reloj y segundos numéricos, además de valores de duration:

import re
import sys
import xml.etree.ElementTree as ET

def seconds(value):
    value = value.strip().replace(',', '.')
    if re.fullmatch(r'\d+(?:\.\d+)?', value):
        return float(value)
    match = re.fullmatch(r'(\d+):(\d{2}):(\d{2})(?:\.(\d+))?', value)
    if not match:
        raise ValueError(f'Unsupported time: {value}')
    h, m, s, fraction = match.groups()
    return int(h) * 3600 + int(m) * 60 + int(s) + float('0.' + (fraction or '0'))

def srt_time(value):
    ms = max(0, round(value * 1000))
    h, remainder = divmod(ms, 3600000)
    m, remainder = divmod(remainder, 60000)
    s, ms = divmod(remainder, 1000)
    return f'{h:02}:{m:02}:{s:02},{ms:03}'

root = ET.parse(sys.argv[1]).getroot()
cues = []
for element in root.iter():
    start = element.get('start') or element.get('begin')
    end = element.get('end')
    duration = element.get('duration') or element.get('dur')
    if not start or (not end and not duration):
        continue
    start = seconds(start)
    end = seconds(end) if end else start + seconds(duration)
    text = ' '.join(''.join(element.itertext()).split())
    if text and end > start:
        cues.append((start, end, text))

cues.sort()
with open(sys.argv[2], 'w', encoding='utf-8', newline='\n') as output:
    for number, (start, end, text) in enumerate(cues, 1):
        output.write(f'{number}\n{srt_time(start)} --> {srt_time(end)}\n{text}\n\n')

Ejecuta el script con python xml_to_srt.py captions.xml captions.srt. Cambia los nombres de los atributos y la selección de señales según el esquema de origen. El script no interpreta códigos de tiempo SMPTE basados en fotogramas, duraciones ISO 8601, ticks, unidades de milisegundos no documentadas, espacios de nombres XML que requieran una búsqueda cualificada ni elementos independientes de estilo y hablante. También convierte los saltos de línea integrados en espacios; sustituye esa línea de procesamiento de texto si es necesario conservar la estructura de las líneas.

Comprobar la temporización, la codificación y los metadatos perdidos

  • Confirma la base temporal antes de la conversión. Los recuentos de fotogramas requieren la frecuencia de fotogramas de origen; los valores numéricos pueden representar segundos, milisegundos o ticks.
  • Convierte correctamente las duraciones relativas: una señal con begin y dur termina en begin + dur.
  • Comprueba si hay señales superpuestas, señales de longitud cero, tiempos invertidos, texto ausente, señales duplicadas y varias pistas de idioma. Los lectores de SRT gestionan estos casos de forma incoherente.
  • Conserva la codificación de caracteres declarada en el XML al leer el origen y guarda el SRT como UTF-8. Inspecciona los caracteres acentuados y los alfabetos no latinos después de la exportación.
  • Espera perder funciones específicas de XML, como el posicionamiento, los colores, las fuentes, los metadatos del hablante, la temporización de karaoke, el orden de lectura y los estilos de línea complejos. Recrea manualmente las etiquetas de hablante o el formato esenciales.
  • Abre el SRT resultante en Subtitle Edit u otro editor de subtítulos y previsualízalo junto con el vídeo. Comprueba las primeras y últimas señales, los cambios de escena, los saltos de línea y la sincronización antes de entregarlo.

XML vs SRT: comparación de formatos

Cómo se comparan los formatos XML y SRT en las propiedades que más importan para esta conversión.

Comparación de los formatos de archivo XML y SRT
Propiedad .XML Extensible Markup Language .SRT SubRip Subtitle
Estándar abierto Sí Parcialmente abierto
Compresión Sin compresión Sin compresión
Tamaño de archivo típico Pequeño Muy pequeño
Se abre en un navegador web Sí, de forma nativa Parcial
Edición posterior Fácil Fácil
Compatibilidad con metadata Básico Básico
Legible como texto plano Sí Sí
Más adecuado para Intercambio de datos Compartir y distribución
Introducido 1998 1997
Desarrollador W3C Unknown / SubRip community
Tipo MIME application/xml application/x-subrip

Preguntas frecuentes

¿Es gratuito el convertidor de XML a SRT?

Sí, convertir XML a SRT en 101convert.com es totalmente gratuito. No se requiere registro, correo electrónico ni instalación. Si necesitas un límite de tamaño de archivo mayor o quieres convertir más archivos a la vez, consulta nuestros planes.

¿Qué tamaño puede tener mi archivo XML?

Puedes subir archivos XML de hasta 100 MB y convertir hasta 100 archivos a la vez en un solo lote.

¿Qué ocurre con mis archivos subidos?

Los archivos se procesan automáticamente y se eliminan de nuestros servidores pocos minutos después de la conversión. Nunca vemos ni compartimos tus archivos.

¿Necesito instalar algún programa para convertir XML a SRT?

No. La conversión de XML a SRT se realiza completamente online en tu navegador y funciona en Windows, Mac, Linux, Android y iPhone.

¿Ha fallado la conversión?

En la mayoría de los casos, la causa es un formato de archivo incorrecto. Sube un archivo XML válido para esta conversión de XML a SRT. En ocasiones, el problema también puede estar de nuestro lado. Analizamos los fallos de conversión recurrentes y desactivamos o reparamos el convertidor si detectamos algún defecto.

¿Se perderán el formato y la posición de los subtítulos XML al convertirlos a SRT?

Por lo general, sí: SRT conserva los números de los subtítulos, las horas de inicio y finalización y el texto, pero el estilo XML, los colores, los datos del hablante, la posición en pantalla y otros atributos pueden simplificarse o descartarse. Los saltos de línea básicos suelen conservarse, según el formato de subtítulos XML.

¿Se mantendrá la sincronización de los subtítulos al convertir XML a SRT?

Puede mantenerse precisa si el XML usa códigos de tiempo compatibles y la base de tiempo correcta, pero la sincronización basada en fotogramas o específica del formato puede requerir conversión. Una discrepancia en la velocidad de fotogramas puede desplazar los inicios y finales de los subtítulos, mientras que los subtítulos superpuestos o mal formados pueden modificarse o rechazarse.

¿Por qué la conversión de mis subtítulos XML genera subtítulos SRT vacíos o faltantes?

El XML genérico no es automáticamente un formato de subtítulos, por lo que la conversión puede fallar cuando el archivo utiliza una estructura de subtítulos, espacios de nombres, campos de tiempo o elementos de texto no compatibles. El XML debe contener entradas de subtítulos reconocibles, con texto legible y horas de inicio y finalización válidas.

¿Puedo convertir un SRT de nuevo al XML original sin perder información?

Por lo general, no, porque SRT no puede representar todos los datos de los subtítulos XML, como el estilo detallado, la posición, los metadatos y los campos de tiempo personalizados. El SRT resultante sigue siendo editable como texto de subtítulos sin formato, pero para volver a convertirlo normalmente hay que recrear la información descartada.