iOS

SDK 集成

1. 集成腾讯特效 SDK,请参考 TRTC SDK 集成腾讯特效
2. 本文档说明在 TRTC SDK 项目中集成和使用 TEBeautyKit 库
3. 参考 demo

SDK 使用

步骤一:集成 TEBeautyKit

1. 下载并解压 TEBeautyKit
2. 把 TEBeautyKit 文件夹拷贝到自己的工程中,和 podfile 同级目录。
3. 编辑 podfile 文件,添加下面的代码:
pod 'TEBeautyKit',:path => 'TEBeautyKit/TEBeautyKit.podspec'

步骤二:鉴权

[TEBeautyKit setTELicense:@"your license" key:@"your key" completion:^(NSInteger authresult, NSString * _Nullable errorMsg) {
NSLog(@"----------result: %zd %@",authresult,errorMsg);
}];

步骤三:配置美颜素材路径

如果 json 文件中配置的素材是本地的,需要将美颜素材添加到工程中。
- (void)initBeautyJson{
NSString *resourcePath = [[NSBundle mainBundle]
pathForResource:@"TEBeautyKitResources" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:resourcePath];
[[TEUIConfig shareInstance] setTEPanelViewRes:[bundle pathForResource:@"beauty_S1" ofType:@"json"]
beautyBody:[bundle pathForResource:@"beauty_body" ofType:@"json"]
lut:[bundle pathForResource:@"lut" ofType:@"json"]
motion:[bundle pathForResource:@"motions" ofType:@"json"]
makeup:[bundle pathForResource:@"makeup" ofType:@"json"]
segmentation:[bundle pathForResource:@"segmentation" ofType:@"json"]];
}

步骤四:初始化并添加 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);
}];

步骤五:设置视频数据回调

[self.trtcCloud setLocalVideoProcessDelegete:self pixelFormat:TRTCVideoPixelFormat_Texture_2D bufferType:TRTCVideoBufferType_Texture];

步骤六:在视频帧回调接口中创建 XMagic 对象和处理视频数据

-(void)initXMagic{
__weak __typeof(self)weakSelf = self;
[TEBeautyKit create:^(XMagic * _Nullable api) {
__strong typeof(self) strongSelf = weakSelf;
strongSelf.xMagicKit = api;
[strongSelf.teBeautyKit setXMagicApi:api];
strongSelf.tePanelView.teBeautyKit = strongSelf.teBeautyKit;
[strongSelf.teBeautyKit setTePanelView:strongSelf.tePanelView];
[strongSelf.teBeautyKit setLogLevel:YT_SDK_ERROR_LEVEL];
strongSelf.tePanelView.beautyKitApi = api;
[strongSelf.xMagicKit registerSDKEventListener:strongSelf];
}];
}
#pragma mark - TRTCVideoFrameDelegate
- (uint32_t)onProcessVideoFrame:(TRTCVideoFrame *_Nonnull)srcFrame dstFrame:(TRTCVideoFrame *_Nonnull)dstFrame {
if(!_xMagicKit){
[self initXMagic];
}
YTProcessOutput *output = [self.teBeautyKit processTexture:srcFrame.textureId
textureWidth:srcFrame.width textureHeight:srcFrame.height
withOrigin:YtLightImageOriginTopLeft withOrientation:YtLightCameraRotation0];
dstFrame.textureId = output.textureData.texture;
return 0;
}

步骤七:销毁美颜

- (void)destroyXMagic{
[self.xMagicKit clearListeners];
[self.xMagicKit deinit];
self.xMagicKit = nil;
}