tencent cloud

腾讯特效 SDK

动态与公告
产品动态
关于腾讯特效 SDK V3.5 版本更新公告
关于腾讯特效 SDK V3.0 版本相关接口及素材变更公告
产品简介
产品概述
产品功能
基本概念
产品优势
应用场景
购买指南
价格总览
购买流程
欠费退费说明
新手指引
Demo 体验
免费测试
License 指引
移动端 License 新增与续期
PC 端 License 新增与续期
Web端 License 新增与续期
常见问题
SDK 下载
功能说明
SDK 下载
版本历史
SDK 集成指引(无 UI)
通用集成腾讯特效
原子能力集成指引
SDK 集成指引(含 UI)
通用集成腾讯特效
直播 SDK 集成腾讯特效
TRTC SDK 集成腾讯特效
短视频 SDK 集成腾讯特效
Avatar 虚拟人集成指引
API 文档
iOS
Android
Flutter
Web
功能实践
SDK 包瘦身
SDK 集成问题排查
性能调优
效果调优
素材使用
美颜参数说明
美颜场景推荐参数
短视频企业版迁移指引
第三方推流接入美颜(Flutter)
小程序美颜特效实践
素材制作工具使用
Web 美颜特效
产品概述
快速上手
SDK 接入
API 文档
控制台指南
Demo 体验
内置素材总览
实践教程
常见问题
常见问题
通用类相关
技术类相关
License 相关
旧版文档
美颜场景推荐参数
美颜参数表
一分钟集成 TRTC
一分钟集成直播
TE SDK 政策
隐私协议
数据处理和安全协议
联系我们

加载优化

PDF
聚焦模式
字号
最后更新时间: 2024-05-08 16:30:10

普通模式

普通模式下可以在 cameraReady 回调中通过 getOutput 接口获取输出流,此时获取的输出流数据与传递给 SDK 的输入流数据是一样的,美颜效果还未生效,可以理解为 SDK 将输入数据原封不动地吐出,后续相关美颜效果准备就绪后会自动叠加到此输出流中,无需重新调用 getOutput 获取,这种方式适用于页面初始化就初始化 SDK,且需要尽早地展示画面,但不要求画面一展示就有美颜效果的场景。
相应的,也可以在 ready 回调中通过 getOutput 接口获取输出流,与上述 cameraReady 不同的是,此时获取的输出流数据已经带有美颜特效,由于该回调接口触发时机略晚于 cameraReady 接口,因此这种方式适用于画面一展示就要有美颜效果,但不要求尽早地展示画面的场景。



示例代码如下:
// 获取鉴权参数
const authData = {
licenseKey: 'xxxxxxxxx',
appId: 'xxx',
authFunc: authFunc // 详见「License 配置与使用 - 签名方法」
};

// 初始化sdk时传input或camera参数,按照普通模式加载
const config = {
auth: authData, // 鉴权参数
beautify: { // 美颜参数
whiten: 0.1,
dermabrasion: 0.5,
lift: 0,
shave: 0,
eye: 0.2,
chin: 0,
},
input: inputStream // 构建传递给SDK的 input 流数据,详见「参数与方法 - 初始化参数」
}
const sdk = new ArSdk(
// 传入一个 config 对象用于初始化 sdk
config
)
// sdk通过鉴权后会立刻触发created事件
sdk.on('created', () => {
// 在 created 回调中拉取特效和滤镜列表供页面展示
sdk.getEffectList({
Type: 'Preset',
Label: '美妆',
}).then(res => {
effectList = res
});
sdk.getCommonFilter().then(res => {
filterList = res
})
})

// 不同回调中getOutput获取的数据差别如下,根据自身需求选择其中一种即可
sdk.on('cameraReady', async () => {
const output = await sdk.getOutput() // 美颜参数未生效
// 播放
...
})
sdk.on('ready', async () => {
const output = await sdk.getOutput() // 美颜参数已生效
// 播放
...
// 在ready回调中调用setEffect/setBeautify/setFilter等效果
})


预初始化(0.2.0版本后开始支持)

在 SDK 初次加载时需要下载远程静态资源后才能够完成检测模型的初始化,加载的耗时受到网络的影响。在一些要求画面快速出现的业务场景中,SDK 提供了预初始化的加载方案来提前加载静态资源。
预初始化的应用场景
场景一:页面初始化加载时不需要美颜 SDK,需要用户某些操作后才出现视频画面。
场景二:B 页面中涉及美颜效果,而 B 页面跳转自 A 页面。 类似的情况都可以先执行资源加载(尽可能早地),之后结合业务需求,在合适的时机为 SDK 提供输入流数据,再获取输出流展示效果。
例如:场景一可以在页面初始化的时候加载资源;场景二可以在 A 页面获取 SDK 实例,传递给 B 使用。



以场景一为例,代码如下:
<button id="start">开启摄像头</button>
// 获取鉴权参数
const authData = {
licenseKey: 'xxxxxxxxx',
appId: 'xxx',
authFunc: authFunc // 详见「License 配置与使用 - 签名方法」
};

// 初始化sdk时不传input或camera参数,实例化后sdk会开始预加载所需的资源
const config = {
auth: authData, // 鉴权参数
beautify: { // 美颜参数
whiten: 0.1,
dermabrasion: 0.5,
lift: 0,
shave: 0,
eye: 0.2,
chin: 0,
},
}
const sdk = new ArSdk(
// 传入一个 config 对象用于初始化 sdk
config
)
// sdk通过鉴权后会立刻触发created事件
sdk.on('created', () => {
// 在 created 回调中拉取特效和滤镜列表供页面展示
sdk.getEffectList({
Type: 'Preset',
Label: '美妆',
}).then(res => {
effectList = res
});
sdk.getCommonFilter().then(res => {
filterList = res
})
})
// resourceReady 意味着相关资源已就绪,可以在此回调之后调用initCore提供输入流数据
sdk.on('resourceReady', () => {
})
// 此模式下,用户显式调用initCore之后,才会触发 ready 回调
sdk.on('ready', async () => {
const output = await sdk.getOutput() // 美颜已生效
// 播放
...
// 在ready回调中调用setEffect/setBeautify/setFilter等效果
})
// 用户点击开启摄像头时给SDK传递输入流数据
document.getElementById('start').onclick = async function(){
const devices = await navigator.mediaDevices.enumerateDevices()
const cameraDevice = devices.find(d=>d.kind === 'videoinput')
navigator.mediaDevices.getUserMedia({
audio: false,
video: {
deviceId: cameraDevice.deviceId
... // 其他配置
}
}).then(mediaStream => {
// 此模式下,请确保在上述resourceReady事件之后调用initCore方法
sdk.initCore({
input: mediaStream // 构建传递给SDK的 input 流数据,详见「参数与方法 - 初始化参数」
})
})
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