高级美颜(Legacy)
本文介绍如何实现美型和美妆两种高级美颜功能。
本文适用于 v4.5.x 版本的 SDK。如果你的 SDK 版本 v4.6.0 及以上,请参考高级美颜了解如何使用美颜 2.0。
功能介绍
SDK 提供 setBeautyEffectOptions 方法,用于实现美白、磨皮等基础美颜功能。
自 v4.5.0 起,SDK 提供以下高级美颜功能:
- 美型:对人脸各部位进行修饰(即捏脸),使用预设的模板一次性实现瘦脸、大眼、瘦鼻等微整形效果,也支持对人脸的各个部位单独微调,实现更加精细的美型效果。
- 美妆:实现眼影、美瞳、睫毛、美眉、唇彩、腮红等美妆特效。
当前,高级美颜为限时免费。未来可能会变更为单独计费的增值服务,届时请以实际计费为准,详见计费策略。
前提条件
在实现高级美颜之前,请确保:
- 已集成实时互动 SDK v4.5.0 及以上版本。
- 已在 App 中实现了基本的实时音视频功能,且 App 已获取相关设备的使用权限。请参考实现音视频互动。
- SDK 已集成视频增强动态库,如果删除该动态库会导致无法正常开启高级美颜。动态库名和集成方式详见插件列表。
- 如需使用美妆功能,请联系技术支持获取美妆资源。
实现高级美颜
美型
实现预设美型效果
setFaceShapeBeautyOptions:options: 方法为美型效果的总开关,调用该方法,并在 enble 参数中传入 true 即可开启美型效果。你可以在 FaceShapeBeautyOptions 中指定美型风格和风格强度,使用预设的参数快速实现美型效果。
var beautyOptions = AgoraFaceShapeBeautyOptions()
// 设置美型风格类型为男性
beautyOptions.shapeStyle = AgoraFaceShapeStyle.male
// 设置风格强度
beautyOptions.styleIntensity = 100
agoraKit?.setFaceShapeBeautyOptions(true, options: beautyOptions)
微调单个部位
开启美型后,调用 setFaceShapeAreaOptions: 方法可对人脸的各个部位单独微调。该方法对单个部位修饰力度的调整为立即生效,不会修改预设值。
var areaOptions = AgoraFaceShapeAreaOptions()
// 指定一个微调的部位,比如:头部尺寸
areaOptions.shapeArea = AgoraFaceShapeArea.headScale
// 该部位调整的强度
areaOptions.shapeIntensity = 100
agoraKit?.setFaceShapeAreaOptions(areaOptions)
关闭美型
调用 setFaceShapeBeautyOptions:options: 方法,并在 enble 参数中传入 false 即可关闭美型效果。
agoraKit?.setFaceShapeBeautyOptions(false, options: beautyOptions)
美妆
开启美妆
调用 setExtensionPropertyWithVendor:extension:key:value: 方法开启美妆效果,参考以下说明填写参数:
provider:agora_video_filters_clear_visionextension:clear_visionkey:makeup_optionsvalue:以 JSON 格式包装,其中不同的字段对应了不同的美妆效果,详见美妆 JSON 字段说明。
参考以下代码开启美妆效果:
let makeupParams: [String: Any] = [
"enable_mu": true,
"blushStyle": 1,
"blushColor": 2,
"blushStrength": 0.5
]
guard let json = try? JSONSerialization.data(withJSONObject: makeupParams, options: []),
let jsonString = String(data: json, encoding: .utf8) else {
return
}
self.agoraKit.setExtensionPropertyWithVendor("agora_video_filters_clear_vision",
extension: "clear_vision",
key: "makeup_options",
value: jsonString)
修改美妆效果选项
修改 JSON 中美妆效果字段的值后调用 setExtensionPropertyWithVendor:extension:key:value: 方法,即可修改美型效果选项。参考以下代码修改美妆效果:
let makeupParams: [String: Any] = [
"blushColor": 1,
]
guard let json = try? JSONSerialization.data(withJSONObject: makeupParams, options: []),
let jsonString = String(data: json, encoding: .utf8) else {
return
}
self.agoraKit.setExtensionPropertyWithVendor("agora_video_filters_clear_vision",
extension: "clear_vision",
key: "makeup_options",
value: jsonString)
关闭美妆效果
在 JSON 中 指定 enable_mu 节点为 false,再调用 setExtensionPropertyWithVendor:extension:key:value: 方法即可关闭美妆效果:
let makeupParams: [String: Any] = [
"enable_mu": false,
]
guard let json = try? JSONSerialization.data(withJSONObject: makeupParams, options: []),
let jsonString = String(data: json, encoding: .utf8) else {
return
}
self.agoraKit.setExtensionPropertyWithVendor("agora_video_filters_clear_vision",
extension: "clear_vision",
key: "makeup_options",
value: jsonString)
参考信息
示例项目
声网提供了开源的实现高级美颜示例项目供你参考,你可以前往下载或查看其中的源代码。
API 参考
美型
-
setFaceShapeBeautyOptions:options: -
setFaceShapeBeautyOptions:options:sourceType: -
setFaceShapeAreaOptions: -
setFaceShapeAreaOptions:sourceType: -
getFaceShapeBeautyOptions -
getFaceShapeBeautyOptions:sourceType: -
getFaceShapeAreaOptions: -
getFaceShapeAreaOptions:sourceType:
美妆
美妆 JSON 字段说明
实现美妆效果的 JSON 示例和具体字段说明如下:
{
"enable_mu": true,
"browStyle": 1,
"browColor": 2,
"browStrength": 0.5,
"lashStyle": 1,
"lashColor": 2,
"lashStrength": 0.5,
"shadowStyle": 2,
"shadowStrength": 0.5,
"pupilStyle": 2,
"pupilStrength": 0.5,
"blushStyle": 1,
"blushColor": 1,
"blushStrength": 0.5,
"lipStyle": 2,
"lipColor": 2,
"lipStrength": 0.5
}
enable_mu:Boolean。美妆开关。设置为:true:开启美妆效果。false:关闭美妆效果。
browStyle:Integer。眉毛类型,可选值为:0:关闭。1:类型 1。2:类型 2。
browColor:Integer。眉毛颜色,可选值为:0:无。1:黑色。2:棕色。
browStrength:Float。眉毛强度,取值范围为 [0.0, 1.0],其中:0.0:无强度。1.0:最大强度。
lashStyle:Integer。眼睫毛类型,可选值为:0:关闭。1:类型 1。2:类型 2。
lashColor:Integer。眼睫毛颜色,可选值为:0:无。1:黑色。2:棕色。
lashStrength:Float。眼睫毛强度,取值范围为 [0.0, 1.0]。shadowStyle:Integer。眼影类型,可选值为:0:关闭。1:类型 1。2:类型 2。
shadowStrength:Float。眼影强度,取值范围为 [0.0, 1.0]。pupilStyle:Integer。瞳孔类型,可选值为:0:关闭。1:类型 1。2:类型 2。
pupilStrength:Float。瞳孔强度,取值范围为 [0.0, 1.0]。blushStyle:Integer。腮红类型,可选值为:0:关闭。1:类型 1。2:类型 2。
blushColor:Integer。腮红颜色,可选值为:0:无。1:1号色。2:2号色。3:3号色。4:4号色。5:5号色。
blushStrength:Float。腮红强度,取值范围为 [0.0, 1.0]。lipStyle:Integer。唇彩类型,可选值为:0:关闭。1:类型 1。2:类型 2。
lipColor:Integer。唇彩颜色,可选值为:0:无。1:1号色。2:2号色。3:3号色。4:4号色。5:5号色。
lipStrength:Float。唇彩强度,取值范围为 [0.0, 1.0]。