Teste de Câmera
Teste sua câmera com visualização em tempo real, captura de foto e informações do dispositivo
Visualização ao Vivo
O que é Teste de Câmera?
Um teste de câmera verifica se o navegador consegue acessar uma webcam, câmera USB externa ou câmera integrada do notebook e mostrar uma prévia ao vivo. Ele é útil antes de videoconferências, aulas online, entrevistas, transmissões ao vivo, gravações ou qualquer situação em que câmera errada, permissão bloqueada, tela preta, baixa resolução ou iluminação ruim possam atrapalhar. A ferramenta usa a permissão de câmera do navegador, mostra o fluxo real que a página consegue abrir e permite capturar uma imagem local para conferir enquadramento e nitidez. Ela ajuda a verificar dispositivo, resolução, taxa de quadros, proporção e qualidade básica sem enviar vídeo. Não corrige falhas de driver ou hardware; se não houver imagem, confira privacidade do sistema, outros apps, cabos e drivers.
Como Usar
Como usar
- Clique em 'Iniciar Teste' e permita que o navegador acesse a câmera
- Observe a pré-visualização ao vivo da câmera
- Clique em 'Capturar' para tirar uma foto
- Você pode alternar entre câmeras ou testar diferentes resoluções
Dicas
- Se a pré-visualização não aparecer, verifique se o navegador concedeu permissão para acessar a câmera
- Se a câmera está sendo usada por outro aplicativo
- Se o dispositivo de câmera correto está selecionado
- Se a câmera está desativada nas configurações do sistema
Casos de uso
Princípio técnico
A ferramenta de teste de câmera é construída sobre a especificação W3C Media Capture and Streams, usando navigator.mediaDevices.getUserMedia(constraints) para acessar a câmera. O parâmetro constraints é um objeto semelhante a JSON que especifica valores ideal, exact, min e max para resolução (width, height), taxa de quadros, modo de orientação e ID do dispositivo. O resolvedor de restrições do navegador negocia esses valores com os descritores UVC (USB Video Class) reportados pelo firmware da câmera; quando uma restrição exata não pode ser atendida, a chamada rejeita com OverconstrainedError — esse é o mecanismo por trás do verificador de suporte a resolução, que sonda cada resolução com restrições { exact } e marca as falhas. Uma vez que o fluxo é obtido, a faixa de vídeo expõe getSettings() (os valores reais aplicados após a negociação), getCapabilities() (as faixas completas suportadas pelo hardware) e getConstraints() (o que foi originalmente solicitado). A resolução aplicada, taxa de quadros, proporção e modo de orientação são lidos de getSettings() e exibidos. A visualização ao vivo renderiza ao definir srcObject do elemento de vídeo como o MediaStream; o pipeline de mídia do navegador lida com decodificação, conversão de espaço de cores e renderização acelerada por GPU sem manipulação de pixels por JavaScript. Para capturas estáticas, CanvasRenderingContext2D.drawImage(videoElement, 0, 0) captura o quadro de vídeo decodificado atual em um canvas oculto, e toDataURL('image/png') o serializa como uma data URL PNG. enumerateDevices() lista todos os dispositivos de entrada de mídia disponíveis — observe que os rótulos dos dispositivos são strings vazias até que o usuário tenha concedido permissão de câmera pelo menos uma vez, uma medida de prevenção contra fingerprinting. Chamar track.stop() libera o hardware da câmera e desliga a luz indicadora; definir videoElement.srcObject = null desanexa o pipeline de renderização. getUserMedia requer um contexto seguro (HTTPS ou localhost) e aciona um prompt de permissão por origem; a luz indicadora da câmera é aplicada no nível do sistema operacional e não pode ser contornada pela página.
- Negociação de restrições: O resolvedor do navegador corresponde valores ideal/exact/min/max com os descritores de hardware UVC — restrições { exact } falham com OverconstrainedError quando o sensor não consegue entregar a resolução solicitada, que é como a grade de suporte a resoluções é preenchida.
- Introspecção da faixa: getSettings() retorna a resolução, taxa de quadros, proporção e facingMode realmente aplicados após a negociação — esses valores podem diferir dos ideais solicitados quando a largura de banda USB ou as capacidades do sensor são limitadas.
- Privacidade do enumerateDevices: Rótulos dos dispositivos são strings vazias até que a permissão do getUserMedia seja concedida pelo menos uma vez por origem — uma medida anti-fingerprinting imposta pela especificação que também significa que o seletor de dispositivos mostra nomes genéricos na primeira visita.
- Captura estática via Canvas: drawImage() copia o quadro de vídeo decodificado do compositor da GPU para um buffer de pixels 2D sem re-encodar; toDataURL('image/png') então o serializa como PNG sem perda — o quadro nunca sai da memória do navegador.
- Modo de orientação: O VideoFacingModeEnum é lido de track.getSettings().facingMode ('user' para frontal, 'environment' para traseira, 'left'/'right' para externa) — nem todas as câmeras USB de desktop reportam orientação, então o campo pode mostrar 'unknown'.
- Ciclo de vida do fluxo: track.stop() libera o hardware da câmera e desliga a luz indicadora no nível do SO; srcObject = null desanexa o pipeline de renderização — ambos são necessários para liberar completamente o dispositivo para que outros aplicativos possam adquiri-lo.
- Modelo de segurança: getUserMedia requer um contexto seguro (HTTPS ou localhost), aciona um diálogo de permissão por origem, e o indicador da câmera é aplicado no nível do SO/kernel — a página não pode contornar nenhuma dessas três barreiras.
Exemplos
Fluxo básico de teste
1. Clique em Iniciar Teste e conceda permissão à câmera
2. Observe a pré-visualização ao vivo quanto à nitidez, foco e taxa de quadros
3. Pressione o botão Foto para capturar um quadro de teste
4. Revise as informações do dispositivo (resolução, modo de orientação, taxa de quadros)
Uso: execute antes de qualquer reunião por vídeo, entrevista ou transmissão ao vivoTeste de resolução
1. Expanda o painel Resoluções Suportadas
2. Clique em Testar ao lado de cada resolução (ex: 1080p, 720p, 480p)
3. Verifique quais o seu hardware realmente suporta
4. Escolha a maior resolução estável para o seu caso de usoAlternância entre múltiplas câmeras
1. Abra o menu suspenso de dispositivos no topo
2. Selecione uma câmera diferente (frontal/traseira, webcam externa)
3. Compare qualidade de vídeo, balanço de cores e desempenho em pouca luz
4. Confirme se o dispositivo correto está selecionado antes de entrar na chamadaPerguntas frequentes
O que o teste de câmera verifica?
Se o navegador consegue acessar a câmera, qual a resolução oferecida, a pré-visualização ao vivo e a captura básica (foto instantânea). Útil antes de uma videochamada para confirmar que a câmera certa está selecionada e que a imagem está na orientação correta e bem exposta.
Por que minha câmera não aparece?
Causas comuns: o navegador precisa de permissão de câmera (verifique o ícone de permissão na barra de endereço); outro aplicativo está usando a câmera (feche Zoom, Teams, OBS); a configuração de privacidade do sistema operacional bloqueia o acesso do navegador (verifique Privacidade do Windows / permissões de Câmera no macOS); um interruptor físico está desativando a câmera.
Dá para alternar entre câmera frontal e traseira?
Sim, se o aparelho tiver as duas. A página enumera as câmeras disponíveis via navigator.mediaDevices.enumerateDevices(); escolha a desejada no menu suspenso. No celular, 'user' é a frontal e 'environment' é a traseira.
Quais resoluções são suportadas?
O que a câmera e o navegador disponibilizarem. Faixas comuns: 320×240, 640×480, 1280×720, 1920×1080. Resoluções maiores exigem mais largura de banda (para uso ao vivo) e CPU. A página escolhe a maior por padrão; selecione uma menor se sua rede estiver lenta.
Meu vídeo da câmera é enviado para algum servidor?
Não. O fluxo de vídeo é renderizado localmente; os quadros capturados ficam no navegador. Atenção: a permissão de câmera é concedida no nível da origem, então qualquer aba aberta deste site pode acessá-la até você revogar. Feche a aba quando terminar.
Por que o vídeo aparece espelhado?
Os navegadores espelham a câmera frontal na pré-visualização ao vivo para se parecer com o efeito 'espelho' que as pessoas esperam. As fotos capturadas podem ou não ficar espelhadas — verifique as duas visualizações. CSS transform: scaleX(-1) liga ou desliga o espelhamento.
E se a permissão de câmera estiver permanentemente negada?
No Chrome, clique no ícone de câmera na barra de endereço → 'Sempre permitir'. Se necessário, redefina em chrome://settings/content/camera. Outros navegadores têm configurações de permissão semelhantes. Depois de conceder, recarregue a página.