feat: initial commit - Carinha Control Panel v1.0 com UI glassmorphism, watch-bar, emojis, braco robotico e conversa IA
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# Vídeo contínuo com qualidade automática
|
||||
|
||||
Desenho aprovado em 05/10/2026: vídeo contínuo, qualidade automática como padrão, buscando 30 fps. Boca e sobrancelhas com controles independentes.
|
||||
|
||||
## Integração
|
||||
|
||||
O painel recebe uma faixa de vídeo via WebRTC. O servidor Python troca apenas sinalização (`/rtc/session`, `/rtc/send`, `/rtc/poll`); o vídeo comprimido passa diretamente pela rede local entre Android e navegador. Sem serviços externos de STUN/TURN e sem gravação. Cada vez há um painel receptor ativo; abrir outro substitui a sessão anterior.
|
||||
|
||||
O Android usa uma WebView auxiliar com página embutida `transmissao.html`, em contexto `file://` já usado no app para câmera. Ela permanece anexada à Activity atrás do rosto e recebe somente a permissão de vídeo. A ponte Java fornece sinalização HTTP, telemetria e movimento; não há permissão de acesso remoto a arquivos pela WebView.
|
||||
|
||||
Durante a transmissão, o detector Camera2 anterior é suspenso para liberar a lente. A página de vídeo calcula movimento numa amostra 176×132, dez vezes por segundo, e manda o mesmo sinal à carinha. Sem transmissão, o detector nativo volta. Microfone, rosto e economia de brilho continuam funcionando. Sair do primeiro plano para câmera e conexão.
|
||||
|
||||
## Qualidade
|
||||
|
||||
Captura solicitada: até 1280×720 a 30 fps; fallback por restrição de formato em 640×480. O codec é negociado pelo WebRTC entre as capacidades dos aparelhos (não é forçado H.264). Prioridade `maintain-framerate`; os fps efetivos aparecem no painel.
|
||||
|
||||
Controle automático usa estatísticas reais do emissor. Congestionamento, atraso elevado ou fps baixo reduzem resolução/bitrate. Só sobe após quatro leituras estáveis, evitando oscilações. Tetos de bitrate: 2,5 / 1,3 / 0,6 Mb/s; fatores de escala: 1 / 1,5 / 2. A taxa de quadros alvo permanece 30. Esses valores são tetos, não garantia de resultado em qualquer rede/aparelho.
|
||||
|
||||
## Validação
|
||||
|
||||
- Testes HTTP verificam isolamento de sessão, mensagens preservadas por cursor e rejeição de sessões antigas.
|
||||
- Teste Node verifica redução automática e subida após estabilidade.
|
||||
- Teste `test_rtc_browser.py` usa câmera simulada de 30 fps e conexões WebRTC reais entre duas páginas Chromium. Resultado observado: 63 quadros em 2,2 segundos, painel 30 fps, 640×360.
|
||||
- Teste de navegador verifica ativação/desativação independente de boca e sobrancelhas.
|
||||
- Compilação/verificação da assinatura Android necessárias antes de atualizar.
|
||||
- Validação no S10 exige reabrir o app após a instalação e recarregar o painel.
|
||||
|
||||
## Referências técnicas
|
||||
|
||||
- [RTCRtpSender.setParameters](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/setParameters): bitrate, escala e prioridade de degradação.
|
||||
- [RTCPeerConnection.getStats](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getStats): estatísticas da conexão.
|
||||
|
||||
## Arquivos
|
||||
|
||||
`sinalizacao.py`: sessões e mensagens. `painel-video.js`: receptor e fps. `transmissao.html`: captura/emissor e detector. `qualidade-auto.js`: decisão automática. MainActivity/PonteRTC: ciclo de vida, câmera exclusiva e comunicação com Java.
|
||||
Reference in New Issue
Block a user