Skip to main content
SDK 2.0.0. Autenticación: Autenticación y licencia.

Autenticación en producción

Guarda app_id / app_key en el servidor. Obtén un licenseToken de corta duración desde tu backend y pásalo al motor.
Nunca pongas appKey en un bundle de frontend.
Vincula el dominio exacto de producción en la Consola. Web no puede usar .lic sin conexión.

Un motor por página

Crea un BeautyEffectEngine, llama a init() una vez y reutilízalo durante la sesión. No construyas un motor nuevo en cada fotograma.

Bucle de fotogramas

  • Impulsa el vídeo con requestAnimationFrame, no con un while ilimitado.
  • Usa FrameType.Video para cámara; FrameType.Image para estáticos.
  • Haz coincidir el tamaño del canvas con el ImageData procesado para evitar un escalado extra.
  • Omite fotogramas hasta que video.readyState >= 2 y videoWidth > 0.
  • Prefiere processImage para cámara y canvas. processTexture no aplica espejo.

Fotos grandes (vista previa y exportación)

En galería o retoque, no envíes los píxeles a resolución completa a processImage en cada movimiento del deslizador. Al abrir el archivo, guarda dos búferes:
  1. Fotograma de vista previa — un ImageData reducido (lado largo unos 1280–1440, o el tamaño CSS del canvas × devicePixelRatio, el que sea menor). Úsalo mientras el usuario ajusta efectos.
  2. Original — el HTMLImageElement (o un bitmap sin reducir). Llama a processImage una vez, al exportar.
Usa FrameType.Image en ambos. Mismo motor, mismos setters. El tamaño de salida coincide con la entrada: la vista previa es pequeña; la exportación es a resolución completa. No amplíes el resultado de vista previa para fingir una exportación. No pases un <img> sin reducir al bucle de vista previa: processImage lee naturalWidth / naturalHeight.
La vista previa de cámara es otro camino: resolución de captura + FrameType.Video. Debounce las llamadas a processImage desde el deslizador. Muestra un estado de ocupado antes de exportar; el proceso a resolución completa es síncrono y puede congelar la página.

Parámetros

Empieza bajo en vista previa en tiempo real (smoothing ~ 0.20.5). El remodelado es [-1, 1]; los valores pequeños se ven más naturales en cámara. No registres onFaceLandmarks salvo que la UI los necesite: fuerza detección por fotograma. setBeautySkinOnly(true) evita manchar fondos cuando el suavizado es alto.

Recursos

  • Aloja .fbd de filtro / sticker y jpg/png de fondo como archivos estáticos; pasa la URL a setFilter / setSticker / setVirtualBackground.
  • Los recursos de runtime los carga el SDK durante init(). No pongas un resource.fbd en la raíz del sitio para el motor.
  • Cambia filtro / sticker con la entrada del usuario, no en cada fotograma.

Memoria

  • Llama a destroy() al desmontar / beforeunload.
  • Reutiliza el canvas de visualización; no asignes un canvas nuevo por fotograma.

HTTPS y CORS

El acceso a la cámara necesita HTTPS o localhost. Si los assets de filtro / sticker están en otro origin, envía cabeceras CORS.

Relacionado