Esta página corresponde ao SDK 2.0.0. Enums de maquiagem / remodelagem: Enums de parâmetros.
Escolher o tipo de quadro certo
DefinaFBImageFrame.type antes de processImage:. Não há argumento de modo de processamento no mecanismo.
FBFrameTypeVideo(1): prévia da câmera, ao vivo, chamadas — menor latência.FBFrameTypeImage(0): fotos estáticas /NSImage— qualidade mais alta.
Stills grandes (prévia e exportação)
Não envie pixels em resolução total paraprocessImage: a cada movimento do slider, nem descarte o original depois de reduzir.
Ao abrir a foto, mantenha o NSImage completo e crie um quadro de prévia (lado longo cerca de 1280–1440, createWithNSImage:). Ajustes processam a prévia (FBFrameTypeImage). A exportação processa um quadro em resolução total com os mesmos setters. O tamanho da saída acompanha a entrada. A câmera continua na resolução de captura + FBFrameTypeVideo.
Faixas de parâmetros
- Intensidade de pele / maquiagem / filtro:
[0.0, 1.0].0desliga esse efeito. - Remodelagem (
setReshape:intensity:):[-1.0, 1.0].0desliga. Positivo e negativo são direções opostas.
Um mecanismo, uma fila serial
createEngineWithConfig: retorna uma instância, não um singleton de processo. Mantenha um mecanismo por sessão e chame-o a partir de uma fila serial (ou do thread GL quando externalContext = YES).
Memória
- Prefira ARC. Solte as referências de
FBImageFramequando o quadro terminar. - Reutilize buffers de pixel da câmera (NV12 / BGRA) em vez de converter cada quadro para RGBA.
- Chame
setFilter:/setSticker:uma vez; as texturas carregam no próximoprocessImage:. - Use
clearFilter,clearSticker,clearVirtualBackgroundeclearChromaKeyem vez de criar um segundo mecanismo.
OpenGL externo
Quando a view AppKit já for dona de um contexto GL:- Defina
config.externalContext = YES. - Crie o mecanismo nesse thread GL.
- Encapsule a textura com
createWithTexture:width:height:stride:. - Leia a saída com
[output texture].
Monitorar com getStats
avgProcessTimeMs abaixo de ~33 ms a 30 fps. GPUs desktop aguentam resoluções mais altas; ainda assim reduza efeitos se a UI travar.
Ciclo de vida (AppKit)
Mantenha o mecanismo noNSViewController (ou em um objeto de sessão). Pare a captura em viewWillDisappear. Pause quando a janela for miniaturizada. Atribua nil ao mecanismo em dealloc / applicationWillTerminate.
__weak nos blocos de FBEngineCallbacks.
Captura e exibição no macOS
- Monte os quadros com
createWithNV12:...,createWithBGRA:...oucreateWithNSImage:. - Câmera frontal / prévia voltada para o usuário:
setMirror:@"horizontal". - Retina: processe no tamanho em pixels (
backingScaleFactor), não no tamanho em pontos. - Câmera:
NSCameraUsageDescription. Apps no sandbox precisam de Outgoing Connections para autenticação online. .fbd/ imagens de fundo escolhidos pelo usuário: URLs com security scope.
Testes
- Vincule o Bundle ID do app Mac (ou o nome do processo para ferramentas CLI).
- Use um
appId/appKeyoulicenseTokenreais. - Cubra
FBFrameTypeImage+createWithNSImage:eFBFrameTypeVideo. - Afirme que os códigos dos setters são
FBErrorCode_Success. Universal Binary: teste Intel e Apple Silicon.

