Ir al contenido
Castreon
Canales

Subtítulos WebVTT en HLS — desde teletexto, subtítulos DVB o voz

Actualizado el 27 oct. 2026

Los navegadores, móviles y smart TV que reproducen HLS no muestran el teletexto ni los subtítulos DVB en mapa de bits. Castreon puede convertirlos en una pista de subtítulos WebVTT dentro del HLS del canal — la pista que los espectadores activan con el botón CC del reproductor — o crear el texto a partir de la voz cuando la fuente no tiene ningún subtítulo.

Disponible desde Castreon 3.0.0, en todos los planes.

Activarlo

Editor del canal → Subtítulos → WebVTT en HLS (teletexto, OCR, voz), y luego la sección Subtítulos WebVTT:

  • Origen del texto:
    • automático (teletexto, luego DVB) — la página de subtítulos del teletexto si la fuente la tiene; si no, los subtítulos DVB;
    • teletexto — el texto se lee directamente de la página de teletexto, con los acentos del juego de caracteres del emisor: sin retardo y sin coste de CPU;
    • subtítulos DVB (imágenes, leídas con OCR) — los subtítulos DVB son imágenes; cada uno se lee con reconocimiento de texto (Tesseract) cuando aparece;
    • voz (reconocimiento automático) — el sonido se transcribe con whisper.cpp en fragmentos de 5–9 segundos, cortados en las pausas para no partir palabras.
  • Página de teletexto — 100–899; vacío = la primera página de subtítulos del flujo (a menudo 888 o 777).
  • Idioma — un código ISO 639 (ro, en, deu). Da nombre a la pista en el reproductor y elige el idioma del OCR y del reconocimiento de voz; vacío = del flujo (para voz: se detecta automáticamente).

Los subtítulos propios de la fuente también salen intactos en las salidas MPEG-TS (HTTP-TS, UDP, SRT…); la pista WebVTT es para HLS.

En el reproductor

La lista maestra HLS recibe una pista de subtítulos con el nombre del idioma escrito en su propio idioma (Română, Deutsch…). Las réplicas se sincronizan con el mismo reloj que la imagen, también con HLS fMP4, y la pista continúa a través de reinicios y cambios de fuente.

En la página del canal, la tarjeta Subtítulos WebVTT muestra el estado (activa, en espera con el motivo — por ejemplo La fuente no tiene teletexto —, error), el número de réplicas y de segmentos y, para voz, cuántos fragmentos se omitieron si el servidor no da abasto.

Qué necesita el servidor

  • Teletexto — nada más.
  • Subtítulos DVB (OCR) — Tesseract con el paquete de idioma: sudo apt install tesseract-ocr tesseract-ocr-ron (Rocky / RHEL: dnf install tesseract tesseract-langpack-ron desde EPEL). El instalador lo hace con OCR=1 (y OCR_LANGS="ron eng deu" para los idiomas). Sin el paquete de idioma, las letras con tilde salen sin tilde — el editor te avisa.
  • Voz — whisper-cli de whisper.cpp y un modelo ggml, por defecto en <data directory>/models/ggml-base.bin (otras rutas: whisper y whisper_model en /etc/castreon/castreon.json). Los modelos más grandes son más precisos, pero necesitan mucha más CPU; empieza con base y vigila la CPU del canal.

Si falta algo, el editor y la página del canal dicen qué, y la pista queda vacía hasta que se instale — el canal en sí funciona con normalidad.

Conviene saber

  • El reconocimiento de voz va unos segundos por detrás de la imagen en el borde en directo: sirve para canales sin subtítulos propios, no para programas en directo que necesitan una sincronización exacta.
  • Los resultados del OCR se guardan en caché: un subtítulo que se queda en pantalla se lee una sola vez.
  • Los subtítulos incrustados (que forman parte de la imagen) no se leen.

Privacidad

Cookies y almacenamiento local

Las cookies estrictamente necesarias están siempre activas. Las estadísticas y el marketing usan servicios de Google y solo se activan si los aceptas; hasta entonces no se envía nada a Google. Puedes retirar tu consentimiento aquí en cualquier momento.

Estrictamente necesarias

Sin ellas no funcionan el inicio de sesión, los formularios ni el idioma elegido. No requieren consentimiento (§ 25, apartado 2, n.º 2 TDDDG).

Siempre activas
Nombre Finalidad Duración Tipo
castreon-session Mantiene la sesión: inicio de sesión e idioma elegido 2 horas, renovada en cada visita Cookie
XSRF-TOKEN Protege los formularios contra solicitudes falsificadas 2 horas, renovada en cada visita Cookie
remember_web_… Solo si marcas «Recordarme» al iniciar sesión Hasta cerrar sesión, máx. 400 días Cookie
__cf_bm Cloudflare: distingue visitantes de bots, solo cuando se verifica el tráfico 30 minutos Cookie · Cloudflare
castreon:consent Recuerda tu elección de cookies 12 meses Almacenamiento local
theme Apariencia de la cuenta de cliente: clara, oscura o del sistema Hasta que la cambies Almacenamiento local

Estadísticas

Google Analytics 4 (Google Ireland Ltd.): qué páginas se visitan, de dónde llegan las visitas y con qué tipo de dispositivo — con identificadores seudónimos, sin guardar la dirección IP. Nos ayuda a mejorar el sitio.

Nombre Finalidad Duración Tipo
_ga Google Analytics: reconoce al visitante (identificador seudónimo) 13 meses Cookie · Google Analytics
_ga_VHWQRPHPEF Google Analytics: mantiene el estado de la visita 13 meses Cookie · Google Analytics

Marketing

Google Ads (Google Ireland Ltd.): mide si las visitas desde anuncios de Google llevan a una prueba o a un plan y permite mostrar anuncios de Castreon en otros sitios (remarketing).

Nombre Finalidad Duración Tipo
_gcl_au, _gcl_aw Google Ads: vincula la visita con el clic en el anuncio (conversiones) 90 días Cookie · Google Ads
IDE, test_cookie Google Ads: remarketing y medición de anuncios, en dominios de Google (doubleclick.net) Hasta 13 meses Cookie · Google (tercero)