文档中心
全部产品
Agora.io 社区
如何实现美颜?
分类: 集成类    平台: Android / iOS / macOS / Web / Windows / Unity / Cocos Creator / Electron / React Native / Flutter   最后更新时间: 2021/08/27 02:40:56

视频通话或直播时,用户常常希望向对方呈现良好的肌肤状态和精神面貌。Agora RTC SDK 提供 API 帮助开发者轻松实现基础美颜功能。用户可以开启美颜功能并调节美白、磨皮、祛痘、红润效果等美颜选项,实现自然的美颜效果。

如果 Agora RTC SDK 提供的基础美颜功能无法满足你的场景需求,你可以同时集成第三方美颜 SDK 和 Agora RTC SDK 实现具有高级美颜功能的实时音视频互动。Agora 提供开源示例项目供你参考。

实现方法

  1. 确保已在你的项目中实现基本的实时音视频功能。详见实现视频直播实现视频通话
  2. 调用 setBeautyEffectOptions 开启美颜并设置美颜选项(options)。

示例代码

Java

// Java
mRtcEngine.setBeautyEffectOptions(true, new BeautyOptions(LIGHTENING_CONTRAST_NORMAL, 0.5F, 0.5F, 0.5F));

Swift

// Swift
let options = AgoraBeautyOptions()
options.lighteningContrastLevel = .normal
options.rednessLevel = 0
options.smoothnessLevel = 0
options.lighteningLevel = 0

agoraKit.setBeautyEffectOptions(true, options: options)

Objective-C

// Objective-C
AgoraBeautyOptions *options = [[AgoraBeautyOptions alloc] init];
options.lighteningContrastLevel = AgoraLighteningContrastNormal;
options.rednessLevel = 0;
options.smoothnessLevel = 0;
options.lighteningContrastLevel = 0;

[self.agoraKit setBeautyEffectOptions:YES options:options];

C++

// C++
bool enabled = true;
agora::rtc::BeautyOptions options;
options.lighteningContrastLevel = BeautyOptions::LIGHTENING_CONTRAST_NORMAL;
options.lighteningLevel = 0.7;
options.smoothnessLevel = 0.5;
options.rednessLevel = 0.1;

m_lpAgoraEngine->setBeautyEffectOptions(enabled, options);

Web 3.x

// Web 3.x
// setBeautyEffectOptions 为异步方法,必须使用 Promise 或 async/await 关键字进行调用。
// 如果需要在创建视频流后立即开启美颜,可以在 Client.on("stream-published") 回调中调用 setBeautyEffectOptions。
var streamPublishedHandler = async function() {
    await localStream.setBeautyEffectOptions(true, {
        lighteningContrastLevel: 1,
        lighteningLevel: 0.7,
        smoothnessLevel: 0.5,
        rednessLevel: 0.1
    });
    client.off("stream-published", streamPublishedHandler);
}
client.on("stream-published", streamPublishedHandler);

Web 4.x

// Web 4.x
// 请在 LocalVideoTrack 上调用 setBeautyEffect 设置基础美颜功能。
// 如下示例中的 localVideoTrack 是通过 AgoraRTC.createCameraVideoTrack 创建的本地摄像头视频轨道对象。
localVideoTrack.setBeautyEffect(true, {
    lighteningContrastLevel: 1,
    lighteningLevel: 0.7,
    smoothnessLevel: 0.5,
    rednessLevel: 0.1
}).then(() => { console.log("set Beauty Effect Options success!") });

Agora 还提供在线 Demo 供你体验基础美颜功能。

API 参考

Native

Web

基于 Native 开发的第三方框架

注意事项

  • 美颜处理属于实时计算密集型操作,因此美颜功能的开启会对低端机的性能造成影响,以至于无法达到预期的要求。对于低端机,视频编码属性为分辨率 360P 帧率 30 fps,分辨率 720P 帧率 15 fps 或更高时,Agora 不建议开启美颜。
  • Agora Web SDK 的美颜功能不支持移动端设备且仅支持部分浏览器,详见 Web 3.x 或 4.x API 参考
  • 使用 Agora Web 3.x SDK 的 setBeautyEffectOptions 方法时,请注意该方法有调用时序限制且美颜选项(options)仅对视频大流生效。详见 Web 3.x API 参考