iOS
功能说明
TEBeautyKit 是腾讯特效美颜模块的 UI 面板库,用于客户快速方便的使用和管理美颜功能,效果如下图:

集成步骤
1. 下载并解压 TEBeautyKit。
2. 把 TEBeautyKit 文件夹拷贝到自己的工程中,和 podfile 同级目录。
3. 编辑 podfile 文件,添加下面的代码:
pod 'TEBeautyKit',:path => 'TEBeautyKit/TEBeautyKit.podspec'
使用指引
1. 美颜鉴权
app 启动以后,需要进行一次美颜鉴权,才能正常使用美颜功能。
接口:
TEBeautyKit.h+ (void)setTELicense:(NSString *)url key:(NSString *)key completion:(callback _Nullable )completion;
示例:
[TEBeautyKit setTELicense:@"your license" key:@"your key" completion:^(NSInteger authresult, NSString * _Nullable errorMsg) {NSLog(@"----------result: %zd %@",authresult,errorMsg);}];
2. 配置美颜素材路径
美颜面板上面的美颜数据都是从
TEBeautyKit/Assets/json/beauty_panel/
目录下,根据不同美颜套餐中对应的 json 文件中解析出来。 接口:
#import "TEUIConfig.h"/// 根据美颜套餐设置美颜面板的数据/// - Parameter panelLevel: 美颜套餐/// 美颜套餐类型:A1_00,A1_01,A1_02,A1_03,A1_04,A1_05,A1_06,S1_00,S1_01,S1_02,S1_03,S1_04,S1_05,S1_06,S1_07-(void)setPanelLevel:(TEPanelLevel)panelLevel;
示例:
- (void)initBeautyJson{[[TEUIConfig shareInstance] setPanelLevel:S1_07];}
3. 初始化并添加 TEPanelView
-(TEPanelView *)tePanelView{if (!_tePanelView) {_tePanelView = [[TEPanelView alloc] init:nil comboType:nil];_tePanelView.delegate = self;}return _tePanelView;}[self.view addSubview:self.tePanelView];[self.tePanelView mas_makeConstraints:^(MASConstraintMaker *make) {make.width.mas_equalTo(self.view);make.centerX.mas_equalTo(self.view);make.height.mas_equalTo(250);make.bottom.mas_equalTo(self.view.mas_bottom);}];
4. 创建美颜对象
接口:
//创建TEBeautyKit对象,effectMode: EFFECT_MODE_NORMAL(高性能模式) EFFECT_MODE_PRO(默认模式)+ (void)createXMagic:(EffectMode)effectMode onInitListener:(OnInitListener _Nullable )onInitListener;//创建TEBeautyKit对象,不开启高性能模式+ (void)create:(OnInitListener _Nullable )onInitListener;
示例:
- (void)initXMagic {__weak __typeof(self)weakSelf = self;[TEBeautyKit createXMagic:EFFECT_MODE_PRO onInitListener:^(TEBeautyKit * _Nullable api) {__strong typeof(self) strongSelf = weakSelf;strongSelf.teBeautyKit = api;strongSelf.tePanelView.teBeautyKit = strongSelf.teBeautyKit;[strongSelf.tePanelView setDefaultBeauty];[strongSelf.teBeautyKit setLogLevel:YT_SDK_ERROR_LEVEL];// [strongSelf.teBeautyKit registerSDKEventListener:strongSelf];}];}
5. 处理视频数据
接口:
/**textureId:纹理idtextureWidth:纹理宽度textureHeight:纹理高度origin:枚举值(YtLightImageOriginTopLeft、YtLightImageOriginBottomLeft),设置成YtLightImageOriginBottomLeft 时,图像上下镜像翻转orientation:枚举值:图像旋转角度*/- (YTProcessOutput *)processTexture:(int)textureIdtextureWidth:(int)textureWidthtextureHeight:(int)textureHeightwithOrigin:(YtLightImageOrigin)originwithOrientation:(YtLightDeviceCameraOrientation)orientation
示例:
#pragma mark - TRTCVideoFrameDelegate- (uint32_t)onProcessVideoFrame:(TRTCVideoFrame *_Nonnull)srcFrame dstFrame:(TRTCVideoFrame *_Nonnull)dstFrame {if(!_teBeautyKit){[self initXMagic];}YTProcessOutput *output = [self.teBeautyKit processTexture:srcFrame.textureIdtextureWidth:srcFrame.width textureHeight:srcFrame.heightwithOrigin:YtLightImageOriginTopLeft withOrientation:YtLightCameraRotation0];dstFrame.textureId = output.textureData.texture;return 0;}
6. 销毁美颜
- (void)destroyXMagic{[self.teBeautyKit onDestroy];self.teBeautyKit=nil;}
附录
面板 JSON 文件说明
美颜、美体 。


字段 | 说明 |
displayName | 中文名称 |
displayNameEn | 英文名称 |
icon | 图片地址,支持设置本地图片和网络图片,本地图片支持 assets 资源和 SD 资源,assets 图片如上图所示,SD 卡图片设置图片全路径,网络图片设置对应的 http 链接 |
sdkParam | 美颜 SDK 需要用到的属性,共包含四个属性,可参考美颜参数表 |
effectName | 美颜属性 key,参考属性参数表 |
effectValue | 设置属性强度,参考属性参数表 |
resourcePath | 设置资源路径,参考属性参数表 |
extraInfo | 设置其他信息,参考属性参数表 |
滤镜、动效贴纸、分割 。


由于滤镜和动效贴纸、分割的配置基本一致,所以此处用滤镜的JSON进行说明,这里新增了downloadPath和resourceUri字段。
字段 | 说明 |
downloadPath | 如果您的滤镜素材是网络下载,那么这里配置的是您素材下载后在本地的存放位置,这里是相对路径,全路径是
TEDownloader.h 中设置的basicPath +此处设置的路径 |
resourceUri | 如果您的素材是需要通过网络下载的,那么这里配置网络地址,如上图第三个红框,如果您的滤镜素材在本地,则按照上图配置对应的本地地址。 |
风格整妆


在风格整妆中增加了
extraInfo
下的 makeupLutStrength
字段,此字段用于调节风格整妆素材中滤镜的强度(如果此风格整妆素材支持调节滤镜强度就进行配置),此字段可参考美颜参数表。TEBeautyKit 方法说明
//创建TEBeautyKit对象,effectMode: EFFECT_MODE_NORMAL(高性能模式) EFFECT_MODE_PRO(默认模式)+ (void)createXMagic:(EffectMode)effectMode onInitListener:(OnInitListener _Nullable )onInitListener;//创建TEBeautyKit对象,不开启高性能模式+ (void)create:(OnInitListener _Nullable )onInitListener;/*创建TEBeautyKit对象isEnableHighPerformance:是否开启高性能模式高性能模式开启后,美颜占用的系统 CPU/GPU 资源更少,可减少手机的发热和卡顿现象,更适合低端机长时间用。注意:开启高性能模式后,以下美颜项将不可用:1.眼部:眼宽、眼高、祛眼袋2.眉毛:角度、距离、高度、长度、粗细、眉峰3.嘴部:微笑唇4.面部:瘦脸(自然,女神,英俊),收下颌,祛皱、祛法令纹。建议用“脸型”实现综合大眼瘦脸效果*/+ (void)create:(BOOL)isEnableHighPerformance onInitListener:(OnInitListener _Nullable )onInitListener;//美颜鉴权+ (void)setTELicense:(NSString *)url key:(NSString *)key completion:(callback _Nullable )completion;//设置美颜对象- (void)setXMagicApi:(XMagic *_Nullable)xmagicApi;//美颜静音- (void)setMute:(BOOL)isMute;/*** 设置某个特性的开或关** @param featureName 取值见 XmagicConstant.FeatureName* @param enable true表示开启,false表示关闭*/- (void)setFeatureEnableDisable:(NSString *_Nullable)featureName enable:(BOOL)enable;/// 设置帧同步模式/// @isSync 是否是同步/// @syncFrameCount同步的帧数。-1表示无限制。如果isSync为false,则此参数无意义- (void)setSyncMode:(BOOL)isSync syncFrameCount:(int)syncFrameCount;//处理图片美颜- (UIImage *_Nullable)processUIImage:(UIImage *_Nullable)inputImageimageWidth:(int)imageWidthimageHeight:(int)imageHeightneedReset:(bool)needReset;//处理texture- (YTProcessOutput *_Nullable)processTexture:(int)textureIdtextureWidth:(int)textureWidthtextureHeight:(int)textureHeightwithOrigin:(YtLightImageOrigin)originwithOrientation:(YtLightDeviceCameraOrientation)orientation;//处理CVPixelBufferRef- (YTProcessOutput * _Nullable)processPixelData:(CVPixelBufferRef _Nullable )pixelDatapixelDataWidth:(int)pixelDataWidthpixelDataHeight:(int)pixelDataHeightwithOrigin:(YtLightImageOrigin)originwithOrientation:(YtLightDeviceCameraOrientation)orientation;//设置美颜- (void)setEffect:(TESDKParam *_Nullable)sdkParam;//设置美颜list- (void)setEffectList:(NSArray<TESDKParam *>*_Nullable)sdkParamList;//是否开启了美颜增强模式- (BOOL)isEnableEnhancedMode;//是否开启美颜增强模式- (void)enableEnhancedMode:(BOOL)enable;//获取正在使用的美颜数据- (NSString *_Nullable)exportInUseSDKParam;//获取保存的美颜数据,下次进入美颜的时候,调用setEffectList,即可恢复相同的美颜效果- (NSMutableArray<TESDKParam *> *_Nonnull)getInUseSDKParamList;//恢复美颜- (void)onResume;//暂停美颜- (void)onPause;//销毁美颜- (void)onDestroy;//获取当前texture的图片- (void)exportCurrentTexture:(void (^_Nullable)(UIImage * _Nullable image))callback;//设置log- (void)setLogLevel:(YtSDKLoggerLevel)level;//设置AIDataListener- (void)setAIDataListener:(id<TEBeautyKitAIDataListener> _Nullable)listener;//设置TipsListener- (void)setTipsListener:(id<TEBeautyKitTipsListener> _Nullable)listener;//保存设置的美颜数据- (void)saveEffectParam:(TESDKParam *_Nonnull)sdkParam;//删除某个保存的美颜数据- (void)deleteEffectParam:(TESDKParam *_Nonnull)sdkParam;//清空保存的美颜数据- (void)clearEffectParam;
TEUIConfig说明
//可在外部修改下列属性的颜色//美颜面板背景色@property(nonatomic,strong)UIColor *panelBackgroundColor;//分割线颜色@property(nonatomic,strong)UIColor *panelDividerColor;//选中项颜色@property(nonatomic,strong)UIColor *panelItemCheckedColor;//文本颜色@property(nonatomic,strong)UIColor *textColor;//文本选中颜色@property(nonatomic,strong)UIColor *textCheckedColor;//进度条颜色@property(nonatomic,strong)UIColor *seekBarProgressColor;/// 根据美颜套餐设置美颜面板的数据,推荐使用/// - Parameter panelLevel: 美颜套餐/// 美颜套餐类型:A1_00,A1_01,A1_02,A1_03,A1_04,A1_05,A1_06,S1_00,S1_01,S1_02,S1_03,S1_04,S1_05,S1_06,S1_07-(void)setPanelLevel:(TEPanelLevel)panelLevel;/**配置美颜面板数据beauty:美颜json路径beautyBody:美体json路径lut:滤镜json路径motion:动效json路径makeup:美妆json路径segmentation:背景分割json路径lightMakeup: 轻美妆路径*/-(void)setTEPanelViewRes:(NSString *)beautybeautyBody:(NSString *)beautyBodylut:(NSString *)lutmotion:(NSString *)motionmakeup:(NSString *)makeupsegmentation:(NSString *)segmentationlightMakeup:(NSString *)lightMakeup;
TEPanelView说明
//初始化美颜面板,abilityType和comboType都填nil即可- (instancetype)init:(NSString *)abilityType comboType:(NSString *)comboType;@protocol TEPanelViewDelegate <NSObject>//设置了美颜以后回调- (void)setEffect;@end