Tengo un Samsung Galaxy S22 Ultra y estoy tratando de usar navigator.mediaDevices para (1) enumerar todas las cámaras y (2) mostrar la salida de cualquiera de las cámaras.
Aquí están las etiquetas de los dispositivos cuando enumero todas las cámaras en mi dispositivo:
Según tengo entendido, el teléfono tiene 5 cámaras en total:
Entonces, 4x de las cámaras están orientadas hacia atrás y 1x está orientada hacia adelante. Entonces, ¿por qué navigator.mediaDevices.enumerateDevices() devuelve algo completamente diferente?
Mi siguiente pregunta es... cuando uso cualquiera de los ID de dispositivo que navigator.mediaDevices.getUserMedia() devolvió, obtengo la vista de la cámara frontal en mi teléfono, incluso si selecciono un ID de dispositivo cuya etiqueta está "mirando hacia atrás". ¿Que pasa con eso?
Aquí está mi código:
<script> navigator.mediaDevices.getUserMedia({video: true}); var getCameraSelection = async () => { var devices = await navigator.mediaDevices.enumerateDevices(); var videoDevices = devices.filter(device => device.kind === 'videoinput'); const options = videoDevices.map(videoDevice => { return `<li><a href="#" onclick="useCamera('${videoDevice.deviceId}')">${videoDevice.label}</a></li>`; }); document.querySelector('#output').innerHTML = '<ul>' + options.join('') + '</ul>'; }; getCameraSelection(); var useCamera = async (deviceId) => { const stream = await navigator.mediaDevices.getUserMedia({ deviceId: deviceId, video: true }); var video = document.querySelector('video'); video.srcObject = stream; video.play(); return false; }; </script> <div id="output"></div> <video autoplay></video>