Reproductor web para tu sitio
Actualizado el 13 oct. 2026Castreon trae un reproductor web listo para usar, que pones en tu sitio con una sola línea de código. Los espectadores ven el canal directamente en la página, sin aplicación, y el reproductor lleva tu marca: tu logotipo, tu color, el idioma que elijas. El nombre Castreon no aparece en ninguna parte.
Lo que reciben los espectadores:
- calidad — automática, según la conexión, o elegida a mano cuando el canal tiene varias calidades;
- pistas de audio y subtítulos, cuando el canal los tiene;
- la guía de TV: lo que se emite ahora y lo que viene después, desde el EPG del canal;
- pantalla completa, imagen en imagen, AirPlay (Safari) y Chromecast (Chrome);
- arranque automático sin sonido, con el botón Activar el sonido.
Disponible desde Castreon 1.5.0, en todos los planes, prueba gratuita incluida.
En resumen
- Abre el canal y ve a la pestaña Reproductor.
- En Quién puede ver el canal en el reproductor elige la protección (ver abajo) y pulsa Guardar.
- En Código para incrustar copia el Código <iframe> y pégalo en la página de tu sitio.
- Pulsa Abrir vista previa para ver el reproductor exactamente como lo ven los espectadores.
El reproductor ocupa el ancho de la página y mantiene solo el formato 16:9. El menú con calidades, audio y subtítulos aparece solo cuando el canal tiene algo que elegir.
Quién puede verlo: tres modos de protección
Solo en los sitios permitidos (predeterminado)
El reproductor arranca solo cuando está incrustado en tus sitios. Escribe los dominios en Sitios permitidos, uno por línea:
tv.example.com— exactamente esa dirección;*.example.com— todos los subdominios (example.comen sí va en una línea aparte).
Abierto directamente o puesto en otro sitio, el reproductor muestra un mensaje y no reproduce nada. El navegador le dice al reproductor qué página lo incrusta, y el reproductor les dice a los navegadores dónde puede aparecer. La vista previa del panel funciona siempre.
Conserva el atributo
referrerpolicydel código: sin él, algunos sitios ocultan su dirección y el reproductor no arranca.
Adecuado para: la TV en línea en tu propio sitio.
Enlace firmado
Para contenido de pago y suscriptores. El servidor de tu sitio firma cada enlace con el secreto del canal y le da una caducidad. Sin una firma válida, o después de la caducidad, el reproductor no arranca.
La firma es HMAC-SHA256 sobre canal|caducidad (la caducidad en segundos Unix), escrita en hexadecimal. El enlace queda así:
https://tv.example.com/play/mi-canal?exp=<caducidad>&sig=<firma>
Ejemplo en PHP:
<?php
$secret = getenv('CASTREON_PLAYER_SECRET'); // el secreto del canal, del panel de Castreon
$slug = 'mi-canal';
$exp = time() + 6 * 3600; // el enlace vale 6 horas
$sig = hash_hmac('sha256', "$slug|$exp", $secret);
$src = "https://tv.example.com/play/$slug?exp=$exp&sig=$sig";
?>
<iframe src="<?= htmlspecialchars($src) ?>" allow="autoplay; fullscreen; picture-in-picture; encrypted-media"
style="width:100%;aspect-ratio:16/9;border:0"></iframe>
Ejemplo en Node.js:
const crypto = require('crypto')
const secret = process.env.CASTREON_PLAYER_SECRET // el secreto del canal, del panel de Castreon
const slug = 'mi-canal'
const exp = Math.floor(Date.now() / 1000) + 6 * 3600 // el enlace vale 6 horas
const sig = crypto.createHmac('sha256', secret).update(`${slug}|${exp}`).digest('hex')
const src = `https://tv.example.com/play/${slug}?exp=${exp}&sig=${sig}`
La pestaña Reproductor muestra los mismos ejemplos, con tu canal y tu dirección ya rellenados.
- El secreto se queda solo en el servidor de tu sitio, nunca en la página. En la pestaña: Mostrar, Copiar, Secreto nuevo. Un secreto nuevo invalida todos los enlaces firmados con el anterior.
- Caducidad: como máximo 31 días.
- Ligado a la IP del espectador (opcional): firma
canal|caducidad|ipy añade&ip=<dirección>al enlace. El enlace funciona entonces solo desde esa dirección.
Público
Cualquiera que tenga el enlace o el código puede ver el canal, en cualquier sitio.
El token de reproducción: por qué una dirección copiada no funciona
En todos los modos, el reproductor no usa la dirección /live/… del canal. Recibe un token de reproducción válido durante unas horas, que renueva solo mientras reproduce. Con un enlace firmado, el token nunca dura más que el enlace. Una dirección copiada del navegador deja de funcionar al cabo de unas horas; con un enlace ligado a la IP del espectador, no funciona en absoluto desde otra dirección.
Las direcciones /live/… para aplicaciones y decodificadores siguen como están, con sus restricciones de direcciones IP. Si un canal debe verse solo con el reproductor, limita /live/… con Direcciones permitidas: el reproductor no usa esas listas y sigue funcionando.
Tu marca
En Ajustes → Reproductor web:
- Color de acento — el botón de reproducción, la barra de progreso, «En directo», escrito
#rrggbb; - Logotipo — PNG con fondo transparente (recomendado) o JPEG, como máximo 1 MB y 2000 × 2000 px;
- Esquina del logotipo — arriba a la derecha (predeterminada), arriba a la izquierda, abajo a la derecha o abajo a la izquierda.
La marca se aplica al reproductor en todos los canales.
Idioma del reproductor
Los textos del reproductor («En directo», «A continuación», «Activar el sonido», los mensajes para los espectadores) existen en español, inglés, rumano, alemán e italiano.
- Ajustes → Reproductor web → Idioma del reproductor: Automático (el idioma del navegador de cada espectador, predeterminado) o un idioma fijo.
- Pestaña Reproductor de un canal: como en Ajustes, u otro idioma solo para ese canal.
- Sitios en varios idiomas: añade
?lang=es(oen,ro,de,it) a la dirección del código para incrustar. La dirección tiene prioridad sobre los ajustes.
Arranque automático
Activa Arrancar automáticamente sin sonido encima del código: a la dirección se añade ?autoplay=1. Los navegadores solo permiten el arranque automático sin sonido, así que el espectador recibe el botón Activar el sonido.
Clips
Un clip del archivo, de la Biblioteca o grabado ahora se ve en el mismo reproductor, con barra de avance y la marca y el idioma configurados aquí. El enlace de visualización de un clip tiene los mismos modos de protección — consulta Clips.
HTTPS
Un sitio en HTTPS solo puede mostrar un reproductor también en HTTPS: los navegadores bloquean un reproductor HTTP dentro de una página HTTPS y el marco queda vacío. Desde Castreon 1.5.1 el servidor puede servir HTTPS por sí mismo: actívalo en Ajustes → HTTPS con un certificado emitido por una autoridad para el dominio del servidor (lo más sencillo: Let's Encrypt automático, directamente desde Castreon) — los navegadores no aceptan el certificado propio del servidor. Después escribe la dirección HTTPS, con https:// y el puerto, en Dominio público en Ajustes → Instancia; el código para incrustar la usará por sí solo. También sigue funcionando un proxy inverso o una CDN con certificado delante del servidor — ver HTTPS directo en Castreon y fuentes con huella y Exportación M3U y dominio público.
Cuando no funciona
- El marco queda vacío — el sitio está en HTTPS y el reproductor en HTTP (ver arriba).
- «Este reproductor solo se puede ver en la web de la emisora.» — el dominio falta en Sitios permitidos. Revisa la dirección con y sin
www, y el atributoreferrerpolicydel código. - «El enlace no es válido.» — la firma no coincide: otro secreto (después de Secreto nuevo), otro canal o los campos en otro orden (
canal|caducidad, luego|ip). - «El enlace ha caducado.» — la caducidad ya pasó. Revisa el reloj del servidor de tu sitio.
- «Este canal no está disponible.» — el canal está parado, o la dirección tiene un nombre de canal equivocado.