Esta página corresponde al SDK 2.0.0. Enumeraciones de maquillaje / remodelado: Enumeraciones de parámetros.
Elegir el tipo de fotograma correcto
ConfiguraFBImageFrame.type antes de processImage:. El motor no tiene un argumento de modo de proceso.
FBFrameTypeVideo(1): vista previa de cámara, directo, llamadas — menor latencia.FBFrameTypeImage(0): fotos estáticas /NSImage— mayor calidad.
Fotos grandes (vista previa y exportación)
No envíes píxeles a resolución completa aprocessImage: en cada movimiento del deslizador, ni tires el original después de escalar.
Al abrir la foto, conserva el NSImage completo y crea un fotograma de vista previa (lado largo unos 1280–1440, createWithNSImage:). Los ajustes procesan la vista previa (FBFrameTypeImage). 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 + FBFrameTypeVideo.
Rangos de parámetros
- Intensidad de piel / maquillaje / filtro:
[0.0, 1.0].0desactiva ese efecto. - Remodelado (
setReshape:intensity:):[-1.0, 1.0].0desactiva. Positivo y negativo son direcciones opuestas.
Un motor, una cola serial
createEngineWithConfig: devuelve una instancia, no un singleton de proceso. Mantén un motor por sesión y llámalo desde una cola serial (o el hilo GL cuando externalContext = YES).
Memoria
- Prefiere ARC. Suelta las referencias a
FBImageFramecuando un fotograma termine. - Reutiliza buffers de píxel de la cámara (NV12 / BGRA) en lugar de convertir cada fotograma a RGBA.
- Llama a
setFilter:/setSticker:una vez; las texturas se cargan en el siguienteprocessImage:. - Usa
clearFilter,clearSticker,clearVirtualBackgroundyclearChromaKeyen lugar de crear un segundo motor.
OpenGL externo
Cuando la vista AppKit ya posee un contexto GL:- Configura
config.externalContext = YES. - Crea el motor en ese hilo GL.
- Envuelve la textura con
createWithTexture:width:height:stride:. - Lee la salida con
[output texture].
Supervisar con getStats
avgProcessTimeMs por debajo de ~33 ms a 30 fps. Las GPU de escritorio pueden correr resoluciones más altas; aun así baja efectos si la UI se entrecorta.
Ciclo de vida (AppKit)
Mantén el motor en elNSViewController (o un objeto de sesión). Detén la captura en viewWillDisappear. Pausa cuando la ventana se minimice. Pon el motor a nil en dealloc / applicationWillTerminate.
__weak en los bloques de FBEngineCallbacks.
Captura y visualización en macOS
- Construye fotogramas con
createWithNV12:...,createWithBGRA:...ocreateWithNSImage:. - Cámara frontal / vista previa de usuario:
setMirror:@"horizontal". - Retina: procesa en tamaño de píxel (
backingScaleFactor), no en puntos. - Cámara:
NSCameraUsageDescription. Las apps en sandbox necesitan Outgoing Connections para autenticación en línea. .fbd/ imágenes de fondo elegidos por el usuario: URLs con ámbito de seguridad.
Pruebas
- Vincula el Bundle ID de la app Mac (o el nombre del proceso para herramientas CLI).
- Usa un
appId/appKeyolicenseTokenreales. - Cubre
FBFrameTypeImage+createWithNSImage:yFBFrameTypeVideo. - Comprueba que los códigos de los setters sean
FBErrorCode_Success. Universal Binary: prueba Intel y Apple Silicon.

