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

147
Visualizações
Use la restricción focusMode para obtener el dispositivo de medios requerido

¡Hola todos!

Actualmente, estoy trabajando en la implementación de un escáner de código qr para mi aplicación web. Después de algunas pruebas en varios dispositivos, me di cuenta de que tengo que establecer la restricción focusMode para obtener una cámara que tenga la capacidad de enfocar automáticamente el entorno.

Puedo seleccionar directamente la cámara en mi dispositivo de depuración configurando directamente el ID del dispositivo en las restricciones como esta:

 let stream = await navigator.mediaDevices.getUserMedia({ video: { deviceId: "332d34c91861f97ba8f0e11f446da4566a1803539764dd67c1dfe036ef32fd97" } });

Al que puedo llamar stream.getVideoTracks()[0].getCapabilities() para obtener las capacidades.

 { aspectRatio: {max: 4000, min: 0.0003333333333333333}, colorTemperature: {max: 7000, min: 2850, step: 50}, deviceId: "332d34c91861f97ba8f0e11f446da4566a1803539764dd67c1dfe036ef32fd97", exposureCompensation: {max: 2, min: -2, step: 0.10000000149011612}, exposureMode: (2) ["continuous", "manual"], exposureTime: {max: 1250, min: 0, step: 0}, facingMode: ["environment"], focusMode: (3) ["manual", "single-shot", "continuous"], frameRate: {max: 30, min: 0}, groupId: "40f2953f5fae495c7471348c844e919762a3213019b271664d220d0aa617313c", height: {max: 3000, min: 1}, iso: {max: 4000, min: 20, step: 1}, resizeMode: (2) ["none", "crop-and-scale"], torch: true, whiteBalanceMode: (2) ["continuous", "manual"], width: {max: 4000, min: 1} }

Copiado del registro de la consola de Chromium.

Así que probé las siguientes restricciones a través de la depuración remota Brave (basada en Chromium) en mi Samsung Galaxy A51, de las cuales ninguna funcionó:

 let stream = await navigator.mediaDevices.getUserMedia({ video: { focusMode: {exact: ["continuous"]} } }); let stream = await navigator.mediaDevices.getUserMedia({ video: { focusMode: "continuous" } }); let stream = await navigator.mediaDevices.getUserMedia({ video: { focusMode: ["continuous"] } }); let stream = await navigator.mediaDevices.getUserMedia({ video: { advanced: [{focusMode: "continuous"}] } }); let stream = await navigator.mediaDevices.getUserMedia({ video: { advanced: [{focusMode: ["continuous"]}] } }); let stream = await navigator.mediaDevices.getUserMedia({ video: { advanced: [{focusMode: {exact: "continuous"}}] } });

No sé si la estructura es correcta y no estoy muy seguro de cómo averiguarlo.

¿Alguien sabe cómo usar la restricción focusMode para obtener un dispositivo que tenga un modo de enfoque continuo?

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

0

De: documentación

El proceso funciona así (usando MediaStreamTrack como ejemplo):

  1. Si es necesario, llame a MediaDevices.getSupportedConstraints() para obtener la lista de restricciones admitidas, que le indica qué propiedades restringibles conoce el navegador. Esto no siempre es necesario, ya que los que no se conocen se ignorarán cuando los especifique, pero si tiene alguno que no puede prescindir, puede comenzar comprobando para asegurarse de que esté en la lista. .

  2. Una vez que el script sabe si la propiedad o las propiedades que desea usar son compatibles, puede verificar las capacidades de la API y su implementación examinando el objeto devuelto por el método getCapabilities() de la pista; este objeto enumera cada restricción admitida y los valores o rango de valores admitidos.

  3. Finalmente, se llama al método applyConstraints() de la pista para configurar la API como se desee especificando los valores o rangos de valores que desea usar para cualquiera de las propiedades restringibles sobre las que tiene preferencia.

  4. El método getConstraints() de la pista devuelve el conjunto de restricciones pasadas en la llamada más reciente a applyConstraints(). Es posible que esto no represente el estado actual real de la pista, debido a las propiedades cuyos valores solicitados tuvieron que ajustarse y porque los valores predeterminados de la plataforma son no está representado. Para obtener una representación completa de la configuración actual de la pista, use getSettings().

En Media Stream API, tanto MediaStream como MediaStreamTrack tienen propiedades restringibles.

Probablemente su modo de focusMode sea una configuración predeterminada, que su teléfono descubra por sí mismo. Por lo tanto, debe usar getSettings() para devolver el valor real.

¿Qué está .getSettings() ?

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