Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

145
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda