ToolActToolAct

Prueba de Cámara

Prueba tu cámara con vista previa en tiempo real, captura de fotos e información del dispositivo

No Iniciado

Vista Previa en Vivo

Inicia la prueba para ver la vista previa de la cámara

¿Qué es la Prueba de Cámara?

Una prueba de cámara comprueba si el navegador puede acceder a una webcam, una cámara USB externa o la cámara integrada del portátil y mostrar una vista previa en vivo. Es útil antes de videollamadas, clases en línea, entrevistas, directos, grabaciones o cualquier situación donde una cámara equivocada, permisos bloqueados, pantalla negra, baja resolución o mala iluminación puedan causar problemas. La herramienta usa el permiso de cámara del navegador, muestra el flujo real que la página puede abrir y permite capturar una imagen local para revisar encuadre y nitidez. Ayuda a verificar dispositivo, resolución, fotogramas por segundo, relación de aspecto y calidad básica sin subir vídeo. No puede reparar fallos de controlador o hardware; si no aparece imagen, revisa privacidad del sistema, otras apps, cables y controladores.

Cómo usar

Cómo usar

  1. Haz clic en 'Iniciar Prueba' y permite el acceso del navegador a la cámara
  2. Observa la vista previa en directo de la cámara
  3. Haz clic en 'Capturar' para tomar una foto
  4. Puedes cambiar entre cámaras o probar distintas resoluciones

Consejos

  • Si la vista previa no se muestra, comprueba si el navegador ha concedido permiso para acceder a la cámara
  • Si la cámara está siendo usada por otra aplicación
  • Si se ha seleccionado el dispositivo de cámara correcto
  • Si la cámara está desactivada en la configuración del sistema

Casos de uso

Verificar el acceso a la cámara del navegador antes de una llamadaInicia la cámara para confirmar el estado de permisos, el deviceId seleccionado, la vista previa en vivo, la resolución real, la tasa de fotogramas, la relación de aspecto y la orientación frontal o trasera. Detectar un flujo bloqueado, un objetivo equivocado o un fallback a 640x480 antes de una entrevista, clase, directo o sesión de soporte es la forma más barata de evitar un momento embarazoso de resolución de problemas delante de otros participantes.
Comprobar qué resoluciones soporta realmente la cámaraEjecuta las comprobaciones integradas para QVGA, VGA, 720p, 1080p, 1440p y 4K. La página llama a getUserMedia con restricciones explícitas para cada resolución y marca si el navegador y el sensor la aceptan, dejando al descubierto casos donde la ficha técnica dice 4K pero el descriptor UVC realmente tope en 1080p.
Capturar instantáneas locales como evidenciaToma capturas PNG del vídeo en vivo con la API drawImage de Canvas, descarga los fotogramas útiles y elimina los que no interesen. Esto resulta útil al documentar errores de enfoque, banding del IR-corte, distorsión de objetivo, problemas de encuadre o un fallo de hardware que necesites enviar al fabricante, un formulario de RMA o una disputa de anuncio en línea.
Cambiar entre cámaras frontal, trasera y externasElige un deviceId diferente en el selector de cámara cuando un portátil tenga webcam integrada y una cámara USB externa o virtual, de modo que el software de llamada pueda apuntar al objetivo correcto sin tocar la configuración del sistema. Las cámaras virtuales de OBS, las tarjetas de captura de Elgato y Continuity Camera en macOS aparecen como dispositivos separados, y la página muestra sus etiquetas para que sea fácil detectar la equivocada antes de empezar la emisión.
Diagnosticar una vista previa negra o bloqueadaCuando la vista previa está oscura o congelada, la página muestra el estado de permisos de getUserMedia, la etiqueta del dispositivo y la resolución aplicada. Verifica la configuración de privacidad del sistema operativo, las aplicaciones compitiendo por la cámara (Zoom, OBS, FaceTime) y un cambio reciente de USB o controlador antes de asumir que el propio sensor ha fallado, ya que la mayoría de las vistas previas negras las causa otro proceso que mantiene el dispositivo en exclusiva.

Principio técnico

