跳转到主要内容
SDK 2.0.0。鉴权:授权与许可。

生产环境鉴权

app_id / app_key 放在服务器。由你的后端换一张短时有效的 licenseToken,再传给引擎。
不要把 appKey 打进前端包。
在控制台绑定与线上一致的域名。Web 不能使用离线 .lic。

一页一个引擎

创建一个 BeautyEffectEngine,init() 一次,整段会话复用。不要每帧 new 一个引擎。

帧循环

  • 用 requestAnimationFrame 驱动视频,不要空转 while。
  • 摄像头用 FrameType.Video,静图用 FrameType.Image。
  • Canvas 尺寸与处理后的 ImageData 对齐,避免额外缩放。
  • video.readyState >= 2 且 videoWidth > 0 再处理。
  • 优先 processImage。processTexture 不应用镜像。

相册大图(预览与导出)

影楼修图、相册等高分辨率静图,不要在每次拖动滑条时把原图像素送进 processImage。打开文件时准备两份缓冲:
  1. 预览帧:缩小后的 ImageData(长边约 1280–1440,或与展示 canvas 的 CSS 尺寸 × devicePixelRatio 取较小值)。调参只打这一份。
  2. 原图:保留 HTMLImageElement(或未缩小的位图),用户点导出时再 processImage 一次。
两份都用 FrameType.Image,同一台引擎、同一套 setter。输出尺寸等于输入:预览结果是小图,导出才是原分辨率。不要把预览图放大当成片。 不要把未缩小的 <img> 丢进预览循环——processImage 会按 naturalWidth / naturalHeight 读全图。
摄像头不要走这条路径,继续用采集分辨率 + FrameType.Video。滑条触发的 processImage 建议短 debounce。导出会同步卡住页面,先画出进度再处理。

参数

实时预览从低强度开始(磨皮约 0.2–0.5)。美型范围是 [-1, 1],摄像头上小幅调节更自然。 界面不需要关键点就不要注册 onFaceLandmarks,否则每帧都会跑检测。 磨皮较高时打开 setBeautySkinOnly(true),避免背景被抹糊。

资源

  • 滤镜 / 贴纸 .fbd 和背景 jpg/png 作为静态文件托管,把 URL 传给 setFilter / setSticker / setVirtualBackground。
  • 引擎运行时资源由 SDK 在 init() 时加载,不必在站点根路径放 resource.fbd。
  • 在用户操作时切换滤镜 / 贴纸,不要每帧切换。

内存

  • 卸载页面或离开路由时调用 destroy()。
  • 复用展示用 canvas,不要每帧新建。

HTTPS 与 CORS

摄像头需要 HTTPS 或 localhost。若滤镜 / 贴纸等静态资源在其他源,需要配置 CORS。

相关文档