es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué fallan las sucesivas llamadas a ImageCapture.takePhoto() en mi PWA?

Actualmente estoy escribiendo una PWA que utiliza la cámara para realizar cierta visión computacional en fotogramas sucesivos de la cámara de un dispositivo móvil. Al llamar a takePhoto() por segunda (o a veces tercera) vez, obtengo el siguiente error: Uncaught (in promise) DOMException: The associated Track is in an invalid state.

En la especificación se menciona que al llamar a takePhoto(),

es posible que los dispositivos detengan temporariamente la transmisión de datos, se reconfiguren con los ajustes apropiados para la foto, tomen la foto y luego reanuden la transmisión. También se menciona que si la operación no puede completarse por cualquier motivo (por ejemplo, al invocar múltiples llamadas al método takePhoto() en rápida sucesión), entonces se debe rechazar la promesa p con una nueva DOMException cuyo nombre sea UnknownError, y se deben abortar estos pasos.

¿Por qué ocurre esto? ¿Hay alguna forma de solucionarlo con grabFrame()? ¿Cambiará en el futuro? ¿Hay alguna discusión dentro del equipo de Chrome?

Observo que soy capaz de tomar las fotos rápidamente en sucesión utilizando una webcam conectada a mi PC, pero NO utilizando la cámara de mi teléfono.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Uncaught (en la promesa) DOMException: El Track asociado está en un estado no válido” ocurre al llamar a takePhoto() varias veces seguidas rápidamente. Esto se debe a que el dispositivo puede detener temporalmente la transmisión de datos, reconfigurarse con la configuración adecuada para la foto, tomar la foto y luego reanudar la transmisión. Si la operación no puede completarse, los pasos se abortarán y se creará una nueva DOMException con el nombre UnknownError.

    Una posible solución alternativa para este problema es utilizar grabFrame() en su lugar, lo que permite un control más directo de la transmisión de la cámara. Sin embargo, no está claro si esto resolverá el problema, ya que parece estar relacionado específicamente con la cámara en dispositivos móviles.

    En cuanto a si este problema cambiará en el futuro o si hay una discusión dentro del equipo de Chrome, es difícil decirlo. Es posible que las actualizaciones de las API del navegador o las cámaras de los dispositivos puedan cambiar cómo se comportan estos métodos. También es posible que este sea un problema conocido y que haya discusiones en curso entre los proveedores de navegadores y los fabricantes de cámaras para solucionarlo. Puede valer la pena buscar en foros públicos o comunicarse con los equipos de soporte relevantes para obtener más información o ayuda adicional.

Comments are closed.