Fornecer streaming de vídeo ao vivo com o CloudFront e o AWS Media Services - Amazon CloudFront

Fornecer streaming de vídeo ao vivo com o CloudFront e o AWS Media Services

Para usar o AWS Media Services com o CloudFront para entregar conteúdo ao vivo para um público global, consulte as orientações a seguir.

Use AWS Elemental MediaLive para codificar fluxos de vídeo ao vivo em tempo real. Para codificar um streaming de vídeo grande, o MediaLive o compacta em versões menores (codifica) que podem ser distribuídas aos visualizadores.

Depois de comprimir um fluxo de vídeo ao vivo, você pode usar uma das duas opções principais a seguir para preparar e veicular o conteúdo:

  • Converter conteúdo nos formatos necessários e, depois, veiculá-lo: se você precisar de conteúdo em vários formatos, use o AWS Elemental MediaPackage para empacotar o conteúdo para diferentes tipos de dispositivo. Ao empacotar o conteúdo, você também pode implementar recursos extras e adicionar gerenciamento de direitos digitais (DRM) para evitar o uso não autorizado de seu conteúdo. Para obter instruções passo a passo sobre como usar o CloudFront para fornecer conteúdo formatado pelo MediaPackage, consulte Veicular vídeo ao vivo formatado com o AWS Elemental MediaPackage.

  • Armazenar e veicular conteúdo usando origem escalável: se o MediaLive tiver codificado o conteúdo nos formatos exigidos por todos os dispositivos que os visualizadores usam, utilize uma origem altamente escalável como o AWS Elemental MediaStore para veicular o conteúdo. Para obter instruções passo a passo sobre o uso do CloudFront para fornecer conteúdo armazenado em um contêiner do MediaStore, consulte Distribuir vídeo usando o AWS Elemental MediaStore como origem.

Depois de configurar a origem usando uma dessas opções, você pode distribuir o streaming de vídeo ao vivo para os visualizadores usando o CloudFront.

dica

Você pode saber mais sobre uma solução da AWS que implanta automaticamente serviços para a criação de uma experiência de visualização em tempo real altamente disponível. Para ver as etapas para implantar essa solução automaticamente, consulte Implantação automatizada de streaming ao vivo.

Distribuir vídeo usando o AWS Elemental MediaStore como origem

Se você tiver vídeo armazenado em um contêiner do AWS Elemental MediaStore, poderá criar uma distribuição do CloudFront para fornecer o conteúdo.

Para começar, conceda ao CloudFront acesso ao contêiner do MediaStore. Crie uma distribuição do CloudFront e configure-a para trabalhar com o MediaStore.

Como veicular conteúdo de um contêiner do AWS Elemental MediaStore
  1. Siga o procedimento em Permitir que o Amazon CloudFront acesse o contêiner do AWS Elemental MediaStore e, depois, retorne a estas etapas para criar a distribuição.

  2. Crie uma distribuição com as seguintes configurações:

    1. Domínio de origem: o endpoint de dados atribuído ao contêiner do MediaStore. Na lista suspensa, escolha o contêiner do MediaStore para o vídeo ao vivo.

    2. Caminho de origem: a estrutura de pastas no contêiner do MediaStore onde os objetos são armazenados. Para ter mais informações, consulte Caminho de origem.

    3. Adicionar cabeçalho personalizado: adicione nomes e valores de cabeçalhos se desejar que o CloudFront inclua cabeçalhos personalizados ao encaminhar solicitações para a origem.

    4. Política de protocolo do visualizador: escolha Redirecionar HTTP para HTTPS. Para ter mais informações, consulte Política de protocolo do visualizador.

    5. Política de cache e política de solicitação de origem

      • Em Cache policy (Política de cache), escolha Create policity (Criar política) e, em seguida, crie uma política de cache apropriada para suas necessidades de armazenamento em cache e duração de segmento. Depois de criar a política, atualize a lista de políticas de cache e escolha a que você acabou de criar.

      • Em Origin request policy (Política de solicitação de origem), escolha CORS-CustomOrigin na lista suspensa.

    Para as outras configurações, você pode definir valores específicos com base em outros requisitos técnicos ou nas necessidades de sua empresa. Para obter uma lista de todas as opções para distribuições e informações sobre como configurá-las, consulte Referência de configurações da distribuição.

  3. Para links em sua aplicação (por exemplo, um leitor multimídia), especifique o nome do arquivo de mídia no mesmo formato usado para outros objetos distribuídos usando o CloudFront.

Veicular vídeo ao vivo formatado com o AWS Elemental MediaPackage

Se tiver formatado um streaming ao vivo usando o AWS Elemental MediaPackage, você poderá criar uma distribuição do CloudFront e configurar comportamentos de cache para veicular o streaming ao vivo. O processo a seguir pressupõe que você já tenha criado um canal e adicionado endpoints para o vídeo ao vivo usando o MediaPackage.

Para criar uma distribuição do CloudFront para o MediaPackage manualmente, siga estas etapas:

Etapa 1: Criar e configurar uma distribuição do CloudFront

