Pular para o conteúdo
PHP

Armazenando vídeos online com DRM

Atualizado em
Capa do artigo: Armazenando vídeos online com DRM

Olá Gente!

Se você já tentou proteger um vídeo com DRM sabe que não é simples.

Porem, existem alternativas que nos ajudam muito.

Para isto, iremos utilizar a Bunny CDN:

bunny.net - The Content Delivery platform that truly Hops!Hop on bunny.net and speed up your web presence with the next-generation Content Delivery Service (CDN), Edge Storage, and Optimization Services at any scale.bunny.net

Eles tem vários recursos úteis, e um deles é o Stream, que nos permite upar vídeos.

Nesta módulo, os recursos mais interessantes são:

  • Proteger contra Download
  • Proteger com DRM
  • Distribuir em várias regiões para que o acesso seja mais rápido
  • Gera várias versões do vídeo para que seja carregado uma resolução adequada dependendo do navegador que ira abrir o vídeo

E ainda temos uma API bem completinha!

A primeira coisa é a fazer é criar uma “Librarie” dentro da Bunny, para isto, clique em “Stream -> Add Video Library”:

Preencha um nome para sua pasta de vídeos, e depois clique em “Add Video Library”:

Após o cadastro, clique na sua biblioteca de vídeos para abrir as configurações dela.

Vamos começar configurando a segurança dos vídeos, para isto, clique em “Security”.

Nesta janela:

  • Marque o campo “MediaCage Basic DRM” para ativar a criptografia via DRM
  • Desmarque o campo “Enable Direct Play” e o campo “Block Direct URL File Access” para impedir que o arquivo seja acessado diretamente
  • No campo “Allowed Domains” preencha o domínio do site onde será embedado o vídeo “*.meusite.com.br”
  • Marque o campo “Embed View Token Authentication”, isto ira obrigar a utilizar um Token em cada vídeo ajudando na segurança

Antes de continuarmos, copie a informação “Token Authentication Key”, que iremos utilizar para embedar o vídeo..

Os campos devem ficar semelhantes aos campos abaixo

Agora iremos copiar os códigos de acesso a API, para isto, clique em “API”.

Nesta janela, copie os dados abaixo:

  • Video Library ID
  • API Key

Agora temos tudo para utilizar a API.

Iremos enviar um vídeo para a API, para isto, precisamos que este vídeo esteja disponível online:

<?
$curl 		                = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL 				=> "https://video.bunnycdn.com/library/[LIBRARY_ID]/videos/fetch",
CURLOPT_RETURNTRANSFER 		=> true,
CURLOPT_MAXREDIRS 			=> 10,
CURLOPT_TIMEOUT 			=> 30,
CURLOPT_SSL_VERIFYHOST 		=> false,
CURLOPT_SSL_VERIFYPEER 		=> false,
CURLOPT_CUSTOMREQUEST		=> "POST",
CURLOPT_POSTFIELDS 			=> json_encode(array("url" => "https://www.seusite.com.br/video.mp4")),
CURLOPT_HTTPHEADER 			=> array(
                            "AccessKey: [ACCESSKEY]",
                            "Content-Type: application/json"
                            ),
));

$response 	                = curl_exec($curl);
$response2                  = json_decode($response, true);
$httpcode	                = curl_getinfo($curl, CURLINFO_HTTP_CODE);

curl_close($curl);

if( $httpcode == 200 )
{
    
    echo "id";
    echo "<br>";
    echo $StatusMov["id"];

}
?>

Aqui precisamos apenas atualizar alguns campos:

  • [LIBRARY_ID]: Preencha com o campo “Video Library ID” copiado do painel da Bunny
  • [ACCESSKEY]: Preencha com o campo “API Key” copiado do painel da Bunny

O envio ira nos retornar o “id” do vídeo:

{ 
"id": "XXXXXXXXXXXXXXXXXXXXXX", 
"success": true, 
"message": "OK", 
"statusCode": 200 
}

Este ID nos permite verificar como esta o envio do vídeo e fazer o embed deste vídeo.

Depois que o envio for completado, e a Bunny completar as etapas internas podemos fazer o embed do vídeo.

Porem, como ativamos o “Embed View Token Authentication” temos antes que preparar um Token:

<?
$RetFinal["TempoExpiracao"]         = mktime() + 10800;
$RetFinal["TokenIframe"]            = hash("sha256", "[TOKEN]" . "[VIDEO_ID]" . $RetFinal["TempoExpiracao"]);
$RetFinal["LinkIframe"]             = "https://iframe.mediadelivery.net/embed/[LIBRARY_ID]/[VIDEO_ID]?autoplay=true&token=" . $RetFinal["TokenIframe"] . "&expires=" . $RetFinal["TempoExpiracao"];
?>

Aqui precisamos atualizar:

  • [TOKEN]: Preencha com o campo “Embed View Token Authentication” copiado do painel da Bunny
  • [VIDEO_ID]: Preencha o “id” retornado ao enviar o vídeo para a Bunny
  • [LIBRARY_ID]: Preencha o campo “Video Library ID” copiado do painel da Bunny

Pronto, agora basta adicionarmos o Link do Iframe:

<div style="position: relative; padding-top: 177.77777777777777%;"> 
  <iframe src="<?=$RetFinal["LinkIframe"]?>" loading="lazy" style="border: none; position: absolute; top: 0; height: 100%; width: 100%;" allow="accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe> 
</div>

Concluindo mais um tutorial, gente! 😄

Até já! 👋

PHP

Leia também