SDK 2.0.0。鉴权:授权与许可。
生产环境鉴权
app_id / app_key 放在服务器。由你的后端换一张短时有效的 licenseToken,再传给引擎。
.lic。
一页一个引擎
创建一个BeautyEffectEngine,init() 一次,整段会话复用。不要每帧 new 一个引擎。
帧循环
- 用
requestAnimationFrame驱动视频,不要空转while。 - 摄像头用
FrameType.Video,静图用FrameType.Image。 - Canvas 尺寸与处理后的
ImageData对齐,避免额外缩放。 video.readyState >= 2且videoWidth > 0再处理。- 优先
processImage。processTexture不应用镜像。
相册大图(预览与导出)
影楼修图、相册等高分辨率静图,不要在每次拖动滑条时把原图像素送进processImage。打开文件时准备两份缓冲:
- 预览帧:缩小后的
ImageData(长边约 1280–1440,或与展示 canvas 的 CSS 尺寸 ×devicePixelRatio取较小值)。调参只打这一份。 - 原图:保留
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,不要每帧新建。

