Sistema ao vivo

ITACARÉ
BEACH TENNIS

Salve seus melhores lances em segundos e compartilhe com o mundo

🎯 Salvar Lance

Informe os dados do momento que quer salvar — o sistema busca o vídeo automaticamente

📡
Conectando na câmera...
✂️
Extraindo 60 segundos de vídeo...
📱
Gerando versão Stories (9:16)...
💧
Aplicando marca d'água Itacaré BT...
☁️
Enviando para nuvem...
Clipe pronto na galeria!

Todos os melhores momentos da Itacaré Beach Tennis

⚡ Como funciona

Simples, rápido e sem precisar de aplicativo

1. Informe o horário
Digite o horário exato do seu lance no site
🎬
2. Clip gerado
O sistema busca ±30s do seu lance na câmera
📱
3. Compartilhe
WhatsApp, Instagram Stories ou download MP4
Dashboard

Dashboard

Visão geral · Itacaré Beach Tennis

47
Clipes salvos
↑ +8 esta semana
23
Jogadores únicos
↑ +3 esta semana
134
Downloads
↑ +22 esta semana
89
Stories gerados
↑ +15 esta semana
12GB
Armazenamento
Cloudflare R2
Clipes salvos por dia (últimos 7 dias)
Últimos lances

Gerenciar Lances

Edite, exclua e monitore todos os clipes

Todos os lances

Câmeras

Gerencie as câmeras Hikvision DS-2CD2043G2-I (4mm)

Jogadores

Jogadores cadastrados no sistema

Lista de jogadores

Marca d'água

Configure o rodapé nos vídeos da Itacaré Beach Tennis

Prévia ao vivo
Como aparece no rodapé do vídeo
🎬
Vídeo da quadra
Itacaré Beach Tennis | 10/03/2026 · 15:32
Configurar
Personalize os elementos
Mostrar nome
Mostrar data/hora
Mostrar logo

Configurar Stories

Escolha o formato padrão para geração automática de Stories (9:16)

🎯 Opção 1 — Recorte central
Corta a faixa central do vídeo 16:9 e estica para 9:16. Mais simples, perde as laterais. Ideal para lances no centro da quadra.
crop=ih*9/16:ih, scale=1080:1920
✨ Opção 2 — Fundo desfocado
Vídeo original centralizado com fundo desfocado preenchendo o 9:16. Mais elegante e sem perder conteúdo. Recomendado.
boxblur bg + overlay centered
🏷️ Opção 3 — Faixa de branding
Vídeo no topo + faixa Itacaré Beach Tennis embaixo com nome do jogador, tipo de lance e data. Mais profissional para redes sociais.
vstack: video + brand bar

Banco de Dados & Pastas

Estrutura técnica do sistema · Para desenvolvedores

