最近更新时间:2023.09.22 16:33:25
首次发布时间:2022.08.30 16:59:12
美颜特效是直播场景的基础功能,视频直播 SDK 内置了美颜特效 CV SDK 的相关接口,帮助您完成美颜特效能力的快速接入。在开始对接前,请先联系商务,获取对应版本的 CV SDK(推荐使用 4.4.3 及以上版本)、授权文件 License 和特效资源包。
本章节为您介绍视频直播 SDK 中提供的美颜滤镜等功能相关接口,您可以参考 veVOS Demo 中直播推流部分的实现,完成 CV SDK 的接入。
CV SDK 和 TTSDK 可以按需提供动态库/静态库打包版本。TTSDK SDK 动态库会动态加载 CV SDK 的函数地址,由于链接器在链接过程会优化掉静态库中未被直接依赖的符号和代码,因此
-Wl,-u,_bef_effect_ai_check_license -Wl,-u,_bef_effect_ai_create -Wl,-u,_bef_effect_ai_destroy -Wl,-u,_bef_effect_ai_init -Wl,-u,_bef_effect_ai_use_pipeline_processor -Wl,-u,_bef_effect_ai_set_intensity -Wl,-u,_bef_effect_ai_set_color_filter_v2 -Wl,-u,_bef_effect_ai_set_camera_device_position -Wl,-u,_bef_effect_ai_composer_set_nodes -Wl,-u,_bef_effect_ai_algorithm_texture -Wl,-u,_bef_effect_ai_process_texture -Wl,-u,_bef_effect_ai_composer_set_mode -Wl,-u,_bef_effect_ai_set_width_height -Wl,-u,_bef_effect_ai_composer_update_node -Wl,-u,_bef_effect_ai_matting_check_license -Wl,-u,_bef_effect_ai_portrait_matting_init_model -Wl,-u,_bef_effect_ai_matting_check_license -Wl,-u,_bef_effect_ai_portrait_matting_destroy -Wl,-u,_bef_effect_ai_portrait_matting_set_param -Wl,-u,_bef_effect_ai_portrait_matting_do_detect -Wl,-u,_bef_effect_ai_portrait_get_output_shape -Wl,-u,_bef_effect_ai_portrait_matting_create -Wl,-u,_bef_effect_ai_matting_check_license -Wl,-u,_bef_effect_ai_set_orientation -Wl,-u,_bef_effect_ai_get_face_detect_result -Wl,-u,_bef_effect_ai_get_license_wrapper_instance -Wl,-u,_bef_effect_ai_check_license -Wl,-u,_bef_effect_ai_set_render_api -Wl,-u,_bef_effect_ai_use_builtin_sensor -Wl,-u,_bef_effect_ai_check_online_license -Wl,-u,_bef_effect_ai_set_effect -Wl,-u,_bef_effect_ai_composer_set_nodes_with_tags -Wl,-u,_bef_effect_ai_composer_append_nodes -Wl,-u,_bef_effect_ai_composer_append_nodes_with_tags -Wl,-u,_bef_effect_ai_composer_remove_nodes -Wl,-u,_bef_effect_ai_load_resource_with_timeout
说明
如配置时出现异常,可参考异常处理操作。
@interface TTSDKEffectManager : NSObject /// 初试化美颜 /// 如果美颜整体的资源是放在主工程内,path 可以传 nil, 其它路径下,请传入目录路径 /// 资源的目录里面的文件包含但不限于:ComposeMakeup.bundle, FilterResource.bundle, ModelResource.bundle, StickerResource.bundle /// @note 如果使用的是在线/账号模式的 License,需要调用一下 updateLicense 更新 License后方可使用美颜功能 /// @param dir 美颜资源所有 Bundle 所在目录,如果美颜整体的资源是放在主工程内,path 可以传 nil /// @param config 美颜 License 配置 + (void)setupWithResourcesDir:(nullable NSString *)dir withConfig:(TTSDKEffectConfig *)config; @end /// 初试化美颜 SDK /// License 必须放在 MainBundle 内的 LicenseBag.bundle 内 [TTSDKEffectManager setupWithResourcesDir:nil licenseName:@"xxx"]; /// 可以自定义 License 路径 TTSDKEffectOfflineConfig *config = [[TTSDKEffectOfflineConfig alloc] init]; config.path = nil; /// license 的绝对路径 /// @param config 美颜 License 配置 [TTSDKEffectManager setupWithResourcesDir:nil withConfig:config]; /// 在线 License 验证 TTSDKEffectOnlineConfig *cfg = [[TTSDKEffectOnlineConfig alloc] initWithName:@"xxx"]; cfg.key = @""; cfg.secret = @""; [TTSDKEffectManager setupWithResourcesDir:resourcePath withConfig:cfg]; /// 配置完成后需要更新下 License,防止上次本地缓存的 License 过期 [TTSDKEffectManager updateLicenseWithConfig:nil async:YES completion:^(BOOL success, NSError * _Nullable error, NSString * _Nullable licensePath) { dispatch_async_on_main_queue(^{ if (error != nil) { /// 在线 License 更新失败 } else { /// 在线License 更新成功 } }); }]; /// 检查是否初始化特效资源成功,true为 成功,false 为失败 if ([TTSDKEffectManager isValid]) { /// License 可用 }
/// 设置特效素材 /// @param nodes 特效素材相对 ComposeMakeup.bundle/ComposeMakeup 的路径,或者绝对路径 + (void)updateComposerNodes:(NSArray<NSString *> *)nodes; /// 设置美颜效果 /// 如果想移除某个美颜效果,把 intensity 置为 0 即可 /// @param path 美颜或者美型节点,绝对路径或者相对 ComposeMakeup.bundle 的相对路径 /// @param key 特效Key /// @param intensity 特效强度 + (void)setBeauty:(NSString *)path key:(NSString *)key intensity:(float)intensity; /// 设置特效素材 /// 设置 ComposeMakeup.bundle 下的所有功能,包含美颜、美形、美体、美妆等 /// @param nodes 特效素材相对 ComposeMakeup.bundle/ComposeMakeup 的路径,或者绝对路径 /// @param tags 每一个特效素材对应一个 tag,tag 会传递给 SDK 素材的的一些配置 + (void)updateComposerNodes:(NSArray<NSString *> *)nodes withTags:(NSArray<NSString *> *)tags; /// 设置美颜效果 /// 如果想移除某个美颜效果,把 intensity 置为 0 即可 /// @param path 美颜或者美型节点,绝对路径或者相对 ComposeMakeup.bundle 的相对路径 /// @param tag 每一个特效素材对应一个 tag,tag 会传递给 SDK 素材的的一些配置 /// @param key 特效 Key /// @param intensity 特效强度 + (void)setBeauty:(NSString *)path tag:(nullable NSString *)tag key:(NSString *)key intensity:(float)intensity; /// 清除美颜、美型特效 + (void)clearBeauty; /// 设置滤镜 /// @param path 滤镜节点, 绝对路径或者相对 FilterResource.bundle 的相对路径 /// @param intensity 特效强度 + (void)setFilter:(NSString *)path intensity:(float)intensity; /// 设置当前滤镜特效强度 + (void)setFilterIntensity:(float)intensity; /// 设置贴纸 /// @param path 贴纸节点,绝对路径或者相对 StickerResource.bundle 的相对路径 + (void)setSticker:(NSString *)path; /// 销毁特效实例,如果执行了改方法,下次调用前,必须重新执行 setup 方法 + (void)destroy;
STRIP_STYLE
,表示 podspec 中的 STRIP_STYLE 配置不生效,可参考手动配置中的说明修改。OTHER_LDFLAGS
,表示 podspec 中的 OTHER_LDFLAGS 配置不生效,可参考手动配置中的说明修改。