Teste de câmera e microfone

Teste webcam, microfone e alto-falante como o app de videochamada os vê: prévia ao vivo e medidor de nível real.

Vídeo e áudio ficam nesta página: nenhum quadro é desenhado em canvas para upload nem qualquer amostra é enviada. Parar ou sair da aba fecha todos os fluxos.

O navegador vai pedir permissão quando você clicar em Ativar. Nada começa antes disso.

Câmera—
Tamanho real do vídeo: —Taxa de quadros: —
Microfone—
Nível de entrada
Teste do alto-falante

O beep toca na saída que o sistema estiver roteando agora: prova que algum dispositivo de saída funciona, mas esta página não consegue confirmar qual (não detecta um headphone específico).

Como funciona

As duas seções são invólucros finos e honestos do navigator.mediaDevices.getUserMedia. O botão da câmera pede um stream de vídeo (idealmente 1280 × 720) e o liga direto a um elemento de vídeo local; o botão do microfone pede um stream de áudio e o roteia por um AnalyserNode do Web Audio que mede o maior desvio do silêncio em cada quadro para mover o medidor, seu marcador de pico e o aviso de estouro. O beep é um oscilador de 440 Hz tocado pela saída normal.

Constraints e facingMode
getUserMedia recebe constraints em vez de um dispositivo: a página pede video true com largura e altura ideais, e quando você escolhe um dispositivo ela requisita de novo com aquele deviceId exato. No celular dá para usar o seletor para escolher frontal ou traseira. A leitura de resolução mostra video.videoWidth × videoHeight — o que a câmera realmente entrega, que costuma diferir do tamanho ideal pedido.
Rótulos só depois da permissão
enumerateDevices pode listar suas câmeras e microfones a qualquer momento, mas até a permissão ser concedida o rótulo de cada item é uma string opaca. Por isso os seletores começam como "Padrão do sistema" e se preenchem com nomes de verdade assim que você clica em Ativar — a mesma regra vale para a lista de dispositivos de qualquer app de chamadas.
Nível vs volume
O medidor mostra nível de sinal, não o volume do seu sistema: ele lê a forma de onda que o microfone realmente captura, depois do ganho de entrada do SO. Um microfone que nunca chega ao máximo significa ganho de entrada baixo ou distância, não dispositivo quebrado; um medidor travado em 100% com aviso de estouro significa distorção que todos ouvirão na reunião.

Perguntas frequentes

Funciona offline ou sem dispositivos?

A página é HTML/JS puro: depois de carregada funciona offline e nenhum servidor participa do teste. Sem câmera ou microfone conectados, os botões Ativar avisam que nenhum dispositivo foi encontrado; nada quebra e a outra seção continua funcionando. No celular você pode alternar entre câmera frontal e traseira pelo seletor.

Zoom ou Teams verão o mesmo resultado?

Normalmente sim, pois usam a mesma camada de dispositivos do sistema: se aqui a câmera transmite e o medidor se move, o hardware está saudável. As duas exceções honestas são apps que retêm o dispositivo exclusivamente (alguns bloqueiam que o navegador abra uma câmera que já é deles) e drivers raros que expõem ao navegador só resoluções baixas.

O medidor mal se mexe mas eu me ouço nas gravações — por quê?

O medidor lê o nível de entrada bruto depois do ajuste de volume de entrada do sistema, então um volume de entrada baixo deixa o medidor quieto mesmo com microfone bom. Aumente o nível de entrada do sistema para uns 80% e fale a distância normal; o aviso de estouro aparece quando você passa do ponto.

Por que os dispositivos aparecem como 'Microfone (0000…)' até eu dar permissão?

Os navegadores escondem os rótulos legíveis atrás da permissão para impedir que sites identifiquem seu hardware. Os nomes do seletor aqui (e em qualquer app de chamadas) só fazem sentido depois que você clica em Ativar e permite o acesso — é uma regra de privacidade do navegador, não um defeito da página.

Algo é enviado para um servidor?

Não. O vídeo vai do getUserMedia direto para um elemento de vídeo local; o áudio é analisado por um AnalyserNode do Web Audio nesta aba e descartado. Nenhum quadro é exportado por canvas e nenhuma amostra de áudio sai da página — parar ou fechar a aba libera os dispositivos na hora.