Skip to main content
SDK 2.0.0. La API C++ se comparte con Linux. Enumeraciones: Enumeraciones de parámetros.

Apunta resource_path a resource.fbd

Los motores de escritorio abren el paquete con fopen. Pasa el archivo, no una carpeta:
Distribuye resource.fbd junto a la app (o bajo un directorio de assets) y resuelve una ruta absoluta al arrancar.

Un motor, ProcessImage serial

BeautyEffectEngine se crea con Create y no es un singleton. Mantén una instancia para la sesión. ImageFrame y el motor no son thread-safe: serializa ProcessImage en un único worker (o el hilo GL cuando external_context = true).
Suelta el shared_ptr cuando termine la sesión de cámara. Recrear el motor en cada fotograma es costoso (licencia + init).

FrameType en el fotograma

Configura frame->type antes de ProcessImage.

Fotos grandes (vista previa y exportación)

No envíes píxeles a resolución completa a ProcessImage en cada movimiento del deslizador, ni tires el original después de escalar. Al abrir la foto, conserva el búfer completo y crea un fotograma de vista previa (lado largo unos 1280–1440). Los ajustes procesan la vista previa (FrameType::Image). La exportación procesa un fotograma a resolución completa con los mismos setters. El tamaño de salida coincide con la entrada. La cámara sigue en resolución de captura + FrameType::Video.

Intensidades

Empieza bajo en tiempo real. El remodelado es [-1.0, 1.0]; las demás intensidades son [0.0, 1.0].
Activa SetBeautySkinOnly(true) para que el suavizado / blanqueamiento se queden en la piel.

Filtros y stickers

Pasa rutas o bytes .fbd. Los cambios entran en vigor en el siguiente ProcessImage. Evita cambiar filtro/sticker en cada fotograma.

Supervisar con GetStats

Apunta a avg_process_time_ms por debajo de tu presupuesto de fotograma (unos 33 ms a 30 fps). Prefiere 720p para vista previa; usa FrameType::Image para exportar estáticos.

Contexto OpenGL

Coloca facebetter.dll junto al .exe (o en PATH). Enlaza facebetter.lib en tiempo de compilación.

Pausar cuando está inactivo

Cuando la ventana está minimizada o la cámara se detiene, omite ProcessImage y opcionalmente engine.reset() si la sesión ha terminado. No proceses en el hilo de UI si bloquea la entrada.

Autenticación

Prefiere license_token para redes sin conexión / restringidas. En caso contrario, app_id + app_key v2 en línea. No hardcodees claves de producción en repos públicos: cárgalas desde configuración. Consulta Autenticación y licencia.