Este repositório contém o microserviço de processamento de vídeos do projeto FIAP X, responsável por consumir vídeos da fila RabbitMQ, extrair seus frames com OpenCV, gerar um arquivo ZIP contendo as imagens, e atualizar o status do vídeo no banco de dados. Em caso de falha, o serviço também pode notificar o usuário via e-mail utilizando a fila notification_queue
.
Este serviço é executado de forma contínua e assíncrona, permitindo o processamento de múltiplos vídeos de maneira escalável.
- OpenCV (opencv-python-headless) (Processamento de vídeo)
- SQLAlchemy (ORM para banco de dados relacional)
- RabbitMQ (Fila de mensageria)
- Pika (Cliente RabbitMQ)
- PostgreSQL (Banco relacional)
- Docker e Docker Compose (Ambiente containerizado)
O Processor Service atua como consumidor da fila video_processing
, realizando o processamento e salvando os resultados em disco e no banco.
processor-service/
├── app/
│ ├── main.py # Inicia o consumidor
│ ├── consumer.py # Lógica de consumo da fila e controle de fluxo
│ ├── processor.py # Extração de frames via OpenCV
│ ├── zipper.py # Criação do arquivo ZIP
│ ├── notifier.py # Envia notificações de status via RabbitMQ
│ ├── models/
│ │ ├── video.py # Modelo da entidade vídeo
│ │ └── user.py # Modelo do usuário (referência do vídeo)
│ └── db.py # Conexão com o banco de dados
├── requirements.txt # Dependências do Python
├── Dockerfile # Container do serviço
└── docker-compose.yml # Orquestração local (opcional)
- Consome mensagem da fila
video_processing
- Atualiza status do vídeo para
processing
- Extrai os frames com OpenCV
- Gera arquivo ZIP com as imagens
- Atualiza status para
done
e salva ozip_path
- Notifica o usuário (status: success ou error)
{
"video_id": 4,
"path": "/uploads/video_teste_fiapx.mp4",
"user_email": "[email protected]"
}
docker compose up processor
O serviço ficará em execução contínua, consumindo novas mensagens à medida que forem inseridas na fila RabbitMQ.