Tutoriais de streaming de mídia do Amazon CloudFront

Por que usar o Amazon CloudFront?

Os clientes usam o Amazon CloudFront para fazer streaming de vídeo para visualizadores em todo o mundo, usando uma grande variedade de protocolos em camadas sobre o HTTP.

A rede de entrega de conteúdo (CDN) da Amazon pode ser usada com os Serviços de Mídia do AWS Elemental para implementar dois tipos diferentes de streaming de vídeo. Primeiro, examinaremos o streaming sob demanda de conteúdo armazenado no Amazon Simple Storage Service (Amazon S3). Em seguida, veremos o streaming ao vivo de eventos, ou canais 24 horas por dia, sete dias por semana.

Para conhecer as práticas recomendadas, leia o whitepaper Amazon CloudFront for Media.

Criação de fluxos de trabalho de vídeo sem servidor

Streaming sob demanda

No caso de streaming sob demanda, o conteúdo de vídeo está armazenado no Amazon S3. Os visualizadores podem optar por assistir o conteúdo quando quiserem (ou seja, sob demanda). Normalmente, uma solução de streaming sob demanda completa usa o Amazon S3 para armazenamento, o AWS Elemental MediaConvert para processamento de vídeo baseado em arquivos e o Amazon CloudFront para entrega.

O Amazon S3 é uma ferramenta excelente de armazenamento para ativos de vídeo. O serviço é infinitamente escalável, tem redundância incorporada e está disponível com pagamento conforme o uso. Você pode fazer upload de conteúdo para o S3 de várias maneiras diferentes. Você pode começar usando o Console de Gerenciamento da AWS, enquanto o volume de conteúdo é pequeno, e mudar para um sistema mais automatizado quando o volume crescer. É muito fácil usar o S3 no console. Depois de criar sua conta da AWS, basta fazer login, criar um bucket do S3 e fazer upload do conteúdo. Se quiser implementar um sistema automatizado, poderá usar a interface da linha de comando (ILC) da AWS em seus scripts ou as APIs do Amazon S3 no seu código.

Após o upload, poderá ser necessário converter o vídeo para o tamanho, a resolução ou o formato necessário para uma TV ou dispositivo conectado específico. O AWS Elemental MediaConvert fará isso para você. O MediaConvert recebe conteúdo do S3, transcodifica esse conteúdo de acordo com sua solicitação e armazena o resultado no S3. A transcodificação processa arquivos de vídeo, criando versões compactadas do conteúdo original para reduzir seu tamanho, alterar seu formato ou aumentar a compatibilidade com dispositivos de reprodução. Da mesma forma, você pode gerenciar esse processo no Console de Gerenciamento da AWS, na linha de comando ou usando as APIs do MediaConvert.

Com o conteúdo armazenado com segurança e disponível nos formatos necessários para os usuários, a próxima etapa é a entrega global com o Amazon CloudFront. A rede de entrega de conteúdo da Amazon armazena conteúdo em cache nos pontos para entregar vídeo com baixa latência e alto throughput. Sua escalabilidade significa que você pode entregar de pequenas a grandes quantidades de vídeo, conforme a necessidade. Picos de demanda inesperados podem ser absorvidos facilmente com base no modelo de pagamento conforme o uso (consulte a definição de preço do CloudFront para saber mais).

Neste momento, a nossa história ramifica em duas opções. Você pode entregar todo o arquivo de vídeo ao dispositivo antes de reproduzi-lo, ou fazer streaming desse arquivo para o dispositivo.

A primeira opção pode ser implementada com muita facilidade e é compatível com praticamente todos os dispositivos móveis e desktops. Basta colocar o conteúdo em um bucket do S3 e criar uma distribuição do CloudFront que aponta para esse bucket. O reprodutor de vídeo do usuário usará os URLs do CloudFront (que podem ser acessadas como parte da distribuição) para solicitar o arquivo de vídeo. A solicitação será direcionada ao melhor ponto de presença de acordo com a localização do usuário. O CDN enviará o vídeo de seu cache, recuperando-o do bucket do S3 se ainda não estiver armazenado no cache. Essa opção tem algumas desvantagens. A largura de banda do visualizador não é usada de forma eficiente. Mesmo que o usuário não queira assistir a todo o vídeo, fará download de todo o conteúdo e você pagará por isso.

