文档中心
全部产品
Console Agora.io 社区 提交工单

如何实现美颜?

分类: 集成类    平台: Android / iOS / macOS / Web / Windows / Unity / Cocos Creator / Electron / React Native / Flutter / Flutter2   最后更新时间: 2022/02/22 18:31:01

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

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

实现方法

  1. 确保已在你的项目中实现基本的实时音视频功能。详见实现视频直播实现视频通话
  2. 调用 setBeautyEffectOptions 开启美颜并设置美颜选项(options)。
Native 平台和第三方框架的 Agora RTC SDK 自 3.6.0 版起更新了 Agora 基础美颜算法,能提升基础美颜效果并支持锐度调节功能。如果你想体验优化后的基础美颜效果或设置锐度,请升级 SDK 并在调用 setBeautyEffectOptions 前确保已集成如下动态库:
  • Android: libagora_video_process_extension.so
  • iOS: AgoraVideoProcessExtension.xcframework
  • macOS: AgoraVideoProcessExtension.frameworkAgoraVideoProcessExtension.xcframework
  • Windows: libagora_video_process_extension.dll
  • 示例代码

    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 参考