Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

164
Visualizações
HTML5 y javascript: toma de fotografías desde un dispositivo compatible con varias cámaras

Estoy desarrollando una PWA basada en Vuejs. He implementado un componente para tomar fotografías usando la cámara incorporada del dispositivo. esta usando

  • la API navigator.mediaDevices.getUserMedia con un elemento de video para mostrar la transmisión desde la cámara.
  • un canva y sus getContext("2d").drawImage para obtener la imagen de la secuencia y mostrársela al usuario
  • la API navigator.mediaDevices.enumerateDevices para obtener una lista de las cámaras disponibles y el parámetro de restricción de getUserMedia para cambiar entre ellas.

Todo esto funciona muy bien :)

Pero ahora me he topado con un nuevo problema: algunos teléfonos inteligentes recientes tienen múltiples cámaras traseras que el software de la cámara integrada combinaría para tomar una sola toma (una cámara sería buena con baja exposición, otra con alta exposición y otra más en algunas otras condiciones, etc.). En este caso, mi aplicación mostrará todas las cámaras y permitirá que el usuario las use de forma independiente. El comportamiento previsto sería combinarlos como el software integrado. ¿Cómo es eso posible?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Después de probar varios dispositivos que tienen 1 (frontal), 2 (trasero y frontal) y múltiples sensores de cámara (1 frontal, varios traseros), mi solución consiste en usar la propiedad de etiqueta del objeto MediaDeviceInfo devuelto por mediaDevices.enumerateDevices() :

  • Si contiene 'frente' es una cámara frontal
  • Si contiene 'atrás', es una cámara trasera
  • Si contiene varias cámaras delanteras y/o traseras, aquella cuya etiqueta contiene '0' es la que combina las demás. Además, la primera de la lista siempre parece ser la cámara frontal, y la última la cámara trasera combinada.

Luego, mi código para obtener la identificación de la cámara frontal y de la cámara trasera combinada es el siguiente (se supone que siempre hay una y solo una cámara frontal):

 return navigator.mediaDevices.enumerateDevices() .then(mediaDevices => { let cameras = mediaDevices.filter(mediaDevice => mediaDevice.kind === 'videoinput'); console.log("#potential camera=" + cameras.length); if(cameras.length<=2) return cameras.map(x => x.deviceId); else { let front = cameras.find(x => x.label.match(/\bfront\b/)); let back = cameras.filter(x => x.label.match(/\bback\b/) && x.label.match(/\b0\b/)) if(!front || back.length!=1) { console.log("no clear front and back, taking first and last one - cameras=", cameras); return [cameras[0].deviceId, cameras[cameras.length-1].deviceId]; } else { console.log("clear front and back"); return [front.deviceId, back[0].deviceId]; } } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda