Todos os produtos
Search
Central de documentação

CDN:Configurar criptografia e reescrita padrão de M3U8

Última atualização: Jul 17, 2026

Quando um cliente solicita um arquivo M3U8, este recurso anexa automaticamente os parâmetros de autenticação da requisição à URI da chave na tag #EXT-X-KEY. Isso protege o acesso às suas chaves de criptografia sem modificar o servidor de origem e impede a reprodução não autorizada de vídeo.

Casos de uso

Em um fluxo de trabalho padrão de criptografia HLS, a tag #EXT-X-KEY especifica a URI para obter a chave de descriptografia. Se essa URI for um endereço público fixo e desprotegido, qualquer pessoa que obtenha o arquivo M3U8 poderá baixar a chave e descriptografar o conteúdo de vídeo, tornando a criptografia ineficaz.

Este recurso resolve o problema ao anexar um token de autenticação dinâmico e verificável a cada requisição de chave. É ideal para cenários que exigem controle de acesso sobre chaves de criptografia HLS, como:

  • Vídeo pago e educação online: Para impedir que usuários compartilhem URLs M3U8 com pessoas não pagantes, gere um parâmetro de autenticação exclusivo para cada usuário conectado. Isso garante que apenas usuários autorizados possam obter a chave de descriptografia dentro do período de validade.

  • Proteção de direitos autorais de transmissões ao vivo: Em grandes eventos esportivos ou transmissões ao vivo, combine parâmetros de autenticação gerados dinamicamente com a autenticação de URL da CDN. Isso permite um controle de acesso refinado sobre a transmissão ao vivo e previne eficazmente o hotlinking.

Como funciona

  1. Um cliente envia uma requisição ao seu servidor de aplicativos. Com base na sua lógica de negócios, como login de usuário, o servidor de aplicativos gera um parâmetro de autenticação com período de validade e assinatura (por exemplo, token=xxxx) e o retorna ao cliente.

  2. O cliente anexa esse parâmetro de autenticação ao final da URL de requisição do arquivo M3U8 e envia uma requisição M3U8 para um ponto de presença (PoP) da CDN.

  3. Antes de retornar o arquivo M3U8, o PoP da CDN analisa seu conteúdo, localiza a tag #EXT-X-KEY e anexa o parâmetro de autenticação da URL de requisição do cliente ao final do atributo URI da tag.

  4. O cliente recebe o arquivo M3U8 reescrito da CDN e envia uma requisição ao servidor de chaves usando a nova URI da chave, que agora inclui o parâmetro de autenticação.

  5. O servidor de chaves recebe a requisição, extrai o parâmetro de autenticação da URL e o valida. Se a validação for bem-sucedida, ele retorna a chave de descriptografia. Caso contrário, nega a requisição.

  6. Após obter a chave, o cliente descriptografa o fluxo de vídeo TS e inicia a reprodução.

Importante
  • Este recurso não criptografa o conteúdo de vídeo. Antes de usá-lo, certifique-se de que os segmentos de vídeo (arquivos TS) no seu servidor de origem estejam criptografados com base em um padrão HLS, como AES-128. O arquivo M3U8 original também deve conter a tag #EXT-X-KEY correta. Para obter mais informações sobre criptografia de vídeo, consulte Como gerar e criptografar um arquivo M3U8.

  • O servidor de aplicativos e o servidor de chaves aparecem aqui para ilustrar o fluxo geral. Você deve implementá-los por conta própria para concluir o processo de autenticação de chave HLS.

  • A tag #EXT-X-KEY especifica se o conteúdo está criptografado. Para obter mais informações sobre tags de arquivos M3U8, consulte O que há em um arquivo HLS M3U8.

Procedimento

  1. Faça login no CDN console.

  2. No painel de navegação à esquerda, clique em Domain Names.

  3. Na página Domain Names, localize o nome de domínio desejado e clique em Manage na coluna Actions.

  4. No painel de navegação do domínio, clique em Video.

  5. Na seção M3U8 Encryption and Rewrite, ative a chave M3U8 Encryption and Rewrite.

    Nota

    Após ativar a opção M3U8 Encryption and Rewrite, o nome do parâmetro padrão é MtsHlsUriToken.

  6. Opcional: Para modificar o nome do parâmetro e adequá-lo ao seu cliente, execute as etapas a seguir:

    1. Clique em Modify ao lado de Custom Parameter Name.

    2. Na caixa de diálogo Custom Parameter Name, defina o Parameter Name.

      Se você não especificar um valor, o nome do parâmetro será definido por padrão como MtsHlsUriToken.

      Nota

      Os nomes dos parâmetros diferenciam maiúsculas de minúsculas. Certifique-se de que o nome do parâmetro definido corresponda exatamente ao nome do parâmetro nas requisições do cliente. Por exemplo, se a requisição do cliente incluir o parâmetro MtsHlsUriToken e você definir o nome do parâmetro personalizado no console da CDN como mtshlsuritoken, a configuração não terá efeito.

    3. Clique em OK para concluir a configuração.