Execute o procedimento a seguir para configurar uma distribuição do CloudFront para o canal de vídeo ao vivo que você criou com o MediaPackage.

Como criar uma distribuição para seu canal de vídeo ao vivo
  1. Faça login no AWS Management Console e abra o console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home.

  2. Escolha Create distribution (Criar distribuição).

  3. Escolha as configurações para a distribuição, incluindo o seguinte:

    Domínio de origem

    A origem em que o canal de vídeo ao vivo e os endpoints do MediaPackage estão. Escolha o campo de texto e, na lista suspensa, escolha o domínio de origem do MediaPackage para o vídeo ao vivo. Você pode mapear um domínio para vários endpoints de origem.

    Se você criou o domínio de origem usando outra conta da AWS, digite o valor do URL de origem no campo. A origem deve ser um URL de HTTPS.

    Por exemplo, para um endpoint HLS como https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8, o domínio de origem é 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com.

    Para ter mais informações, consulte Domínio de origem.

    Caminho de origem

    O caminho para o endpoint do MediaPackage de onde o conteúdo é fornecido.

    O campo Caminho de origem não está preenchido para você. Você deve inserir manualmente o caminho de origem correto.

    Para obter mais informações sobre como um caminho de origem funciona, consulte Caminho de origem.

    Importante

    O caminho curinga * é necessário para rotear em algum lugar na distribuição do CloudFront. Para evitar que solicitações que não correspondam a um caminho explícito sejam roteadas para a origem real, crie uma origem “fictícia” para esse caminho curinga.

    exemplo : criar uma origem “fictícia”

    No exemplo a seguir, os endpoints abc123 e def456 roteiam para a origem “real”, mas as solicitações de conteúdo de vídeo de qualquer outro endpoint são roteadas para mediapackage.us-west-2.amazonaws.com sem o subdomínio adequado, o que resulta em um erro HTTP 404.

    Endpoints do MediaPackage:

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/def456/index.m3u8

    Origem A do CloudFront:

    Domain: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Path: None

    Origem B do CloudFront:

    Domain: mediapackage.us-west-2.amazonaws.com Path: None

    Comportamento do cache do CloudFront:

    1. Path: /out/v1/abc123/* forward to Origin A 2. Path: /out/v1/def456/* forward to Origin A 3. Path: * forward to Origin B

    Para as outras configurações de distribuição, defina valores específicos com base em outros requisitos técnicos ou nas necessidades de sua empresa. Para obter uma lista de todas as opções para distribuições e informações sobre como configurá-las, consulte Referência de configurações da distribuição.

    Quando terminar de escolher as outras configurações de distribuição, escolha Create distribution (Criar distribuição).

  4. Escolha a distribuição que acabou de criar e, em seguida, Behaviors (Comportamentos).

  5. Selecione o comportamento de cache padrão e escolha Edit (Editar). Especifique as configurações do comportamento de cache correto para o canal que você escolheu para a origem. Posteriormente, você incluirá uma ou mais origens adicionais e editará as configurações do comportamento de cache delas.

  6. Acesse a página Distribuições do CloudFront.

  7. Aguarde até que o valor da coluna Last modified (Última modificação) da distribuição seja alterada de Deploing (Em implantação) para uma data e hora, indicando que o CloudFront criou a distribuição.

Etapa 2: adicionar Origens aos domínios dos endpoints do MediaPackage

Repita as etapas aqui para adicionar cada um dos endpoints do canal do MediaPackage à distribuição, lembrando-se de que é necessário criar uma origem “fictícia”.

Para adicionar outros endpoints como origens
  1. No console do CloudFront, escolha a distribuição que você criou para o canal.

  2. Escolha Origins (Origens) e Create origin (Criar origem).

  3. Em Origin domain (Domínio de origem), na lista suspensa, escolha um endpoint do MediaPackage para o canal.

  4. Para as outras configurações, defina valores com base em outros requisitos técnicos ou nas necessidades de sua empresa. Para ter mais informações, consulte Configurações de origem.

  5. Escolha Create origin (Criar origem).

Etapa 3: Configurar comportamentos de cache para todos os endpoints

Para cada parâmetro, você deve configurar comportamentos de cache para adicionar padrões de caminho que roteiam solicitações corretamente. Os padrões de caminho especificados dependem do formato de vídeo que você está veiculando. O procedimento a seguir inclui as informações de padrão de caminho a serem usadas para os formatos Apple HLS, CMAF, DASH e Microsoft Smooth Streaming.

Geralmente, você configura dois comportamentos de cache para cada endpoint:

  • O manifesto pai, que é o índice para seus arquivos.

  • Os segmentos, que são os arquivos do conteúdo de vídeo.

Para criar um comportamento de cachê de um endpoint
  1. No console do CloudFront, escolha a distribuição que você criou para o canal.

  2. Escolha a guia Behaviors (Comportamentos) e Create behavior (Criar comportamento).

  3. Em Padrão de caminho, use um GUID OriginEndpoint do MediaPackage específico como prefixo do caminho.

    Padrões de caminho

    Para um endpoint HLS como https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8, crie estes dois comportamentos de cache:

    • Para manifestos pai e filho, use /out/v1/abc123/*.m3u8.

    • Para os segmentos de conteúdo, use /out/v1/abc123/*.ts.

    Para um endpoint CMAF como https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8, crie estes dois comportamentos de cache:

    • Para manifestos pai e filho, use /out/v1/abc123/*.m3u8.

    • Para os segmentos de conteúdo, use /out/v1/abc123/*.mp4.

    Para um endpoint DASH como https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.mpd, crie estes dois comportamentos de cache:

    • Para o manifesto pai, use /out/v1/abc123/*.mpd.

    • Para os segmentos de conteúdo, use /out/v1/abc123/*.mp4.

    Para um endpoint do Microsoft Smooth Streaming como https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.ism, apenas um manifesto é veiculado e, portanto, você cria apenas um comportamento de cache: out/v1/abc123/index.ism/*.

  4. Para cada comportamento de cache, especifique os valores das seguintes configurações:

    Política de protocolo do visualizador

    Escolha Redirect HTTP to HTTPS (Redirecionar HTTP para HTTPS).

    Política de cache e política de solicitação de origem

    Em Cache policy (Política de cache), escolha Create policy (Criar política). Para sua nova política de cache, especifique as seguintes configurações:

    Minimum TTL (TTL mínimo)

    Defina como cinco segundos ou menos, para ajudar a evitar o fornecimento de conteúdo obsoleto.

    Strings de consulta

    Em Query strings (Strings de consulta) (em Cache key settings (Configurações da chave de cache)), escolha Include specified query strings (Incluir strings de consulta especificadas). Em Allow (Permitir), digite os valores a seguir e, em seguida, escolha Add item (Adicionar item):

    • Adicione m como o parâmetro da string de consulta que você deseja que o CloudFront use como base para o armazenamento em cache. A resposta do MediaPackage sempre inclui a etiqueta ?m=### para capturar o tempo modificado do endpoint. Se o conteúdo já estiver armazenado em cache com um valor diferente para essa tag, o CloudFront solicitará um novo manifesto em vez de fornecer a versão em cache.

    • Se você estiver usando a funcionalidade de visualização em horário deslocado no MediaPackage, especifique start e end como parâmetros de string de consulta adicionais no comportamento de cache para solicitações de manifesto (*.m3u8, *.mpd e index.ism/*). Dessa forma, o conteúdo é fornecido especificamente para o período solicitado no manifesto pedido. Para receber mais informações sobre a visualização com mudança de horário e a formatação dos parâmetros de solicitação de início e fim de conteúdo, consulte Visualização com mudança de horário no Guia do usuário do AWS Elemental MediaPackage.

    • Se estiver usando o recurso de filtragem de manifestos no MediaPackage, especifique aws.manifestfilter como um parâmetro adicional de string de consulta para a política de consulta que você usa com o comportamento de cache para solicitações de manifesto (*.m3u8, *.mpd e index.ism/*). Isso configura a distribuição para encaminhar a string de consulta aws.manifestfilter para a origem do MediaPackage, que é necessário para que o recurso de filtragem de manifestos funcione. Para obter mais informações, consulte Filtragem de manifestos no Guia do Usuário do AWS Elemental MediaPackage.

    • Se você estiver usando HLS de baixa latência (LL-HLS), especifique _HLS_msn e _HLS_part como parâmetros adicionais de string de consulta para a política de cache que você usa com o comportamento de cache para solicitações de manifesto (*.m3u8). Isso configura a distribuição para encaminhar as strings de consulta _HLS_msn e _HLS_part para a origem do MediaPackage, o que é necessário para que o atributo de solicitação de bloqueio de playlist LL-HLS funcione.

  5. Escolha Criar.

  6. Depois de criar a política de cache, volte para o fluxo de trabalho de criação do comportamento do cache. Atualize a lista de políticas de cache e escolha a política que você acabou de criar.

  7. Escolha Create behavior (Criar comportamento).

  8. Se o endpoint não for um endpoint do Microsoft Smooth Streaming, repita essas etapas para criar um segundo comportamento de cache.

Etapa 4: habilitar a autorização CDN do MediaPackage baseada em cabeçalho

Recomendamos habilitar a autorização CDN do MediaPackage baseada em cabeçalho entre os endpoints do MediaPackage e a distribuição do CloudFront. Para ter mais informações, consulte Habilitar a autorização de CDN em MediaPackage no Guia do usuário do AWS Elemental MediaPackage.

Etapa 5: usar o CloudFront para atender ao canal de transmissão ao vivo

Depois de criar a distribuição, adicionar as origens, criar os comportamentos de cache e habilitar a autorização CDN baseada em cabeçalho, você pode fornecer o canal de streaming ao vivo usando o CloudFront. O CloudFront roteia solicitações dos visualizadores para os endpoints MediaPackage corretos com base nas configurações que você definiu para os comportamentos de cache.

Para links em sua aplicação (por exemplo, um media player), especifique o URL do arquivo de mídia no formato padrão para URLs do CloudFront. Para ter mais informações, consulte Personalizar o formato do URL para arquivos no CloudFront.