📁 Estrutura de pastas (Cloudflare R2)
# Cloudflare R2 Bucket: itacare-beach-tennis videos/ clips/ horizontal/ # MP4 16:9 original 2026/03/10/ clip_001_joao_silva.mp4 clip_002_maria_costa.mp4 stories/ corte_central/ # Opção 1 - crop clip_001_joao_silva_stories.mp4 fundo_desfocado/ # Opção 2 - blur bg clip_001_joao_silva_blur.mp4 branding/ # Opção 3 - brand bar clip_001_joao_silva_brand.mp4 thumbnails/ # Imagem estática (OG / preview) clip_001_thumb.jpg assets/ logos/ logo_principal.png logo_watermark.png watermark/ overlay_template.png
🗄️ SQL — Tabela: cameras
CREATE TABLE cameras ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, -- 'Quadra 1' model VARCHAR(100), -- 'DS-2CD2043G2-I' ip VARCHAR(45) NOT NULL, -- '192.168.1.64' port INTEGER DEFAULT 554, -- porta RTSP username VARCHAR(50) DEFAULT 'admin', password VARCHAR(255) NOT NULL, -- criptografada channel INTEGER DEFAULT 1, -- canal ISAPI lens_mm DECIMAL(4,1) DEFAULT 4.0, -- 2.8 ou 4.0mm status VARCHAR(20) DEFAULT 'online', -- online/offline sd_usage INTEGER DEFAULT 0, -- % SD usado created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW() );
🗄️ SQL — Tabela: clips
CREATE TABLE clips ( id SERIAL PRIMARY KEY, player_name VARCHAR(150) NOT NULL, court_id INTEGER REFERENCES cameras(id), play_type VARCHAR(50), -- 'smash','lob','bandeja'... clip_timestamp TIMESTAMP NOT NULL, -- horário do lance duration_sec INTEGER DEFAULT 60, -- Paths no R2 url_horizontal TEXT, -- MP4 16:9 url_stories_crop TEXT, -- Stories opção 1 url_stories_blur TEXT, -- Stories opção 2 url_stories_brand TEXT, -- Stories opção 3 url_thumbnail TEXT, -- imagem preview -- Métricas views INTEGER DEFAULT 0, downloads INTEGER DEFAULT 0, shares_wa INTEGER DEFAULT 0, -- cliques WhatsApp shares_ig INTEGER DEFAULT 0, -- cliques Instagram -- Status status VARCHAR(20) DEFAULT 'processing', -- processing/ready/error origin VARCHAR(20) DEFAULT 'site', -- site/botao_fisico deleted_at TIMESTAMP DEFAULT NULL, -- soft delete created_at TIMESTAMP DEFAULT NOW() ); -- Índices para buscas rápidas CREATE INDEX idx_clips_player ON clips (player_name); CREATE INDEX idx_clips_time ON clips (clip_timestamp DESC); CREATE INDEX idx_clips_court ON clips (court_id); CREATE INDEX idx_clips_type ON clips (play_type); CREATE INDEX idx_clips_search ON clips USING GIN (to_tsvector('portuguese', player_name));
🗄️ SQL — Tabelas auxiliares
-- Jogadores (auto-cadastro ao salvar 1º clipe) CREATE TABLE players ( id SERIAL PRIMARY KEY, name VARCHAR(150) NOT NULL UNIQUE, total_clips INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT NOW() ); -- Configurações do sistema CREATE TABLE settings ( key VARCHAR(100) PRIMARY KEY, value TEXT, updated_at TIMESTAMP DEFAULT NOW() ); -- Exemplos de settings: INSERT INTO settings VALUES ('court_name', 'Itacaré Beach Tennis', NOW()), ('court_name_short', 'IBT', NOW()), ('clip_duration', '60', NOW()), ('clip_before_sec', '30', NOW()), ('stories_default', 'blur', NOW()), ('watermark_enabled','true', NOW()), ('gallery_public', 'true', NOW()); -- Admin users CREATE TABLE admins ( id SERIAL PRIMARY KEY, username VARCHAR(100) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, -- bcrypt created_at TIMESTAMP DEFAULT NOW() );
📡 Endpoints da API (backend FastAPI)
# CLIPS POST /api/clips # Salvar novo clipe (enfileira processamento) GET /api/clips # Listar clipes (com busca/filtro/paginação) GET /api/clips/:id # Detalhes de um clipe DELETE /api/clips/:id # Excluir (soft delete) POST /api/clips/:id/view # Incrementar visualizações POST /api/clips/:id/share # Registrar compartilhamento (wa/ig) # CÂMERAS GET /api/cameras # Listar câmeras POST /api/cameras # Adicionar câmera PUT /api/cameras/:id # Editar câmera DELETE /api/cameras/:id # Remover câmera GET /api/cameras/:id/test # Testar conexão RTSP/ISAPI # BUSCA (full-text) GET /api/search?q=joao&court=1&type=smash&from=2026-03-01&to=2026-03-10 # ADMIN POST /api/auth/login # Login → retorna JWT GET /api/admin/stats # Dashboard stats GET /api/settings # Ler configurações PUT /api/settings # Salvar configurações

Configurações

Configurações gerais do sistema

Clipes
Parâmetros de geração
Gerar Stories automático
Cria versão 9:16 ao salvar
Qualidade 4MP original
Maior tamanho, mais nítido
Acesso Admin
Segurança
Galeria pública
Visitantes veem sem login
Notificações
Alertas automáticos
Email ao salvar clipe
Câmera offline
Avisa se câmera cair
SD Card > 85%
Alerta de armazenamento
Cloudflare R2
Armazenamento em nuvem