# Integraciones de vídeo

> Vídeos de Bunny Stream, Cloudflare Stream, Panda Video o un HLS propio en la lección y en la publicación, solo para quien tiene acceso. El enlace de cada proveedor, el paso a paso para pegarlo, la clave de firma de Bunny y Cloudflare en Configuración › Integraciones de vídeo, Verificar y qué pasa cuando el proveedor rechaza la clave.

Si ya alojas tus vídeos en **Bunny Stream**, **Cloudflare Stream**, **Panda Video** o en un **HLS** propio, no tienes que volver a subir nada: pega el enlace del vídeo en la [lección de vídeo](/espacos/cursos#bunny-stream-cloudflare-stream-panda-video-y-hls) o en el texto de un [estado del Feed](/espacos/feed#los-enlaces-se-convierten-en-reproductor-o-tarjeta) o de una [publicación de Contenido](/espacos/conteudo#los-enlaces-se-convierten-en-reproductor-o-tarjeta), y el vídeo se reproduce dentro de Memberfy, con el reproductor del proveedor (el HLS, en el reproductor de Memberfy).

- **Solo para quien tiene acceso.** El reproductor solo llega a quien puede ver la lección o la publicación. Quien solo ve el índice del curso, una lección bloqueada o no tiene acceso al espacio no recibe la dirección del vídeo, ni por la API ni por el asistente.
- **El vídeo se queda en tu proveedor.** Memberfy no descarga ni copia el vídeo, y no gasta el almacenamiento de la comunidad: el reproductor lo reproduce directamente desde el origen.
- **Con la clave de firma** (Bunny y Cloudflare), la dirección del vídeo caduca en 6 horas y no se reproduce fuera de la comunidad. Consulta [Vídeo protegido](#video-protegido-bunny-y-cloudflare).

## El enlace de cada proveedor

| Proveedor | El enlace que Memberfy acepta | Clave de firma |
|---|---|---|
| **Bunny Stream** | `https://iframe.mediadelivery.net/embed/{biblioteca}/{vídeo}` (o `/play/`), o `https://video.bunnycdn.com/play/{biblioteca}/{vídeo}` | Opcional |
| **Cloudflare Stream** | `https://customer-{código}.cloudflarestream.com/{id}`, `https://iframe.videodelivery.net/{id}` o `https://watch.videodelivery.net/{id}` | Opcional |
| **Panda Video** | `https://{player}.tv.pandavideo.com.br/embed/?v={id}` | No se usa: se reproduce directamente desde Panda |
| **HLS** | Una dirección `https://…/archivo.m3u8` en un servidor público | No se usa |

La dirección tiene que ser exactamente de uno de estos servicios. Un dominio parecido (como `bunnycdn.com.otro-sitio.net`), un HLS en `http`, una IP, un puerto o un servidor interno se rechazan en la lección; en una publicación, se quedan como enlace.

## Paso a paso

*Rol: propietario o administrador* para la lección; en el Feed y en Contenido, quien puede publicar en el espacio.

### Bunny Stream

1. En el panel de Bunny, abre la biblioteca de vídeos (**Stream**) y el vídeo.
2. Copia el enlace del reproductor: la dirección `https://iframe.mediadelivery.net/embed/…` del código de inserción (o el enlace `/play/`).
3. En Memberfy, pega el enlace en el campo del vídeo de la lección (tipo **Vídeo**) o en el texto de la publicación.
4. Si la biblioteca exige token para reproducir (**Security › Embed view token authentication**), registra la clave: consulta [Vídeo protegido](#video-protegido-bunny-y-cloudflare). Sin la clave, el vídeo de una biblioteca con token no se reproduce.

### Cloudflare Stream

1. En el panel de Cloudflare, abre **Stream** y el vídeo.
2. Copia el enlace del reproductor: `https://customer-{código}.cloudflarestream.com/{id}` (o el de `iframe.videodelivery.net`).
3. Pega el enlace en la lección o en la publicación.
4. Si el vídeo exige enlace firmado (*Require signed URLs*), registra la clave de firma de la cuenta (la que creas en **Stream › Signing keys**).

### Panda Video

1. En el panel de Panda, abre el vídeo y su código de inserción.
2. Copia la dirección del reproductor: `https://{player}.tv.pandavideo.com.br/embed/?v={id}`.
3. Pega el enlace en la lección o en la publicación. Panda no usa clave en Memberfy: la protección del vídeo (dominios permitidos y similares) se configura en el propio Panda.

### HLS propio

1. Copia la dirección del manifiesto del vídeo, que termina en `.m3u8` y empieza por `https://`.
2. Pégala en la lección o en la publicación. El vídeo se reproduce en el reproductor de Memberfy, con controles, pantalla completa y, en la lección, retomando donde el alumno lo dejó.
3. El servidor tiene que ser público y permitir que el vídeo se reproduzca desde otro sitio (CORS); Memberfy no pasa el vídeo por sus servidores. Si no responde o no lo permite, el reproductor muestra *"No se pudo reproducir este vídeo aquí. El servidor de origen no respondió o no permite la reproducción en este sitio."*, con el botón **Abrir la dirección del vídeo**.

## Vídeo protegido (Bunny y Cloudflare)

*Rol: propietario o administrador.* Si la biblioteca de Bunny o la cuenta de Cloudflare exige token para reproducir, registra la clave de firma de la comunidad en **Configuración › Integraciones de vídeo** (en el grupo **Conexiones**):

| Proveedor | Qué pegar |
|---|---|
| **Bunny Stream** | En **Token authentication key**, la clave de la biblioteca, copiada en el panel de Bunny en **Security** (*Embed view token authentication*) |
| **Cloudflare Stream** | En **Id de la clave (keyId)**, el id de la clave; en **Clave privada (pem o jwk)**, el pem (en base64, como lo devuelve Cloudflare, o en texto) o el jwk. Con el jwk, el id es opcional: vale su `kid` |

1. Rellena y haz clic en **Guardar clave**. La pantalla confirma *"Clave guardada. Verifícala con uno de tus vídeos."*
2. En **Verificar con uno de tus vídeos**, pega el enlace de un vídeo del mismo proveedor y haz clic en **Verificar**: Memberfy firma el enlace de ese vídeo y pregunta al proveedor si lo acepta. Aceptada, la clave queda **Válida**; rechazada, **No válida**.
3. Listo: el vídeo de la lección o de la publicación pasa a salir **firmado, válido durante 6 horas**, solo para quien ya podía verlo. Quien copia la dirección del reproductor no puede reproducirlo después.

Cada proveedor muestra el estado de la clave (**Sin clave**, **Sin verificar**, **Válida** o **No válida**) y la **Última verificación**.

- **La clave es solo de escritura.** Una vez guardada, no vuelve a mostrarse: solo los 4 últimos caracteres (en Cloudflare, del id de la clave). Para cambiarla, usa **Cambiar clave**.
- **Eliminar clave** pide la confirmación *"¿Eliminar la clave de Bunny Stream?"* (o de Cloudflare Stream) y borra la clave al momento: los vídeos de ese proveedor vuelven a salir sin firma y no se reproducen si la biblioteca exige token. Las lecciones y las publicaciones siguen como están.
- Registrar, cambiar, verificar y eliminar quedan en los [Logs](/membros/registros-de-atividades), sin el valor de la clave.
- Solo el propietario y el administrador ven la pantalla y las claves.

### Cuando el proveedor rechaza la clave

Si el proveedor rechaza la clave (al verificar o más tarde, porque se cambió allí), los vídeos de ese proveedor quedan **no disponibles** hasta que registres la clave correcta: quien mira ve *"Vídeo no disponible"* y *"Avisa al equipo de la comunidad para que lo resuelva."* El propietario y el administrador reciben un aviso en la campana, como máximo una vez al día, que abre **Integraciones de vídeo**; para ellos, el vídeo no disponible trae el botón **Abrir Integraciones de vídeo**. Los vídeos de los demás proveedores siguen reproduciéndose.

## Con la API y con el asistente

- **API:** la lección de vídeo acepta estos enlaces en `contentUrl` y devuelve el reproductor listo en `videoEmbed` (`provider`, `kind`, `src`), solo para quien puede ver la lección; las claves están en `/api/video-integrations`. Consulta [Cursos › Con la API](/espacos/cursos#con-la-api).
- **MCP:** `create_lesson` y `update_lesson` aceptan los enlaces; `list_video_keys`, `update_video_key`, `verify_video_key` y `delete_video_key` (que pide confirmación) gestionan las claves, que nunca vuelven en la respuesta. Consulta [Herramientas de cursos](/mcp/ferramentas-cursos).

## Preguntas frecuentes

**¿Tengo que volver a subir el vídeo?**
No. Usa el enlace de tu proveedor.

**¿Alguien puede copiar el enlace?**
Quien tiene acceso ve la dirección del reproductor. Sin la clave, es la dirección del proveedor; con la clave (Bunny y Cloudflare), caduca en 6 horas.

**¿Gasta el almacenamiento de la comunidad?**
No. El vídeo se queda en tu proveedor. Solo el [vídeo alojado](/espacos/cursos#video-y-archivo-alojados) en Memberfy cuenta en el almacenamiento.

**¿Y el vídeo de bienvenida?**
Sigue solo con YouTube y Vimeo. Consulta [Bienvenida](/membros/boas-vindas).

## Relacionados

- [Cursos](/espacos/cursos#bunny-stream-cloudflare-stream-panda-video-y-hls)
- [Feed › Los enlaces se convierten en reproductor o tarjeta](/espacos/feed#los-enlaces-se-convierten-en-reproductor-o-tarjeta)
- [Contenido › Los enlaces se convierten en reproductor o tarjeta](/espacos/conteudo#los-enlaces-se-convierten-en-reproductor-o-tarjeta)
