O video-service é um microserviço responsável pelo gerenciamento de vídeos e extração de frames. Ele recebe vídeos, processa a extração de frames, salva os arquivos no AWS S3, e interage com o microserviço de usuário.
- Upload de um ou mais vídeos
- Extração de frames de um vídeo
- Armazenamento dos vídeos e frames no AWS S3
- Comunicação com o microserviço user-service para enviar comunicação ao usuário
- Download de frames processados em um arquivo ZIP
video-service
│── docker
│ └── Dockerfile_node
│── node_modules
│── src
│ ├── application
│ │ ├── adapters # Adapters que interagem com gateways
│ │ ├── controllers # Controladores das rotas
│ │ ├── usecases # Casos de uso do sistema
│ │ ├── utils # Funções auxiliares
│ ├── domain
│ │ ├── entities # Entidades principais do domínio
│ │ │ ├── frame.ts
│ │ │ ├── video.ts
│ ├── infrastructure
│ │ ├── config # Configurações gerais
│ │ ├── external # Comunicação com serviços externos (AWS S3, MediaConvert, user-service)
│ │ ├── mappers # Mapeamento entre entidades e models
│ │ ├── routes # Definição das rotas da API
│ ├── interfaces # Gateways para interação entre camadas
│ ├── types # Definições de tipos para o TypeScript
│── .env # Configuração de variáveis de ambiente
│── Dockerfile_node # Configuração do Docker
│── package.json # Dependências do projeto
│── README.md # Documentação do projeto
- Node.js (TypeScript)
- Express.js (Framework para API)
- Sequelize (ORM para PostgreSQL)
- AWS S3 (Armazenamento de vídeos e frames)
- AWS MediaConvert (Processamento e extração de frames)
- Multer (Upload de arquivos)
- Archiver (Criação de arquivos ZIP para download de frames)
- Docker (Contêinerização do serviço)
Antes de rodar o projeto, garanta que você tenha instalado:
- Docker
- Node.js (versão LTS recomendada)
- AWS CLI configurado (para serviços AWS)
Crie um arquivo .env na raiz do projeto e adicione:
AWS_ACCESS_KEY_ID=your-aws-key
AWS_SECRET_ACCESS_KEY=your-aws-secret
AWS_REGION=us-west-2
AWS_S3_BUCKET=fiap-video-frame
AWS_MEDIACONVERT_ROLE=arn:aws:iam::XXXXXXXXXX:role/MediaConvertExecutionRole
AWS_MEDIACONVERT_ENDPOINT=https://xxxx.mediaconvert.us-west-2.amazonaws.com
DATABASE_URL=postgres://user:password@postgres-db:5432/fiap-video-frame
APP_URL=http://localhost:3000
docker build -t video-service .
docker run --env-file .env -p 3000:3000 video-service
### 🚀 **Passo 3: Rodar localmente (sem Docker)**
Caso queira rodar manualmente sem Docker:
```sh
npm install
npm run devPOST /videos/uploadBody (multipart/form-data):
{
"files": [video1.mp4, video2.mp4]
}POST /frames/extractBody:
{
"videoIds": [1, 2]
}GET /frames/download/:videoIdGET /videosGET /frames/video/:videoIdCaso tenha dúvidas ou sugestões, entre em contato pelo repositório!





