更新时间 : 2021-12-22 18:08:19
工程中配置
添加
iOSseg.framework 抠图sdk
导入模板或剪辑SDKsdk集成步骤
并设置为Embed & Sign
添加Portrait.mnn(抠图依赖文件,竖屏)到工程中
添加mnn.metalib(metal功能依赖文件)到Bundle Resource
代码示例
#import <VEVideoSdk/VEVideoSdk.h>
在使用之前开启SDK中的抠图功能
typedef enum : NSUInteger {
CPUEvent = 0,
GPUEvent = 1
} MattingEvent;
// 在低端机型中,建议使用cpu计算渲染,包括8plus以下机型
[SXTemplate openPortaitMatting:CPUEvent];//抠图
/*修改扣图等级
初始化后,可以随时改变运行等级。输入level为int 0~9(0,1,2,3,4,5,6,7,8,9)十个等级,0最快,9最慢
每次改变等级,或换不同分辨率的图像或视频去预测时,第一帧预测的速度会略慢几ms到几十ms,后面正常
经过测试,低端机型抠图效果,使用等级0为测试标准,相机中测试为每秒10帧左右,7plus为每秒20帧左右,8plus为27帧左右每秒
建议:低端机型使用cpu作为相机和抠图的计算方式,高端机型(8plus以上机型,不包括8plus),可以根据实际渲染时间和效果选择gpu渲染,在iphone11中测试,等级0依然为cpu相机抠图比较快,但是等级9中gpu表现出了更好的性能*/
+ (BOOL)changePortaitLevel:(int)level;
//单张图片扣图
@param image 传递需要扣图的UIImage
@return 返回扣图完成的UIImage
+ (UIImage *)meetingImage:(UIImage *)image;
相机中开启抠像功能,必须添加相机模板后才能使用
[mTemplate.camera setMattingEnabled:true];//抠像
抠像功能代码示例
#import <SXVideoEnging/SXVideoEnging.h>
SXCamera *camera = [[SXCamera alloc] initWithSize:SXCameraSize720 frameRate:SXCameraFrameRate30 position:SXCameraPositionBack type:SXCameraSourceTypeAudioAndVideo];
SXTemplate *mTemplate = [[SXTemplate alloc] initWithWidth:720 height:1280 frameRate:20 camera:camera];
SXTemplatePlayer *mPlayer = [[SXTemplatePlayer alloc] initWithTemplate:_mTemplate audioPath:nil];
mPlayer.delegate = self;
UIView *playView = [mPlayer getPlayerView];
int videoWidth = [mTemplate mainCompWidth];
int videoHeight = [mTemplate mainCompHeight];
CGFloat playerScale = self.view.bounds.size.height / videoHeight;
playView.bounds = CGRectMake(0, 0, videoWidth * playerScale, self.view.bounds.size.height);
if (isIphoneX) {
playView.bounds = CGRectMake(0, 0, videoWidth * playerScale * 0.84, videoWidth * playerScale / 9 * 16 * 0.84);
}
playView.center = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height / 2);
if (isIphoneX) {
playView.top += 25;
}
[self.view addSubview:playView];
[self.view sendSubviewToBack:playView];
[mTemplate commit];
[mPlayer start];
[camera start];
SXCameraTemplate *cameraTemplate = [[SXCameraTemplate alloc] initWithFilePath:@"相机模板路径"];
mTemplate.cameraTemplate = cameraTemplate;
[mTemplate.camera setMattingEnabled:true];//抠像
模板中的抠图功能,素材替换中开启抠图功能
代码示例
[_resourcePath addObject:@{
@"main_file": asset.editModel.assetModel.mAssetFiles.firstObject,
@"matting": @(asset.editModel.isFaceOpenMatting), //抠图功能开启字段,传入bool值 true和 false
}];
工程中配置
添加
iOSseg.framework 抠图sdk
导入模板或剪辑SDKsdk集成步骤
并设置为Embed & Sign
添加Portrait.mnn(抠图依赖文件,竖屏)到工程中
添加mnn.metalib(metal功能依赖文件)到Bundle Resource
代码示例
#import <VEVideoSdk/VEVideoSdk.h>
在使用之前开启SDK中的抠图功能
typedef enum : NSUInteger {
CPUEvent = 0,
GPUEvent = 1
} MattingEvent;
// 在低端机型中,建议使用cpu计算渲染,包括8plus以下机型
[SXTemplate openPortaitMatting:CPUEvent];//抠图
/*修改扣图等级
初始化后,可以随时改变运行等级。输入level为int 0~9(0,1,2,3,4,5,6,7,8,9)十个等级,0最快,9最慢
每次改变等级,或换不同分辨率的图像或视频去预测时,第一帧预测的速度会略慢几ms到几十ms,后面正常
经过测试,低端机型抠图效果,使用等级0为测试标准,相机中测试为每秒10帧左右,7plus为每秒20帧左右,8plus为27帧左右每秒
建议:低端机型使用cpu作为相机和抠图的计算方式,高端机型(8plus以上机型,不包括8plus),可以根据实际渲染时间和效果选择gpu渲染,在iphone11中测试,等级0依然为cpu相机抠图比较快,但是等级9中gpu表现出了更好的性能*/
+ (BOOL)changePortaitLevel:(int)level;
//单张图片扣图
@param image 传递需要扣图的UIImage
@return 返回扣图完成的UIImage
+ (UIImage *)meetingImage:(UIImage *)image;
相机中开启抠像功能,必须添加相机模板后才能使用
[mTemplate.camera setMattingEnabled:true];//抠像
抠像功能代码示例
#import <SXVideoEnging/SXVideoEnging.h>
SXCamera *camera = [[SXCamera alloc] initWithSize:SXCameraSize720 frameRate:SXCameraFrameRate30 position:SXCameraPositionBack type:SXCameraSourceTypeAudioAndVideo];
SXTemplate *mTemplate = [[SXTemplate alloc] initWithWidth:720 height:1280 frameRate:20 camera:camera];
SXTemplatePlayer *mPlayer = [[SXTemplatePlayer alloc] initWithTemplate:_mTemplate audioPath:nil];
mPlayer.delegate = self;
UIView *playView = [mPlayer getPlayerView];
int videoWidth = [mTemplate mainCompWidth];
int videoHeight = [mTemplate mainCompHeight];
CGFloat playerScale = self.view.bounds.size.height / videoHeight;
playView.bounds = CGRectMake(0, 0, videoWidth * playerScale, self.view.bounds.size.height);
if (isIphoneX) {
playView.bounds = CGRectMake(0, 0, videoWidth * playerScale * 0.84, videoWidth * playerScale / 9 * 16 * 0.84);
}
playView.center = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height / 2);
if (isIphoneX) {
playView.top += 25;
}
[self.view addSubview:playView];
[self.view sendSubviewToBack:playView];
[mTemplate commit];
[mPlayer start];
[camera start];
SXCameraTemplate *cameraTemplate = [[SXCameraTemplate alloc] initWithFilePath:@"相机模板路径"];
mTemplate.cameraTemplate = cameraTemplate;
[mTemplate.camera setMattingEnabled:true];//抠像
模板中的抠图功能,素材替换中开启抠图功能
代码示例
[_resourcePath addObject:@{
@"main_file": asset.editModel.assetModel.mAssetFiles.firstObject,
@"matting": @(asset.editModel.isFaceOpenMatting), //抠图功能开启字段,传入bool值 true和 false
}];