Skip to main content
Utilice esta página si desea el modelo de integración para el navegador rPPG. Si desea pasos numerados para una aplicación existente, use Agregar rPPG basado en cámara a una aplicación de navegador existente. Si desea la ruta de andamio, use Cree su primera aplicación Elata.
Esta es la ruta de bioseñal del navegador principal para la mayoría de los productos: no se requieren auriculares antes de enviar una señal significativa de UX.
rPPG significa fotopletismografía remota. Estima los cambios relacionados con el pulso a partir del vídeo de la cámara, generalmente de una región de la cara, sin necesidad de un sensor portátil. En las aplicaciones de navegador, los desarrolladores suelen utilizar rPPG para convertir la transmisión de una cámara en vivo en métricas, diagnósticos y comentarios orientados al bienestar del estilo del ritmo cardíaco. Los ejemplos de aplicaciones concretas incluyen:
  • Juegos de engaño o farol que reaccionan a los cambios de pulso durante los momentos clave.
  • Retroalimentación de estrés o excitación en el entrenamiento y las experiencias sociales.
  • Flujos de respiración y relajación que muestran una respuesta fisiológica a lo largo del tiempo.
  • Aplicaciones de salud o bienestar orientadas a la biorretroalimentación que requieren señales de pulso basadas en cámaras sin hardware adicional.

Instalación


Recomendado versus avanzado

Utilice createRppgSession() para aplicaciones de navegador. Maneja WASM inicio, captura de fotogramas, orquestación de ROI, diagnóstico y limpieza.
Recomendado:
  • Utilice createRppgSession() para aplicaciones de navegador.
  • Utilice createManagedRppgSession() cuando desee un comportamiento de reinicio integrado después de una falla del procesador del terminal.
  • Utilice createRppgPipeline() de @elata-biosciences/eeg-web solo si necesita intencionalmente una ingestión de muestra de bajo nivel.
Avanzado:
  • Utilice RppgProcessor, DemoRunner, backends personalizados o enlaces WASM generados solo si necesita una orquestación personalizada y ya comprende el ciclo de vida del tiempo de ejecución.
  • Si no está depurando el SDK en sí, no comience con las exportaciones WASM generadas.

Integración mínima


Flujo de integración típico

  1. Adquiera una transmisión de cámara en el navegador y adjúntela a un elemento video .
  2. Llama al createRppgSession({ video, backend: "auto" }).
  3. Leer métricas de session.getMetrics().
  4. Diagnóstico de superficie de onDiagnostics o session.getDiagnostics().
  5. Detenga la sesión durante la limpieza con await session.stop().
createRppgSession() posee WASM init, carga de FaceMesh, programación de fotogramas, selección de ROI, diagnóstico y limpieza. Utilice session.state o diagnostics.state para distinguir:
  • normal running
  • respaldo de inicio o configuración degradada a través de degraded
  • Fallo del procesador de tiempo de ejecución del terminal a través de failed
Si elige intencionalmente faceMesh: "off", la sesión permanece en el modo video_frame compatible y no se informa como una falla de FaceMesh de manera predeterminada. Si su aplicación necesita rutas de recursos explícitas en lugar de la búsqueda predeterminada /pkg/* , pase uno o más de:
Las aplicaciones avanzadas también pueden proporcionar wasmImporter directamente.

Flujo de reinicio administrado

Si desea que el SDK sea el propietario del tiempo de reinicio después de fallas en el procesador del terminal, use el contenedor administrado:
El contenedor administrado expone estados de alto nivel como starting, running, retryingy failed, y al mismo tiempo permite que las aplicaciones bajen al RppgSession subyacente cuando sea necesario.

Ayudantes avanzados

Utilice getTraceSnapshot() cuando necesite formas de onda recientes o puntos de depuración para gráficos, paneles de depuración o captura de regresión:
Para depurar la forma de onda de pico/umbral a partir de los datos de seguimiento, utilice computeTraceWaveformDebug():
Utilice normalizeRppgError() en lugar de analizar el texto del mensaje sin formato en el código de la aplicación:
Esto proporciona a las aplicaciones categorías estables como wasm_init_failed, backend_unavailable, camera_not_playingy processor_failed.
Si desea una única instantánea de la aplicación con estado de reinicio, publicación de puerta, datos de seguimiento y mensajes estables, utilice createRppgAppAdapter():
Si desea que el SDK también sea propietario del bucle de instantáneas recurrente, utilice createRppgAppMonitor():
createRppgSession() ahora espera a que el elemento de vídeo comience a reproducirse de forma predeterminada. Si necesitas coordinar ese paso tú mismo llama directamente al ensureVideoPlaying() :

Cuándo utilizar la plantilla rPPG en su lugar

Prefiere la plantilla con andamios rppg-demo cuando quieras:
  • una aplicación de cámara de navegador en buen estado
  • una referencia para la carga de activos empaquetados WASM
  • un punto de comparación más rápido al depurar su propia integración

Problemas comunes

  • Si session.backendMode es unavailable, su aplicación probablemente no esté entregando correctamente los activos pkg/ empaquetados.
  • Si session.state.status es failed, trate ese procesador como terminal y vuelva a crear la sesión en lugar de continuar sondeando métricas de él.
  • Si ve “la canalización de backend no tiene push_API de muestra”, probablemente haya omitido la ruta de contenedor seguro. Comience con createRppgSession() para aplicaciones de navegador o initEegWasm() más createRppgPipeline() para ingesta de bajo nivel.
  • Si presiona wasmrppgpipeline_new, inicialice el módulo WASM antes de crear canalizaciones de bajo nivel y evite llamar directamente a los constructores generados.
  • Si ve advertencias de inicio obsoletas, dirija el inicio a través de initEegWasm() en lugar de reenviar cadenas sin formato, URL o buffers a las exportaciones de inicio generadas.
  • Si falla el acceso a la cámara, confirme que la página tiene permiso para usar getUserMedia.
  • Si session.lastError no es nulo, use code y message para mostrar la captura real o la falla del procesador en lugar de volver a intentarlo a ciegas.
  • Si solo está evaluando el SDK, la aplicación con scaffolding es mucho más rápida que crear usted mismo todo el proceso del navegador.

Guía de versión

Los paquetes tienen versiones independientes, por lo que rppg-web y eeg-web no compartirán un número de versión y las últimas versiones no son automáticamente compatibles entre sí. Si utiliza varios paquetes de Elata juntos, utilice el conjunto de pines create-elata-demo . Consulte Compatibilidad.

Siguiente

Tutorial de aplicación existente

Integración paso a paso rPPG

Referencia de rppg-web

Paquete API y exportaciones

Solución de problemas

Fallos y soluciones comunes