Skip to main content
SDK 2.0.0. Autenticação: Autenticação e licença.

Autenticação em produção

Mantenha app_id / app_key no servidor. Busque um licenseToken de curta duração no seu backend e, em seguida, passe-o para o mecanismo.
Nunca coloque appKey em um bundle de frontend.
Vincule o domínio exato de produção no Console. A Web não pode usar .lic offline.

Um mecanismo por página

Crie um BeautyEffectEngine, chame init() uma vez e reutilize-o durante a sessão. Não construa um mecanismo novo a cada quadro.

Loop de quadros

  • Dirija o vídeo com requestAnimationFrame, não um while sem limite.
  • Use FrameType.Video para a câmera; FrameType.Image para stills.
  • Combine o tamanho do canvas com o ImageData processado para evitar scaling extra.
  • Pule quadros até video.readyState >= 2 e videoWidth > 0.
  • Prefira processImage para câmera e canvas. processTexture não aplica espelhamento.

Stills grandes (prévia e exportação)

Em galeria ou retoque, não envie pixels em resolução total para processImage a cada movimento do slider. Ao abrir o arquivo, mantenha dois buffers:
  1. Quadro de prévia — um ImageData reduzido (lado longo cerca de 1280–1440, ou o tamanho CSS do canvas × devicePixelRatio, o que for menor). Use este enquanto o usuário ajusta os efeitos.
  2. Original — o HTMLImageElement (ou um bitmap sem reduzir). Chame processImage uma vez, na exportação.
Use FrameType.Image nos dois. Mesmo mecanismo, mesmos setters. O tamanho da saída acompanha a entrada: a prévia é pequena; a exportação é em resolução total. Não amplie o resultado da prévia para fingir uma exportação. Não passe um <img> sem reduzir no loop de prévia — processImagenaturalWidth / naturalHeight.
A prévia da câmera é outro caminho: resolução de captura + FrameType.Video. Faça debounce das chamadas de processImage do slider. Mostre um estado de ocupado antes de exportar; o processamento em resolução total é síncrono e pode travar a página.

Parâmetros

Comece baixo na prévia em tempo real (smoothing ~ 0.20.5). A remodelagem é [-1, 1]; valores pequenos ficam mais naturais na câmera. Não registre onFaceLandmarks a menos que a UI precise deles — isso força detecção por quadro. setBeautySkinOnly(true) evita borrar fundos quando a suavização está alta.

Recursos

  • Hospede .fbd de filtro / adesivo e jpg/png de fundo como arquivos estáticos; passe a URL para setFilter / setSticker / setVirtualBackground.
  • Os recursos de runtime são carregados pelo SDK durante init(). Não coloque um resource.fbd na raiz do site para o mecanismo.
  • Troque filtro / adesivo na entrada do usuário, não a cada quadro.

Memória

  • Chame destroy() no unmount / beforeunload.
  • Reutilize o canvas de exibição; não aloque um canvas novo a cada quadro.

HTTPS e CORS

O acesso à câmera precisa de HTTPS ou localhost. Se os assets de filtro / adesivo estiverem em outra origem, envie headers CORS.

Relacionado