As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Crie um pipeline de processamento de vídeo usando o Amazon Kinesis Video AWS Streams e o Fargate
Criado por Piotr Chotkowski () e Pushparaju Thangavel () AWS AWS
Ambiente: PoC ou piloto | Tecnologias: análise; serviços de mídia | AWSserviços: AWS Fargate; Amazon Kinesis; Amazon S3 |
Resumo
Esse padrão demonstra como usar o Amazon Kinesis Video Streams
O padrão fornece um aplicativo de amostra na forma de um projeto Java Maven. Esse aplicativo define a AWS infraestrutura usando o AWSCloud Development Kit
Pré-requisitos e limitações
Pré-requisitos
Uma AWS conta ativa
Java SE Development Kit (JDK) 11, instalado
Apache Maven
, instalado AWSCloud Development Kit (AWSCDK), instalado
AWSInterface de linha de comando (AWSCLI) versão 2, instalada
Docker
(necessário para criar imagens do Docker para usar nas definições de tarefas do AWS Fargate), instalado
Limitações
Esse padrão serve como uma prova de conceito ou como base para um maior desenvolvimento. Ele não deve ser usado na sua forma atual para implantações de produção.
Versões do produto
Arquitetura
Pilha de tecnologias de destino
Amazon Kinesis Video Streams
AWSTarefa de Fargate
Fila do Amazon Simple Queue Service (AmazonSQS)
Bucket do Amazon S3
Arquitetura de destino
O usuário cria um stream de vídeo do Kinesis, carrega um vídeo e envia uma JSON mensagem que contém detalhes sobre o stream de vídeo de entrada do Kinesis e o bucket S3 de saída para uma fila. SQS AWSFargate, que está executando o aplicativo principal em um contêiner, retira a mensagem da SQS fila e começa a extrair os quadros. Cada quadro é salvo em um arquivo de imagem e armazenado no bucket S3 de destino.
Automação e escala
O aplicativo de amostra pode ser escalado horizontal e verticalmente em uma única região. AWS O escalonamento horizontal pode ser obtido aumentando o número de tarefas implantadas do Fargate AWS que são lidas da fila. SQS O dimensionamento vertical pode ser obtido aumentando o número de segmentos de divisão de quadros e publicação de imagens no aplicativo. Essas configurações são passadas como variáveis de ambiente para o aplicativo na definição do QueueProcessingFargateServicerecurso no AWSCDK. Devido à natureza da implantação do AWS CDK stack, você pode implantar esse aplicativo em várias AWS regiões e contas sem nenhum esforço adicional.
Ferramentas
Ferramentas
AWSCDK
é uma estrutura de desenvolvimento de software para definir sua infraestrutura e recursos de nuvem usando linguagens de programação como TypeScript, Python JavaScript, Java e C#/.Net. O Amazon Kinesis Video
Streams é um serviço AWS totalmente gerenciado que você pode usar para transmitir vídeo ao vivo de dispositivos para a nuvem ou criar aplicativos AWS para processamento de vídeo em tempo real ou análise de vídeo orientada por lotes. AWSO Fargate
é um mecanismo de computação sem servidor para contêineres. O Fargate elimina a necessidade de provisionar e gerenciar servidores e permite que você se concentre no desenvolvimento de seus aplicativos. O Amazon S3
é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho. SQSA Amazon
é um serviço de enfileiramento de mensagens totalmente gerenciado que permite separar e escalar microsserviços, sistemas distribuídos e aplicativos sem servidor.
Código
Um arquivo .zip do projeto de aplicativo de amostra (
frame-splitter-code.zip
) está anexado.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Inicie o daemon do Docker. | Inicie o daemon do Docker em seu sistema local. AWSCDKEle usa o Docker para criar a imagem usada na tarefa do AWS Fargate. Você deve executar o Docker antes de prosseguir para a próxima etapa. | Desenvolvedor, DevOps engenheiro |
Crie o projeto. | Baixe o aplicativo de amostra
| Desenvolvedor, DevOps engenheiro |
Inicialize o. AWS CDK | (Somente para AWS CDK usuários iniciantes) Se for a primeira vez que você estiver usando o AWSCDK, talvez seja necessário inicializar o ambiente executando o AWS CLI comando:
onde | Desenvolvedor, DevOps engenheiro |
Implante a AWS CDK pilha. | Nesta etapa, você cria os recursos de infraestrutura necessários (SQSfila, bucket do S3, definição de tarefa do AWS Fargate) em sua AWS conta, cria a imagem do Docker necessária para a tarefa do Fargate e implanta o AWS aplicativo. Em um prompt de comando, navegue até o diretório raiz do projeto e execute o comando:
onde | Desenvolvedor, DevOps engenheiro |
Crie um streaming de vídeo. | Nesta etapa, você cria um stream de vídeo do Kinesis que servirá como stream de entrada para processamento de vídeo. Verifique se você tem o AWS CLI instalado e configurado. No AWSCLI, execute:
where Como alternativa, você pode criar um stream de vídeo usando o console do Kinesis seguindo as etapas na documentação do Kinesis Video Streams. Anote o nome do AWS recurso (ARN) do fluxo criado; você precisará dele mais tarde. | Desenvolvedor, DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Faça o upload do vídeo para o stream. | Na pasta do projeto do aplicativo
Como alternativa, você pode enviar seu vídeo usando um dos métodos descritos na documentação do Kinesis Video Streams. | Desenvolvedor, DevOps engenheiro |
Inicie o processamento de vídeo. | Agora que você enviou um vídeo para o stream de vídeo do Kinesis, pode começar a processá-lo. Para iniciar a lógica de processamento, você precisa enviar uma mensagem com detalhes para a SQS fila AWS CDK criada durante a implantação. Para enviar uma mensagem usando o AWSCLI, execute:
where
onde O envio dessa mensagem inicia o processamento do vídeo. Como alternativa, você pode enviar uma mensagem usando o SQS console da Amazon, conforme descrito na SQSdocumentação da Amazon. | Desenvolvedor, DevOps engenheiro |
Visualize imagens dos quadros de vídeo. | Você pode ver as imagens resultantes no bucket de saída do S3, | Desenvolvedor, DevOps engenheiro |
Recursos relacionados
Mais informações
Escolhendo um IDE
Recomendamos que você use seu Java favorito IDE para criar e explorar esse projeto.
Limpeza
Depois de concluir a execução deste exemplo, remova todos os recursos implantados para evitar custos adicionais de AWS infraestrutura.
Para remover a infraestrutura e o stream de vídeo, use esses dois comandos no AWSCLI:
cdk destroy --profile "$AWS_PROFILE_NAME" --all
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
Como alternativa, você pode remover os recursos manualmente usando o AWS CloudFormation console para remover a AWS CloudFormation pilha e o console do Kinesis para remover o stream de vídeo do Kinesis. Observe que isso cdk destroy
não remove o bucket S3 de saída nem as imagens nos repositórios do Amazon Elastic Container Registry (AmazonECR) (aws-cdk/assets
). Você precisa removê-los manualmente.
Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip