1# Teste com 1 usuário2python3 test_latency_playwright.py 134# Teste com 5 usuários simultâneos5python3 test_latency_playwright.py 567# Teste com 10 usuários simultâneos8python3 test_latency_playwright.py 10910# Teste com 3 usuários sequencialmente11python3 test_latency_playwright.py 3false
Verificar Status do Servidor
./scripts/start_webrtc.sh # Mostra status atual
📁 Arquitetura
.
├── scripts/
│ ├── install_webrtc.sh # Instala dependências
│ ├── start_webrtc.sh # Inicia servidor WebRTC
│ └── stop_webrtc.sh # Para servidor WebRTC
├── webrtc-server-fixed.py # Servidor WebRTC
├── webrtc-client.html # Cliente web
├── test_latency_playwright.py # Teste automatizado
├── requirements.txt # Dependências Python
├── TESTING_INSTRUCTIONS.md # Instruções de teste
└── AUTOMATED_TESTING.md # Guia de testes automatizados
🧩 Scripts Disponíveis
install_webrtc.sh
Instala todas as dependências para o teste de latência:
Verifica Python 3.8+
Instala dependências Python
Instala Playwright e Chromium
start_webrtc.sh
Inicia o servidor WebRTC:
Verifica se já está rodando
Para processos existentes
Inicia servidor em background
Mostra status e informações de acesso
Parâmetros:
--port PORTA: Escolher porta (padrão: 9000)
--host HOST: Escolher host (padrão: 0.0.0.0)
--no-daemon: Rodar em foreground
stop_webrtc.sh
Para o servidor WebRTC:
Para o processo pelo PID
MATA todos os processos relacionados
Limpa arquivos de PID
test_latency_playwright.py
Script de teste automatizado com Playwright:
Usa browser headless (Chromium)
Testa com 1 ou múltiplos usuários
Captura timestamps do vídeo
Calcula latência com precisão
Gera relatórios JSON
Parâmetros:
<num_usuarios>: Número de usuários (padrão: 1)
<simultaneo>: true para simultâneo, false para sequencial (padrão: true)
📊 Métricas Coletadas
Latência
Tempo de navegação: Carregamento da página
Tempo de conexão WebRTC: Handshake WebRTC
Latência de vídeo: Timestamp gerado → frame recebido
10 medições por usuário: Para precisão
Performance
FPS: Frames por segundo recebidos
Taxa de sucesso: Porcentagem de conexões bem-sucedidas
Tempo total: Duração do teste
Classificação de Latência
Latência
Classificação
Uso
< 100ms
✅ Excelente
Quase imperceptível
100-300ms
✅ Bom
Ideal para conversação
300-500ms
⚠️ Aceitável
Pequenos delays possíveis
> 500ms
❌ Ruim
Latência muito alta
🔍 Análise da Latência (~200ms)
Breakdown dos ~200ms
Componente
Latência
% do total
Processamento servidor
40-60ms
20-30%
Transporte rede
80-120ms
40-60%
Processamento cliente
30-50ms
15-25%
Buffering WebRTC
20-30ms
10-15%
Por que não é menor?
Processamento servidor (~40-60ms):
Geração de frame (OpenCV): ~10ms
Conversão BGR→RGB: ~5ms
WebRTC encoding (VP8/H.264): ~20-30ms
Transporte rede (~80-120ms):
Servidor → Internet: 30-50ms
Roteamento: 20-40ms
Download: 30-30ms
Nota: Esses são os valores normais para WebRTC via internet. Para atingir < 100ms, seria necessário:
Servidor geograficamente próximo
Hardware especializado (GPU encoding)
Conexão dedicada
CDN global (Cloudflare, etc.)
Comparação com Outros Serviços
Serviço
Latência Típica
Custo
Seu WebRTC
~200ms
Self-hosted ✅
LiveKit Cloud
100-250ms
$$$$$
Google Meet
100-250ms
$$$
Zoom
100-200ms
$$$$
Discord
100-200ms
$
Conclusão: 200ms é excelente para um servidor self-hosted! 🎯