# Integrações de vídeo

> Vídeos do Bunny Stream, do Cloudflare Stream, do Panda Video ou de um HLS próprio na aula e na publicação, só para quem tem acesso. A ligação de cada fornecedor, o passo a passo para a colar, a chave de assinatura do Bunny e do Cloudflare em Definições › Integrações de vídeo, Verificar e o que acontece quando o fornecedor recusa a chave.

Quem já aloja os vídeos no **Bunny Stream**, no **Cloudflare Stream**, no **Panda Video** ou num **HLS** próprio não precisa de carregar nada de novo: cole a ligação do vídeo na [aula de vídeo](/espacos/cursos#bunny-stream-cloudflare-stream-panda-video-e-hls) ou no texto de um [status do Feed](/espacos/feed#links-viram-player-ou-cartao) ou de uma [publicação de Conteúdo](/espacos/conteudo#links-viram-player-ou-cartao), e o vídeo reproduz-se dentro da Memberfy, com o player do fornecedor (o HLS, no player da própria Memberfy).

- **Só para quem tem acesso.** O player só aparece a quem pode ver a aula ou a publicação. Quem vê só o índice do curso, uma aula travada ou não tem acesso ao espaço não recebe o endereço do vídeo, nem pela API nem pelo assistente.
- **O vídeo fica no seu fornecedor.** A Memberfy não descarrega nem copia o vídeo, e ele não gasta o armazenamento da comunidade: o player reproduz diretamente a partir da origem.
- **Com a chave de assinatura** (Bunny e Cloudflare), o endereço do vídeo expira em 6 horas e não se reproduz fora da comunidade. Ver [Vídeo protegido](#video-protegido-bunny-e-cloudflare).

## A ligação de cada fornecedor

| Fornecedor | A ligação que a Memberfy aceita | Chave de assinatura |
|---|---|---|
| **Bunny Stream** | `https://iframe.mediadelivery.net/embed/{biblioteca}/{vídeo}` (ou `/play/`), ou `https://video.bunnycdn.com/play/{biblioteca}/{vídeo}` | Opcional |
| **Cloudflare Stream** | `https://customer-{código}.cloudflarestream.com/{id}`, `https://iframe.videodelivery.net/{id}` ou `https://watch.videodelivery.net/{id}` | Opcional |
| **Panda Video** | `https://{player}.tv.pandavideo.com.br/embed/?v={id}` | Não usa: reproduz diretamente a partir do Panda |
| **HLS** | Um endereço `https://…/ficheiro.m3u8` num servidor público | Não usa |

O endereço tem de ser exatamente de um destes serviços. Um domínio parecido (como `bunnycdn.com.outro-site.net`), um HLS em `http`, um IP, uma porta ou um servidor interno são recusados na aula; numa publicação, ficam só como ligação.

## Passo a passo

*Papel: proprietário ou administrador* para a aula; no Feed e no Conteúdo, quem pode publicar no espaço.

### Bunny Stream

1. No painel do Bunny, abra a biblioteca de vídeos (**Stream**) e o vídeo.
2. Copie a ligação do player: o endereço `https://iframe.mediadelivery.net/embed/…` do código de incorporação (ou a ligação `/play/`).
3. Na Memberfy, cole a ligação no campo do vídeo da aula (tipo **Vídeo**) ou no texto da publicação.
4. Se a biblioteca exige token para reproduzir (**Security › Embed view token authentication**), registe a chave: ver [Vídeo protegido](#video-protegido-bunny-e-cloudflare). Sem a chave, o vídeo de uma biblioteca com token não se reproduz.

### Cloudflare Stream

1. No painel do Cloudflare, abra **Stream** e o vídeo.
2. Copie a ligação do player: `https://customer-{código}.cloudflarestream.com/{id}` (ou a de `iframe.videodelivery.net`).
3. Cole a ligação na aula ou na publicação.
4. Se o vídeo exige ligação assinada (*Require signed URLs*), registe a chave de assinatura da conta (a que cria em **Stream › Signing keys**).

### Panda Video

1. No painel do Panda, abra o vídeo e o código de incorporação.
2. Copie o endereço do player: `https://{player}.tv.pandavideo.com.br/embed/?v={id}`.
3. Cole a ligação na aula ou na publicação. O Panda não usa chave na Memberfy: a proteção do vídeo (domínios permitidos e afins) configura-se no próprio Panda.

### HLS próprio

1. Copie o endereço do manifesto do vídeo, que termina em `.m3u8` e começa por `https://`.
2. Cole-o na aula ou na publicação. O vídeo reproduz-se no player da Memberfy, com controlos, ecrã inteiro e, na aula, a retoma do ponto onde o aluno parou.
3. O servidor tem de ser público e aceitar que o vídeo seja reproduzido noutro site (CORS); a Memberfy não passa o vídeo pelos servidores dela. Se ele não responder ou não permitir, o player mostra *"Não foi possível reproduzir este vídeo aqui. O servidor de origem não respondeu ou não permite a reprodução neste site."*, com o botão **Abrir o endereço do vídeo**.

## Vídeo protegido (Bunny e Cloudflare)

*Papel: proprietário ou administrador.* Se a biblioteca do Bunny ou a conta do Cloudflare exige token para reproduzir, registe a chave de assinatura da comunidade em **Definições › Integrações de vídeo** (no grupo **Conexões**):

| Fornecedor | O que colar |
|---|---|
| **Bunny Stream** | Em **Token authentication key**, a chave da biblioteca, copiada no painel do Bunny em **Security** (*Embed view token authentication*) |
| **Cloudflare Stream** | Em **Id da chave (keyId)**, o id da chave; em **Chave privada (pem ou jwk)**, o pem (em base64, como o Cloudflare o devolve, ou em texto) ou o jwk. Com o jwk, o id é opcional: vale o `kid` dele |

1. Preencha e clique em **Guardar chave**. O ecrã confirma *"Chave guardada. Verifica com um vídeo teu."*
2. Em **Verificar com um vídeo teu**, cole a ligação de um vídeo do mesmo fornecedor e clique em **Verificar**: a Memberfy assina a ligação desse vídeo e pergunta ao fornecedor se a aceita. Aceite, a chave fica **Válida**; recusada, **Inválida**.
3. Pronto: o vídeo da aula ou da publicação passa a sair **assinado, válido durante 6 horas**, só para quem já o podia ver. Quem copia o endereço do player não o consegue reproduzir depois disso.

Cada fornecedor mostra o estado da chave (**Sem chave**, **Não verificada**, **Válida** ou **Inválida**) e a **Última verificação**.

- **A chave é só de escrita.** Depois de guardada, já não aparece: só os 4 últimos caracteres (no Cloudflare, do id da chave). Para a mudar, use **Trocar chave**.
- **Remover chave** pede a confirmação *"Remover a chave do Bunny Stream?"* (ou do Cloudflare Stream) e apaga a chave de imediato: os vídeos desse fornecedor voltam a sair sem assinatura e não se reproduzem se a biblioteca exige token. As aulas e as publicações continuam como estão.
- Registar, trocar, verificar e remover ficam nos [Logs](/membros/registros-de-atividades), sem o valor da chave.
- Só o proprietário e o administrador veem o ecrã e as chaves.

### Quando o fornecedor recusa a chave

Se o fornecedor recusar a chave (na verificação ou mais tarde, por ter sido trocada lá), os vídeos desse fornecedor ficam **indisponíveis** até registar a chave certa: quem assiste vê *"Vídeo indisponível"* e *"Avisa a equipa da comunidade para que ela resolva."* O proprietário e o administrador recebem um aviso no sino, no máximo uma vez por dia, que abre **Integrações de vídeo**; para eles, o vídeo indisponível traz o botão **Abrir Integrações de vídeo**. Os vídeos dos outros fornecedores continuam a reproduzir-se.

## Pela API e pelo assistente

- **API:** a aula de vídeo aceita estas ligações em `contentUrl` e devolve o player pronto em `videoEmbed` (`provider`, `kind`, `src`), só para quem pode ver a aula; as chaves ficam em `/api/video-integrations`. Ver [Cursos › Pela API](/espacos/cursos#pela-api).
- **MCP:** `create_lesson` e `update_lesson` aceitam as ligações; `list_video_keys`, `update_video_key`, `verify_video_key` e `delete_video_key` (que pede confirmação) tratam das chaves, que nunca voltam na resposta. Ver [Ferramentas de cursos](/mcp/ferramentas-cursos).

## Perguntas frequentes

**Preciso de carregar o vídeo de novo?**
Não. Use a ligação do seu fornecedor.

**Alguém pode copiar a ligação?**
Quem tem acesso vê o endereço do player. Sem a chave, é o endereço do fornecedor; com a chave (Bunny e Cloudflare), expira em 6 horas.

**Gasta o armazenamento da comunidade?**
Não. O vídeo fica no seu fornecedor. Só o [vídeo alojado](/espacos/cursos#video-e-ficheiro-hospedados) na Memberfy conta no armazenamento.

**E o vídeo de boas-vindas?**
Continua só com YouTube e Vimeo. Ver [Boas-vindas](/membros/boas-vindas).

## Relacionados

- [Cursos](/espacos/cursos#bunny-stream-cloudflare-stream-panda-video-e-hls)
- [Feed › Links viram player ou cartão](/espacos/feed#links-viram-player-ou-cartao)
- [Conteúdo › Links viram player ou cartão](/espacos/conteudo#links-viram-player-ou-cartao)
