Subtítulos WebVTT en HLS — desde teletexto, subtítulos DVB o voz
Actualizado el 27 oct. 2026Los 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-rondesde EPEL). El instalador lo hace conOCR=1(yOCR_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-clide whisper.cpp y un modelo ggml, por defecto en<data directory>/models/ggml-base.bin(otras rutas:whisperywhisper_modelen/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.