Necesito mostrar un botón dependiendo de la existencia de una cámara donde se ejecuta la aplicación web. Tengo el siguiente código para detectar tal existencia de una cámara.
const availableMediaOnDevice = await window.navigator.mediaDevices?.enumerateDevices(); console.log("devices ->", availableMediaOnDevice); const deviceHasOwnCamera = availableMediaOnDevice.some( (device) => device.kind === "videoinput" ); Esto funciona bien cuando se ejecuta en un IIS local en mi computadora de escritorio. Si conecto una cámara USB, obtengo una entrada de videoinput y si la desenchufo, el dispositivo se elimina al hacer enumerateDevices() nuevamente.
Sin embargo, cuando implemento esto en nuestro entorno de prueba y visito el sitio web usando la misma computadora de escritorio cuando se ejecuta enumerateDevices() , siempre obtengo un dispositivo de entrada de videoinput . El groupId cambia cuando desenchufo la cámara, pero luego vuelve al valor original cuando la enchufo nuevamente.
Algo que también es diferente es que localmente obtengo un valor de etiqueta "FaceCam 2020" mientras que en el entorno de prueba obtengo una etiqueta vacía, independientemente de si la cámara está conectada o no. Esto me hace pensar que tal vez esto esté relacionado con los permisos, pero luego esperaría que la entrada de video nunca se mostrara en la prueba en lugar de lo contrario.