A segunda opção é quase sempre a mais indicada. Uma família de protocolos de streaming de vídeo, incluindo o HTTP Live Streaming (HLS) da Apple, o Dynamic Adaptive Streaming over HTTP (DASH), o Smooth Streaming (MSS) da Microsoft e o HTTP Dynamic Streaming (HDS) da Adobe aprimoram a experiência do usuário, entregando o vídeo à medida que é assistido. Normalmente, o conteúdo é recuperado alguns segundos antes de ser necessário. A reprodução inicia mais rapidamente, o avanço fica mais eficiente e a experiência geral do usuário é mais tranquila. Com essa opção, você paga apenas pelo que o visualizador assiste, não desperdiça a largura de banda do usuário e os usuários obtêm o conteúdo desejado com mais rapidez.

Para implementar a segunda opção, será necessária uma pequena quantidade adicional de trabalho. Primeiro, você usa o MediaConvert para converter arquivos de vídeo para o formato HLS (o protocolo de streaming com o mais amplo suporte). Nesse processo, o vídeo será dividido em pequenos segmentos e um arquivo manifesto será criado. Em seguida, você aponta a distribuição do CloudFront para o manifesto. Finalmente para reproduzir o stream ao vivo, incorpore o URL do manifesto nos reprodutores usados pelos visualizadores para assistir ao stream ao vivo. Por exemplo, para reproduzir um stream ao vivo em que o arquivo manifesto é myStream/playlist.m3u8 e a distribuição do CloudFront é d111111abcdef8.cloudfront.net, incorpore este URL nos reprodutores: http://d111111abcdef8.cloudfront.net/myStream/playlist.m3u8

A página “Video on Demand on AWS” oferece melhores práticas e orientações a serem consideradas na implementação de um fluxo de trabalho de vídeo sob demanda na Nuvem AWS. Além disso, a página apresenta uma solução da AWS que provisiona automaticamente os serviços necessários para criar uma arquitetura escalável e distribuída que consome, armazena, processa e entrega conteúdo de vídeo.

Streaming ao vivo

No caso de streaming ao vivo, o conteúdo representa uma entrega de eventos ao vivo ou de um canal ao vivo 24 horas por dia, sete dias por semana. Entre os exemplos do primeiro caso, estão transmissoras e agregadores de conteúdo que fazem streaming de torneios esportivos, cerimônias de premiação, palestras de abertura e outros eventos ao vivo com alto índice de visualização. No segundo caso, alguns exemplos são estúdios, transmissoras e operadoras de serviços de TV paga que desejam empacotar e entregar canais lineares ao vivo diretamente ao seu público pela Internet, sem uma plataforma de distribuição de terceiros.

Você pode usar a AWS para transmitir de forma econômica conteúdo ao vivo para um público global. Basta seguir algumas etapas simples.

A primeira etapa é o processamento de vídeo ao vivo. Para isso, você pode usar o AWS Elemental MediaLive, que codifica streams de vídeo ao vivo em tempo real, recebendo uma origem de vídeo ao vivo de tamanho grande (por exemplo, o vídeo gerado por um codificador on-premises, como o AWS Elemental Live) e compactando esse vídeo em versões menores para distribuição aos visualizadores. Para a etapa, há duas opções que dependem do caso de uso. Você pode usar uma origem com empacotamento just-in-time, como o AWS Elemental MediaPackage, para converter o conteúdo de vídeo de um único formato em vários formatos e empacotá-los com segurança para diversos tipos de dispositivos. O serviço facilita a implementação de recursos de vídeo populares para os visualizadores (ver do início, pausa, voltar, etc.) semelhantes aos encontrados normalmente em gravadores de vídeo digital. Além disso, o AWS Elemental MediaPackage também pode proteger conteúdo usando Digital Rights Management (DRM – Gerenciamento de direitos digitais). Como alternativa, se o codificador gerar o conteúdo no formato necessário para todos os dispositivos dos visualizadores pretendidos, você poderá usar uma origem escalável de alta performance, como o AWS Elemental MediaStore. O MediaPackage e o MediaStore entregam o conteúdo ao Amazon CloudFront, que roteia esse conteúdo para o público que assiste ao evento ao vivo.

Quando a sua solução ficar operacional, o evento ao vivo poderá ser transmitido para todo o mundo de forma escalável e econômica. O CDN pode acomodar um público de tamanho variável, comportando até as “flash mobs”.

A página “Live Video Streaming” oferece melhores práticas e orientações a serem consideradas na escolha de um fluxo de trabalho de streaming de vídeo ao vivo na Nuvem AWS. Além disso, a página apresenta uma solução da AWS que provisiona automaticamente os serviços necessários para criar uma arquitetura altamente disponível e econômica que entrega uma experiência excepcional de visualização em tempo real.