Amazon Lambda para processamento de vídeo e imagem?

4

O serviço para o qual estou construindo a arquitetura possui uma parte de processamento de vídeo. Basicamente, algumas pessoas podem enviar vídeos (armazenados no S3) que serão divididos em quadros com alta resolução. A partir desses quadros de alta resolução, imagens derivadas (miniaturas, sprites) são construídas e tudo isso deve ser armazenado no S3.

Minha pergunta é: onde e como devo executar meu script de processamento de vídeo? Eu gostaria de usar o Lambda, mas não tenho certeza de suas limitações ( limite de tempo de 300s e disco de 512 MB armazenamento permite-me fazê-lo. Observe que os vídeos podem pesar até vários GB.

A solução em que estou pensando atualmente é:

  • leia o vídeo do S3 usando um fluxo (para que ele não precise ser totalmente copiado)
  • converta o vídeo em quadros e carregue-os diretamente no S3 (eu também tenho que me certificar de não preencher o armazenamento com os quadros)
  • leia individualmente ou agrupe os quadros do S3 e use-os para gerar miniaturas e sprites, que são carregados no S3. Estou um pouco preocupado com o tempo que isso pode levar, mesmo que meu Lambda esteja na mesma região do meu balde S3.

Você acha que essa é a melhor solução? Você consegue pensar em um mais simples? Ou você acha que é uma idéia melhor executar o processamento em uma instância padrão do EC2 (talvez com algum sistema de enfileiramento como o SQS no meio)?

Obrigado!

    
por christophetd 08.03.2016 / 21:48

3 respostas

2

A última coisa que você quer é ter um caso de uso válido (por exemplo, vídeo grande) para acertar as limitações do Lambda (tempo e / ou armazenamento em disco).

Você deve reduzir seus passos em pequenos blocos de tarefas únicas, por exemplo:

  • Converta vídeo em quadros
  • Converter quadros em miniaturas
  • etc.

Avalie cada pequena tarefa individualmente. Determine seu tamanho de arquivo mínimo / máximo / médio e calcule seu tempo mínimo / máximo / médio a ser processado. Se o Lambda for adequado, escolha-o. Caso contrário, você pode usar a (s) instância (s) EC2 para processar itens de filas (por exemplo, usando SQS).

    
por 08.03.2016 / 22:08
1

Dependendo exatamente do que você está tentando fazer e se ela se encaixa, você pode encontrar a O serviço de processamento de vídeo Elastic Transcoder oferece uma solução pronta para uso. Certamente lista a geração de miniaturas como parte da oferta.

    
por 14.05.2016 / 16:46
0

Se você fizer o seu próprio, recomendo testar o Amazon SWF , já que o usei para criar fluxos de trabalho de processamento de vídeo antes.

Como outra resposta sugerida, você deve dividir cada etapa em pequenas atividades de tarefa única e depois reuni-las em um fluxo de trabalho. Você pode então executar os fluxos de trabalho no EC2 ou em qualquer lugar que desejar.

    
por 30.08.2016 / 23:54