Sistema Cliente/Servidor para Processamento de VĂdeos Este projeto implementa um sistema cliente/servidor em trĂŞs camadas, projetado para enviar, processar, armazenar e gerenciar vĂdeos de forma organizada e eficiente.
- Descrição do Projeto O sistema permite que um cliente com interface gráfica (GUI) construĂdo em Tkinter envie um arquivo de vĂdeo para um servidor Flask. No servidor, o vĂdeo passa por um processo de transformação onde um filtro de imagem selecionado pelo usuário Ă© aplicado (ex: escala de cinza, pixelização, detecção de bordas).
ApĂłs o processamento, o servidor armazena o vĂdeo original, o vĂdeo processado e uma miniatura (thumbnail) em uma estrutura de pastas organizada por data e um ID Ăşnico (UUID). Todos os metadados relevantes sĂŁo salvos em um banco de dados SQLite para consulta futura. O cliente pode visualizar o histĂłrico de envios, abrir os vĂdeos e apagar registros, o que move os arquivos correspondentes para uma pasta "lixeira" no servidor. O servidor tambĂ©m possui uma galeria web que exibe todos os vĂdeos processados e se atualiza automaticamente.
- Arquitetura O projeto Ă© dividido em trĂŞs camadas principais:
-
Cliente (Tkinter): Uma aplicação desktop em Python que fornece a interface para o usuário selecionar um vĂdeo, escolher um filtro, enviá-lo ao servidor, visualizar o histĂłrico e apagar vĂdeos.
-
Servidor (Flask + OpenCV): Uma API REST que recebe os vĂdeos, aplica os filtros, gerencia o armazenamento dos arquivos em disco, interage com o banco de dados e lida com as solicitações de exclusĂŁo.
-
Banco de Dados (SQLite): Um banco de dados leve que armazena os metadados de cada vĂdeo processado.
Estrutura de Arquivos em Disco Os vĂdeos sĂŁo organizados no servidor da seguinte forma:
/media/ ├── trash/ # VĂdeos apagados sĂŁo movidos para cá └── videos/ └── AAAA-MM-DD/ └── {uuid}/ ├── original/video.{ext} ├── processed/video.{ext} └── thumbs/frame_0001.jpg
- Tecnologias Utilizadas Linguagem: Python 3
Servidor: Flask
Processamento de VĂdeo: OpenCV
Cliente GUI: Tkinter
Banco de Dados: SQLite
Comunicação: HTTP (via biblioteca requests)
- Instruções de Execução Siga os passos abaixo para configurar e executar o projeto.
Pré-requisitos Python 3.8 ou superior
Pip (gerenciador de pacotes do Python)
Passo 1: Instalação das Dependências Clone este repositório e, na pasta raiz do projeto, instale as bibliotecas Python necessárias:
pip install -r requirements.txt
Passo 2: Executando o Servidor Navegue até a pasta do servidor: cd server
Execute o script para criar o banco de dados pela primeira vez:
python database.py
Inicie o servidor Flask:
python app.py
Anote o endereço IP da máquina do servidor (ex: 192.168.1.10).
Passo 3: Executando o Cliente Abra o arquivo client/client_app.py em um editor de texto.
IMPORTANTE: Na linha SERVER_URL = "http://127.0.0.1:5000", substitua 127.0.0.1 pelo IP do servidor.
Navegue até a pasta do cliente em outro terminal: cd client
Execute a aplicação:
python client_app.py
- Demonstração