Exemplo

  1. Acesse o arquivo M3U8 acelerado pela CDN no seu navegador e anexe MtsHlsUriToken=tokenxxxxx ao final da requisição. Exemplo: http://<nome de domínio acelerado pela CDN>/video.m3u8?MtsHlsUriToken=tokenxxxxx

    Nas ferramentas de desenvolvedor do seu navegador, o painel Network mostra que a requisição do arquivo M3U8 inclui o parâmetro personalizado, mas a requisição de chave subsequente não o inclui.

  2. No console da CDN, ative a opção M3U8 Encryption and Rewrite. Se necessário, defina um nome de parâmetro personalizado (esta demonstração usa o parâmetro padrão MtsHlsUriToken). No console da CDN, ative o recurso M3U8 encryption and rewrite e defina Custom Parameter Name como MtsHlsUriToken.

  3. Repita a Etapa 1. Acesse o arquivo M3U8 acelerado pela CDN em um navegador e anexe MtsHlsUriToken=tokenxxxxx ao final da requisição.

    Nas ferramentas de desenvolvedor do seu navegador, no painel Network, você verá que a requisição para o endereço da chave agora inclui o parâmetro personalizado.

    A URL de requisição do arquivo de chave encryption_key.key inclui o parâmetro MtsHlsUriToken=tokenxxxxx, e a resposta tem um código de status 206 e Content-Length de 16 bytes.

FAQ

O que é o protocolo HLS?

HTTP Live Streaming (HLS) é um protocolo de mídia de streaming baseado em HTTP desenvolvido pela Apple. Ele divide um fluxo de vídeo em pequenos segmentos de Transport Stream (TS) e usa um arquivo de texto com extensão M3U8 como lista de reprodução. Para iniciar a reprodução, um cliente primeiro baixa a lista de reprodução M3U8 e, em seguida, baixa cada segmento de mídia em sequência usando as URLs contidas nela.

O que há em um arquivo HLS M3U8?

Tags básicas do M3U8:

  • #EXTM3U: Cabeçalho do arquivo. Deve ser a primeira linha da lista de reprodução.

  • EXT-X-MEDIA-SEQUENCE : Número de sequência do primeiro segmento TS. Geralmente 0. Em transmissões ao vivo, identifica o ponto inicial. Por exemplo, #EXT-X-MEDIA-SEQUENCE:0.

  • #EXT-X-TARGETDURATION: Duração máxima de um segmento de mídia. Por exemplo, #EXT-X-TARGETDURATION:10 define o máximo como 10 segundos.

  • #EXT-X-ALLOW-CACHE: Indica se o cliente pode armazenar segmentos de mídia em cache. Valores válidos: #EXT-X-ALLOW-CACHE:YES e #EXT-X-ALLOW-CACHE:NO. Padrão: YES.

  • #EXT-X-ENDLIST: Marca o fim da lista de reprodução.

  • #EXTINF: Informações extras sobre um segmento de mídia, como duração e largura de banda. Formato: #EXTINF:<duration>,[<title>]. O valor antes da vírgula é a duração do segmento, que não deve exceder o valor de #EXT-X-TARGETDURATION.

  • #EXT-X-VERSION: Número da versão da lista de reprodução M3U8.

  • #EXT-X-DISCONTINUITY: Sinaliza uma interrupção entre os segmentos de mídia anteriores e seguintes.

  • #EXT-X-PLAYLIST-TYPE : Indica o tipo do fluxo.

  • #EXT-X-KEY: Especifica o método de descriptografia para segmentos de mídia criptografados. Por exemplo: #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/video.key?token=xxx" usa criptografia AES-128. A chave é obtida em https://example.com/video.key?token=xxx, armazenada localmente e usada para descriptografar os arquivos TS subsequentes.

Como gerar e criptografar um arquivo M3U8?

  1. Gere uma chave de criptografia.

    Essa chave é tipicamente uma string aleatória de 16 bytes para criptografia AES-128. Gere um arquivo de chave com o OpenSSL:

    openssl rand 16 > encryption_key.key
  2. Prepare o arquivo key_info.txt. A ferramenta de criptografia usa este arquivo para criptografar arquivos de vídeo HLS.

    https://example.com/encryption_key.key
    /path/to/local/encryption_key.key
    • A primeira linha é a URL da chave de criptografia gerada na Etapa 1. Recomendamos hospedar o arquivo em um servidor de origem OSS acelerado pela CDN.

    • A segunda linha é o caminho absoluto do arquivo de chave local.

  3. Use o FFmpeg para gerar e criptografar arquivos de vídeo HLS.

    ffmpeg -i input_video.mp4 -c:v copy -c:a copy -hls_time 10 -hls_key_info_file key_info.txt -hls_list_size 0 output_playlist.m3u8
    • -i input_video.mp4: Especifica o arquivo de vídeo a ser convertido, como um vídeo no formato MP4.

    • -c:v copy: Copia o fluxo de vídeo diretamente sem recodificação.

    • -c:a copy: Copia o fluxo de áudio diretamente sem recodificação.

    • -hls_time 10: Define a duração de cada arquivo TS como 10 segundos. Modifique esta configuração conforme a duração do vídeo original.

    • -hls_key_info_file key_info.txt: Especifica o arquivo que contém as informações da chave de criptografia.

    • -hls_list_size 0: Define o número de índices de arquivos TS a serem mantidos no arquivo M3U8. Um valor de 0 indica que todos os índices de arquivos .ts serão mantidos.

    • output_playlist.m3u8: O nome do arquivo de lista de reprodução HLS de saída (ou seja, o nome do arquivo M3U8).

  4. Salve os arquivos TS e M3U8 criptografados em um servidor, como um servidor de origem OSS acelerado pela CDN. Em seguida, use um nome de domínio acelerado pela CDN em um navegador para acessar o arquivo M3U8 e habilitar a reprodução criptografada de vídeos que utilizam o protocolo HLS.