La herramienta de prueba de cámara se basa en la especificación W3C Media Capture and Streams, utilizando navigator.mediaDevices.getUserMedia(constraints) para acceder a la cámara. El parámetro constraints es un objeto tipo JSON que especifica valores ideal, exact, min y max para resolución (ancho, alto), tasa de fotogramas, modo de orientación e ID de dispositivo. El solucionador de restricciones del navegador negocia estos valores contra los descriptores UVC (USB Video Class) reportados por el firmware de la cámara; cuando una restricción exacta no puede cumplirse, la llamada se rechaza con un OverconstrainedError — este es el mecanismo detrás del verificador de soporte de resolución, que prueba cada resolución con restricciones { exact } y marca los fallos. Una vez adquirido el flujo, la pista de vídeo expone getSettings() (los valores reales aplicados tras la negociación), getCapabilities() (los rangos completos soportados por el hardware) y getConstraints() (lo que se solicitó originalmente). La resolución aplicada, la tasa de fotogramas, la relación de aspecto y el modo de orientación se leen de getSettings() y se muestran. La vista previa en vivo se renderiza estableciendo el srcObject del elemento de video al MediaStream; el pipeline de medios del navegador maneja la decodificación, la conversión de espacio de color y la renderización acelerada por GPU sin manipulación de píxeles por JavaScript. Para capturas de imagen fija, CanvasRenderingContext2D.drawImage(videoElement, 0, 0) toma una instantánea del fotograma de vídeo decodificado actual en un canvas oculto, y toDataURL('image/png') lo serializa como una URL de datos PNG. enumerateDevices() lista todos los dispositivos de entrada de medios disponibles — cabe señalar que las etiquetas de dispositivos son cadenas vacías hasta que el usuario haya concedido permiso de cámara al menos una vez, una medida de prevención de huella digital. Llamar a track.stop() libera el hardware de la cámara y apaga la luz indicadora; establecer videoElement.srcObject = null desconecta el pipeline de renderización. getUserMedia requiere un contexto seguro (HTTPS o localhost) y activa un diálogo de permiso por origen; la luz indicadora de la cámara se aplica a nivel del sistema operativo y no puede ser eludida por la página.

  • Negociación de restricciones: el solucionador del navegador compara los valores ideal/exact/min/max contra los descriptores de hardware UVC — las pruebas con { exact } fallan con OverconstrainedError cuando el sensor no puede entregar la resolución solicitada, y así se completa la tabla de soporte de resolución.
  • Introspección de pista: getSettings() devuelve la resolución, tasa de fotogramas, relación de aspecto y facingMode realmente aplicados tras la negociación — pueden diferir de los valores ideales solicitados cuando el ancho de banda USB o las capacidades del sensor están limitados.
  • Privacidad en enumerateDevices: las etiquetas de dispositivos son cadenas vacías hasta que se concede permiso de getUserMedia al menos una vez por origen — una medida anti-huella digital exigida por la especificación que también significa que el selector de dispositivos muestra nombres genéricos en la primera visita.
  • Captura de imagen fija con Canvas: drawImage() copia el fotograma de vídeo decodificado desde el compositor de GPU a un búfer de píxeles 2D sin recodificar; toDataURL('image/png') lo serializa como PNG sin pérdida — el fotograma nunca sale de la memoria del navegador.
  • Modo de orientación: el VideoFacingModeEnum se lee de track.getSettings().facingMode ('user' para frontal, 'environment' para trasero, 'left'/'right' para externo) — no todas las cámaras USB de escritorio reportan orientación, por lo que el campo puede mostrar 'unknown'.
  • Ciclo de vida del flujo: track.stop() libera el hardware de la cámara y apaga la luz indicadora a nivel del SO; srcObject = null desconecta el pipeline de renderización — ambos son necesarios para liberar completamente el dispositivo y que otras aplicaciones puedan adquirirlo.
  • Modelo de seguridad: getUserMedia requiere un contexto seguro (HTTPS o localhost), activa un diálogo de permiso por origen, y el indicador de cámara se aplica a nivel del SO/kernel — la página no puede eludir ninguna de estas tres barreras.

Ejemplos

Flujo de prueba básico

1. Haz clic en Iniciar prueba y concede permiso de cámara
2. Observa la vista previa en vivo: nitidez, enfoque y tasa de fotogramas
3. Pulsa el botón Foto para capturar un fotograma de prueba
4. Revisa la información del dispositivo (resolución, modo de cámara, tasa de fotogramas)
Uso: ejecútalo antes de cualquier videollamada, entrevista o transmisión en vivo

Prueba de resoluciones

1. Despliega el panel Resoluciones admitidas
2. Haz clic en Probar junto a cada resolución (p. ej. 1080p, 720p, 480p)
3. Comprueba cuáles admite realmente tu hardware
4. Elige la resolución más alta y estable según tu caso de uso

Cambio entre múltiples cámaras

1. Abre el menú desplegable de dispositivos en la parte superior
2. Selecciona otra cámara (frontal/trasera, webcam externa)
3. Compara la calidad de imagen, balance de color y rendimiento con poca luz
4. Confirma que el dispositivo correcto está seleccionado antes de unirte a la llamada

Preguntas frecuentes

¿Qué comprueba la prueba de cámara?

Si tu navegador puede acceder a la cámara, la resolución que ofrece, la vista previa en vivo y la captura básica (instantánea a imagen). Es útil antes de una videollamada para confirmar que la cámara correcta está seleccionada y que la imagen está bien orientada y expuesta.

¿Por qué no aparece mi cámara?

Causas comunes: el navegador necesita permiso de cámara (revisa el icono de permisos en la barra de direcciones); otra aplicación está usando la cámara (cierra Zoom, Teams, OBS); la configuración de privacidad del sistema bloquea el acceso del navegador (revisa Privacidad de Windows o el permiso de Cámara en macOS); un interruptor de hardware está desactivando la cámara.

¿Puedes cambiar entre cámara frontal y trasera?

Sí, si tu dispositivo tiene ambas. La página enumera las cámaras disponibles mediante navigator.mediaDevices.enumerateDevices(); elige la que quieras en el desplegable. En móviles, 'user' es la frontal y 'environment' es la trasera.

¿Qué resoluciones son compatibles?

Las que la cámara y el navegador expongan. Rangos comunes: 320×240, 640×480, 1280×720, 1920×1080. Las resoluciones más altas requieren más ancho de banda (para uso en directo) y más CPU. La página elige la más alta por defecto; selecciona una menor si tu red es lenta.

¿Se sube mi vídeo a algún servidor?

No. El flujo de vídeo se renderiza localmente; los fotogramas capturados se quedan en el navegador. Ten en cuenta que el permiso de cámara se concede a nivel de origen, así que cualquier pestaña abierta de este sitio puede acceder hasta que lo revoques. Cierra la pestaña al terminar.

¿Por qué se ve el vídeo en espejo?

Los navegadores reflejan la cámara frontal en la vista previa para imitar el efecto «espejo» que la gente espera. Las instantáneas pueden o no estar reflejadas; revisa ambas vistas. La regla CSS transform: scaleX(-1) activa o desactiva el espejo.

¿Qué hago si el permiso de cámara está denegado de forma permanente?

En Chrome, haz clic en el icono de cámara de la barra de direcciones → «Permitir siempre». Restablece desde chrome://settings/content/camera si es necesario. Otros navegadores tienen ajustes similares. Tras conceder el permiso, recarga la página.