SDK接入文档
1. 工程配置
1.1. 系统版本
支持iOS 9.0 及以上版本
1.2. 开发环境
建议您使用macOS High Sierra 10.13 Xcode9.0及以上版本的开发环境。
1.3. 项目配置
打开工程info.Plist,添加以下权限:
- Privacy - Media Library Usage Description
- Privacy - Camera Usage Description
- Privacy - Microphone Usage Description
- Privacy - Photo Library Additions Usage Description
- Privacy - Photo Library Usage Description
配置Build Setting — Build Options — Enable Bitcode, 设置为NO。
2. 基本信息
2.1. 获取SDK版本
短视频SDK提供了MDRecordManager
来获取SDK版本的信息。
- 获取版本号
+ (NSString *)version;
2.2. 视频分辨率
视频分辨率指的是视频横向和纵向上的有效像素,理论上视频分辨率越高,图像越清晰。但分辨率越高也意味着文件越大,处理越耗时。移动端考虑到不同设备性能差异,建议设置分辨率720p及以下。
注意, 不要直接使用屏幕像素值作为视频分辨率。
2.3. 编码方式
目前SDK只支持硬编码。
2.4. 支持格式
类型 | 格式 |
---|---|
视频 | MP4, MOV, FLV |
音频 | MP3, AAC, PCM |
图片 | JPG, PNG |
3. SDK初始配置
- 首先通过
MDRecordManger
类调用
+ (void)initSDK:(NSString *)appID;
方法传入appID完成SDK初始化。然后通过
+ (void)fetchConfigUsingAppId;
拉取配置文件。可通过
+ (void) addCommandListener: (SEL) mSelctor target:(id) mTarget;
方法注册回调函数,其中 mSelctor 需携带一个CallbackMessage
类型的参数。 当 CallbackMessage
的 command
属性值为 COMMAND_REGISTER
时, message
属性携带的便是Token
.
之后可通过 MDRecordManger
类
+ (NSString *)appToken;
方法获取Token
. 该Token
用于初始化相关功能类句柄。
- 调用
MDRecordDetectorManger
类
- (void)config;
初始化模型加载器, 用于模型下载以及创建。
4. 视频录制
4.1. 功能介绍
短视频SDK提供基础视频录制功能,支持添加配乐,变速录制,人脸贴纸,特效滤镜等。核心类是 MDRCameraEngine
(2.5.0 以上版本支持), 历史版本接口类 MDRecordingAdapter
即将废弃.
4.2. 录制流程
4.2.1. 初始化设置
- 初始化
_cameraEngine = [[MDRCameraEngine alloc] initWithDelegate:self];
/* 对应历史版本旧接口
_adapter = [[MDRecordingAdapter alloc] initWithToken:@"Token"]; */
- 设置相机参数并初始化相机
// @param encodeParams 编码参数配置,更多参数配置请参考 MDRCommonDefine.h
NSMutableDictionary *encodeParams = [[NSMutableDictionary alloc] init];
encodeParams[MDRVideoEncodeFrameRateKey] = @30; // 30FPS
encodeParams[MDRVideoEncodeBitRateKey] = @5000000; // 5M bps
encodeParams[MDRVideoEncodeScaleModeKey] = @(MDRVideoEncodeScaleMode_Fit); // 编码适配模式
// 设置参数并开始录制
[self.cameraEngine startRecordingWithFlag:flag andEncodeParams:encodeParams];
/* 对应历史版本旧接口
[adapter setVideoCodecKey:AVVideoCodecH264]; // 设置编码格式
[adapter setVideoBitRate:5.0 * 1024 * 1024]; // 设置码率
[adapter setVideoResolution:CGSizeMake(720, 1280)]; // 设置视频分辨率
[adapter setVideoScaleMode:AVVideoScalingModeResizeAspectFill]; // 设置视频缩放模式
[adapter setCameraPreset:AVCaptureSessionPreset1280x720]; // 设置采样分辨率
[adapter setCameraPosition:AVCaptureDevicePositionFront]; // 设置摄像头位置
[adapter setupRecorder]; // 初始化摄像机 */
- 相机设备特性配置:
在设置相机特性前建议先参考
MDRCaptureDeviceCapability,
在开启预览之后配置相机特性才会生效,SDK内部不会记录开始预览前业务的设置.
//设置对焦
[self.cameraEngine focusCameraInPoint:pointInCamera];
// 设置曝光
[self.cameraEngine focusCameraInPoint:pointInCamera];
// 更新曝光补偿
[self.cameraEngine updateExposureTargetBias:bias];
// 设置闪光灯
self.cameraEngine.flashMode = MDCaptureFlashModeOn;
// 设置变焦倍数
[self.cameraEngine setVideoZoomFactor:factor];
- 获得预览视图, 并添加到view层级中
UIView<MLPixelBufferDisplay> *previewView = self.cameraEngine.previewView;
previewView.frame = containerView.bounds;
[containerView addSubview:previewView];
/* 对应历史版本旧接口
UIView<MLPixelBufferDisplay> *previewView = self.adapter.previewView;
previewView.frame = containerView.frame;
[containerView addSubview:previewView]; */
- 开启相机
// 开启相机
[self.cameraEngine startCapturing];
// 关闭相机
[self.cameraEngine stopCapturing];
/* 对应历史版本旧接口
// 开启相机
[self.adapter startCapturing];
// 关闭相机
[self.adapter stopCapturing]; */
- 拍照
[self.cameraEngine takePhotoWithCompletionHandler:^(UIImage * _Nonnull image, NSDictionary * _Nonnull metaInfo, NSError * _Nonnull error) {
// Coding
}];
/* 对应历史版本旧接口
// 设置即将拍照回调
self.adapter.captureStillImageWillHandler = self.captureStillImageWillHandler;
// 设置拍照完成的回调
self.adapter.captureStillImageHandler = self.captureStillImageHandler;
// 拍照
[self.adapter takePhoto]; */
- 切换摄像头
[self.cameraEngine switchCameraPosition];
/* 对应历史版本旧接口
[self.adapter switchCameraPosition]; */
- 设置最大录制时长
self.cameraEngine.recordMaxDuration = 60;
/* 对应历史版本旧接口
[self.adapter setMaxRecordDuration:60]; */
- 录制一段视频,多次调用可以录制多段视频
[self.cameraEngine startRecording]; // 开始录制
[self.cameraEngine pauseRecording]; // 完成一段录制
/* 对应历史版本旧接口
[self.adapter startRecording]; // 开始录制
[self.adapter pauseRecording]; // 完成一段录制 */
- 结束录制
// 结束录制,并将录制的多段视频合并后导出整个视频文件
[self.cameraEngine exportVideoWithCompletionHandler:^(NSURL * _Nonnull videoFileURL, NSError * _Nonnull error) {
}];
/* 对应历史版本旧接口
// 结束录制,并将录制的多段视频合并后导出整个视频文件
[self.adapter stopVideoCaptureWithOutputURL:destUrl completionHandler:completionHandler]; */
- 删除已录制片段
// 删除最新录制的一段,多次调用,直到删除所有已录制的视频
[self.cameraEngine deleteLastSavedSegment];
// 删除所有录制片段
[self.cameraEngine deleteAllSegments];
/* 对应历史版本旧接口
[self.recorder deleteLastVideoSegment]; // 删除最后一段录制内容
[self.recorder reset]; // 清空所有已录制的视频段 */
- 获取录制相关信息
// 是否能开始录制
// YES: 可以开始录制, NO:1.已经达到了最大时长 2.还未获取到第一帧buffer
[self.cameraEngine canStartRecording];
self.cameraEngine.currentRecordingDuration; // 当前录制的总时长
self.cameraEngine.segmentInfos.count; // 分段数组
/* 对应历史版本旧接口
self.adapter.isRecording; // 能否启用录制
[self.adapter currentRecordingDuration]; // 获得已录制的视频时长
// 获得真实展示时长(因为有变速效果,因此这个时间跟已录制的视频真实时长可能不同)
[self.adapter currentRecordingPresentDuration];
[self.adapter savedSegmentCount]; // 获得录制的视频段数 */
- 变速
// 当前段是否有变速效果
[self.cameraEngine hasPerSpeedEffect];
// 设置变速 需要在启动之前设置:
[self.cameraEngine startRecordingWithFlag:flag speedVaryFactor:speedVaryFactor andEncodeParams:encodeParams];
/* 对应历史版本旧接口
// 是否允许当前段变速, 允许传入YES
[self.adapter speedVaryShouldAllow:isAllow];
// 设置当前段变速因子, 取值范围 0.2 - 4.0
[self.adapter setNextRecordSegmentSpeedVaryFactor:factor];
// 当前段是否有变速效果
[self.adapter hasPerSpeedEffect]; */
- 设置配乐
self.cameraEngine.backgroundAudio = backgroundAudio;
/* 对应历史版本旧接口
self.adapter.backgroundAudio = backgroundAudio; */
- 贴纸
// 添加贴纸
[self.cameraEngine updateDecoration:decoration];
// 移除贴纸
[self.cameraEngine removeDecoration];
// 调整贴纸音效(对于有音效的贴纸而言)
[self.cameraEngine adjustStikcerVolume:mute ? .0f : 1.0f];
/* 对应历史版本旧接口
[self.adapter updateDecoration:decoration]; // 添加贴纸
[self.adapter removeDecoration]; // 移除贴纸
// 调整贴纸音效(对于有音效的贴纸而言)
[self.adapter adjustStikcerVolume:mute ? .0f : 1.0f]; */
- 切换滤镜
[self.cameraEngine configFilterA:filterA configFilterB:filterB offset:filterOffset];
/* 对应历史版本旧接口
[self.adapter configFilterA:filterA configFilterB:filterB offset:filterOffset]; */
- 设置美颜参数
MDRMicroSurgeryType:
/* 基础美颜 */
RUDDY; // 红润 0.0 - 1.0
SKIN_WHITENING; // 美白 0.0 - 1.0
SKIN_SMOOTH; // 磨皮 0.0 - 1.0
SHARPEN(SKIN_SHARPEN); // 锐化 0.0 - 1.0
BIG_EYE; // 大眼 0.0 - 1.0
THIN_FACE; // 瘦脸 0.0 - 1.0
/* 微整形 */
NOSE_WIDTH; // 鼻宽 -1.0 - 1.0
FACE_WIDTH; // 脸宽 0.0 - 1.0
JAW_SHAPE; // 削脸 -1.0 - 1.0
CHIN_LENGTH; // 下巴 -1.0 - 1.0;
FOREHEAD; // 额头 -1.0 - 1.0
SHORTEN_FACE; // 短脸 0.0 - 1.0;
EYE_DISTANCE; // 眼距 -1.0 - 1.0
EYESAREA; // 眼袋 0.0 - 1.0
EYE_HEIGHT; // 眼高 0.0 - 1.0
NOSE_SIZE; // 鼻子大小 -1.0 - 1.0
NOSE_LIFT; // 鼻高 -1.0 - 1.0
NOSE_RIDGE_WIDTH; // 鼻梁 -1.0 - 1.0
NOSE_TIP_SIZE; //鼻尖 -1.0 - 1.0
LIP_THICKNESS; //嘴唇厚度 -1.0 - 1.0
MOUTH_SIZE; //嘴唇大小 -1.0 - 1.0
CHEEKBONE_WIDTH; // 颧骨 0.0 - 1.0
JAW2_WIDTH; // 下颌骨 0.0 - 1.0
TEETHWHITEN; // 白牙 0.0 - 1.0
EYEBRIGHTEN; // 亮眼 0.0 - 1.0
NASOLABIALFOLDSAREA;// 祛法令纹 0.0 - 1.0
EYE_TILT; // 眼睛角度 -1.0 - 1.0
/* 美体 */
THIN_BODY; // 瘦身 0.0 - 1.0
LONG_LEG; // 长腿 0.0 - 1.0
// 设置接口(美白)
[self.cameraEngine adjustBeauty:value forKey:SKIN_WHITENING];
/* 对应历史版本旧接口
[self.adapter setSkinSmoothValue:skinSmoothFactor]; // 磨皮, 参数范围0-1
[self.adapter setSkinWhitenValue:skinWhitenFactor]; // 美白, 参数范围0-1
[self.adapter setBeautyBigEyeValue:bigEyeFactor]; // 大眼, 参数范围0-1
[self.adapter setBeautyThinFaceValue:thinFaceFactor]; // 瘦脸, 参数范围0-1
[self.adapter setBeautyThinBodyValue:thinBodyFactor]; // 瘦身, 参数范围0-1
[self.adapter setBeautyLenghLegValue:longLegFactor]; // 长腿, 参数范围0-1 */
- 美妆-风格妆
XEngineMakeupKey:
/* 美妆 */
MAKEUP_BLUSH; // 腮红 0 - 1
MAKEUP_FACIAL; // 修容 0 - 1
MAKEUP_EYEBROW; // 眼眉 0 - 1
MAKEUP_EYES; // 眼妆 0 - 1
MAKEUP_LIPS; // 口红 0 - 1
MAKEUP_PUPIL; // 瞳孔 0 - 1
/* 风格妆 */
MAKEUP_LUT; // 滤镜 0 - 1
MAKEUP_ALL; // 整装 0 - 1
// 美妆、风格妆
// @params makeupEffect 美妆资源绝对路径
[self.cameraEngine addMakeupEffect:makeupEffect];
// 设置美妆强度
// @params intensity 强度 [0-1]
[self.cameraEngine setMakeupEffectIntensity:1.0 makeupType:(XEngineMakeupKey)makeupType];
// 按美妆子项移除美妆
[self.cameraEngine removeMakeupEffectWithType:(XEngineMakeupKey)makeupType];
// 移除所有美妆效果
[self.cameraEngine removeAllMakeupEffect];
- 显示原图
// 设置渲染是否可用 YES : 显示美颜效果 NO : 显示原图
[self.cameraEngine setRenderStatus:YES];
关于录制其它操作请参考接口文档。
5. 视频编辑
5.1. 功能介绍
短视频SDK提供基础的视频编辑相关功能。可以进行视频裁剪,添加水印,静态贴纸,配乐,时间特化,画面特效等功能。核心类是MDVideoEditorAdapter
5.2. 视频编辑流程
- 初始化
_adapter = [[MDVideoEditorAdapter alloc] initWithToken:@"Token"];
- 获取播放视图
self.adapter.playerViewController.view.frame = self.viewController.view.bounds;
[self.viewController addChildViewController:self.adapter.playerViewController];
[self.viewController.view insertSubview:self.adapter.playerViewController.view atIndex:0];
[self.adapter.playerViewController didMoveToParentViewController:self.viewController];
- 视频播放
// 播放
[self.adapter play];
// 暂停
[self.adapter pause];
// 停止
[self.adapter stop];
// 重播
[self.adapter replay];
- 播放事件处理
// 播放结束回调
__weak typeof(self) weakself = self;
self.adapter.playToEndTime = ^(AVPlayer * _Nonnull player) {
__strong typeof(self) self = weakself;
if (![self.speedVaryVc isViewVisible] && self.exportTask == nil && !self.specialEffectsVc.isShow) {
[player seekToTime:kCMTimeZero toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
[self play];
}
};
// 播放进度回调
self.adapter.playerPeriodicTimeCallback = ^(CMTime time) {
__strong typeof(self) self = weakself;
if ([self.musicSelectPicker viewIsShowing]) {
[self.musicSelectPicker periodicTimeCallback:time];
}
};
- 视频处理
MDVideoEditorAdapter *adapter = self.adapter;
// 视频裁剪时间段
[adapter setVideoTimeRange:videoInsertTimeRange];
// 视频旋转方向
[adapter setVideoPerferredTransform:ideoPreferredTransform];
// 设置重复
[adapter setMediaSourceRepeatRange:repeatTimeRange];
// 设置变速效果
[adapter setTimeRangeMappingEffects:timerangeMappingEffects];
// 设置背景音乐
adapter.backgroundAudioURL = backgroundMusicURL;
// 设置背景音乐截取时间
adapter.backgroundAudioRange = backgroundMusicTimeRange;
// 设置原音音量
[adapter setSourceVolume:sourceAudioVolume];
// 设置背景音音量
[adapter setBackgroundMusicVolume:backgroundMusicVolume];
// 设置视频源
[adapter loadVideo:videoAsset];
// 合成视频
[self.adapter compositeVideoWithError:NULL];
注意: 在调用compositeVideoWithError:
方法前,所有对视频或者配乐的编辑行为均不生效。
// 设置原音音量
[adapter setSourceVolume:sourceAudioVolume];
// 设置背景音音量
[adapter setBackgroundMusicVolume:backgroundMusicVolume];
// 合成音效.
[self.adapter updateAudioMix];
注意: 如果仅合成音效,则调用updateAudioMix
方法效率更高。
- 贴纸
// 添加贴纸
[self.adapter updateDecoration:decoration];
// 移除贴纸
[self.adapter removeDecoration];
// 调整贴纸音效(对于有音效的贴纸而言)
[self.adapter adjustStikcerVolume:mute ? .0f : 1.0f];
- 切换滤镜
[self.adapter configFilterA:filterA configFilterB:filterB offset:filterOffset];
- 设置美颜参数
MDRMicroSurgeryType:
/* 基础美颜 */
RUDDY; // 红润 0.0 - 1.0
SKIN_WHITENING; // 美白 0.0 - 1.0
SKIN_SMOOTH; // 磨皮 0.0 - 1.0
SHARPEN(SKIN_SHARPEN); // 锐化 0.0 - 1.0
BIG_EYE; // 大眼 0.0 - 1.0
THIN_FACE; // 瘦脸 0.0 - 1.0
/* 微整形 */
NOSE_WIDTH; // 鼻宽 -1.0 - 1.0
FACE_WIDTH; // 脸宽 0.0 - 1.0
JAW_SHAPE; // 削脸 -1.0 - 1.0
CHIN_LENGTH; // 下巴 -1.0 - 1.0;
FOREHEAD; // 额头 -1.0 - 1.0
SHORTEN_FACE; // 短脸 0.0 - 1.0;
EYE_DISTANCE; // 眼距 -1.0 - 1.0
EYESAREA; // 眼袋 0.0 - 1.0
EYE_HEIGHT; // 眼高 0.0 - 1.0
NOSE_SIZE; // 鼻子大小 -1.0 - 1.0
NOSE_LIFT; // 鼻高 -1.0 - 1.0
NOSE_RIDGE_WIDTH; // 鼻梁 -1.0 - 1.0
NOSE_TIP_SIZE; //鼻尖 -1.0 - 1.0
LIP_THICKNESS; //嘴唇厚度 -1.0 - 1.0
MOUTH_SIZE; //嘴唇大小 -1.0 - 1.0
CHEEKBONE_WIDTH; // 颧骨 0.0 - 1.0
JAW2_WIDTH; // 下颌骨 0.0 - 1.0
TEETHWHITEN; // 白牙 0.0 - 1.0
EYEBRIGHTEN; // 亮眼 0.0 - 1.0
NASOLABIALFOLDSAREA;// 祛法令纹 0.0 - 1.0
EYE_TILT; // 眼睛角度 -1.0 - 1.0
/* 美体 */
THIN_BODY; // 瘦身 0.0 - 1.0
LONG_LEG; // 长腿 0.0 - 1.0
// 设置美颜接口(示例美白)
[self.cameraEngine adjustBeauty:value forKey:SKIN_WHITENING];
/* 对应历史版本旧接口
[self.adapter setSkinSmoothValue:skinSmoothFactor]; // 磨皮, 参数范围0-1
[self.adapter setSkinWhitenValue:skinWhitenFactor]; // 美白, 参数范围0-1
[self.adapter setBeautyBigEyeValue:bigEyeFactor]; // 大眼, 参数范围0-1
[self.adapter setBeautyThinFaceValue:thinFaceFactor]; // 瘦脸, 参数范围0-1
[self.adapter setBeautyThinBodyValue:thinBodyFactor]; // 瘦身, 参数范围0-1
[self.adapter setBeautyLenghLegValue:longLegFactor]; // 长腿, 参数范围0-1 */
- 美妆
XEngineMakeupKey:
/* 美妆 */
MAKEUP_BLUSH; // 腮红 0 - 1
MAKEUP_FACIAL; // 修容 0 - 1
MAKEUP_EYEBROW; // 眼眉 0 - 1
MAKEUP_EYES; // 眼妆 0 - 1
MAKEUP_LIPS; // 口红 0 - 1
MAKEUP_PUPIL; // 瞳孔 0 - 1
/* 风格妆 */
MAKEUP_LUT; // 滤镜 0 - 1
MAKEUP_ALL; // 整装 0 - 1
// 美妆、风格妆
// @params makeupEffect 美妆资源绝对路径
[self.cameraEngine addMakeupEffect:makeupEffect];
// 设置美妆强度
// @params intensity 强度 [0-1]
[self.cameraEngine setMakeupEffectIntensity:1.0 makeupType:(XEngineMakeupKey)makeupType];
// 按美妆子项移除美妆
[self.cameraEngine removeMakeupEffectWithType:(XEngineMakeupKey)makeupType];
// 移除所有美妆效果
[self.cameraEngine removeAllMakeupEffect];
- 显示原图
// 设置渲染是否可用 YES : 显示美颜效果 NO : 显示原图
[self.cameraEngine setRenderStatus:YES];
- 融合涂鸦图片
[self.adapter setGraffitiCanvasImage:canvasImage mosaicCanvasImage:mosaicCanvasImage];
- 动态贴纸
// 添加贴纸
[self.adapter addDynamicSticker:(id)sticker];
// 移除贴纸(与添加时候需要是同一个对象)
[self.adapter removeDynamicSticker:(id)aSticker];
- 特效滤镜
// 在某一时间段内添加特效滤镜
[self.adapter addSpecialFilter:filter timeRange:timeRange];
// 移除最后一个特效滤镜
[self.adapter deleteLastSpecialFilter];
// 移除所有特效滤镜
[self.adapter deleteAllSpecialFilters];
// 更新选中时间的特效滤镜起作用的时长
[self.adapter updateCurrentItemWithTime:time timeRange:timeRange];
// 是否存在特效滤镜
[self.adapter hasSpecialFilter];
// 所有特效滤镜
[self.adapter specialFilters];
注意: 目前SDK默认支持 雨窗,灵魂出窍,抖动,故障,四宫格五中特效滤镜。分别为:
MDRecordRainWindowFilter
MDRecordSoulOutFilter
MDRecordShakeFilter
MDRecordTVArtifactFilter
MDRecordMirrImageFrameFilter
自定义特效滤镜可以通过实现 MDFilterLifeStyle
协议的 GPUImageFilter
实现。
- 导出
// 设置导出时候要融合的图片
self.adapter.overlayImage = customOverlay;
// 设置导出码率
[self.adapter setTargetBitRate:sourceBitRate];
// 设置导出视频大小
[self.adapter setPresentationSize:presentationSize];
// 更新builder设置
[self updateBuilderSetting];
// 设置是否需要经过滤镜(建议有改动时候再设为YES以便优化效率)
[self.adapter enableFilterEffect:YES];
// 导出编辑后视频
__weak typeof(self) weakSelf = self;
self.exportTask = [self.adapter exportToURL:url progressHandler:^(double progress) {
[weakSelf.delegate exportingWithProgress:progress];
} completion:^(NSURL * _Nonnull url) {
[weakSelf handleExportFinishWithUrl:url error:nil];
completionHandler(url);
} failure:^(NSError * _Nullable error) {
[weakSelf handleExportFinishWithUrl:url error:error];
failHandler(error);
}];
// 取消导出
[self.exportTask cancel];
6. 图片编辑
6.1. 图片编辑功能介绍
图片编辑提供了图片添加滤镜,增加水印等效果。核心类是MDImageEditorAdapter
6.2. 图片编辑
- 初始化
_adapter = [[MDImageEditorAdapter alloc] initWithToken:@"Token"];
- 加载图片
// 加载图片并设置回调,回调函数返回处理完成的结果
[self.adapter loadImage:originImage completionHander:^(CVPixelBufferRef renderedPixelBuffer, NSError * error) {
__strong typeof(self) strongself = weakself;
// save to renderredPixelBuffer
if (strongself.renderedPixelBuffer) {
CVPixelBufferRelease(strongself.renderedPixelBuffer);
strongself.renderedPixelBuffer = NULL;
}
strongself.renderedPixelBuffer = renderedPixelBuffer;
CVPixelBufferRetain(strongself.renderedPixelBuffer);
// show image
[strongself.previewView presentPixelBuffer:renderedPixelBuffer];
}];
- 处理图片
// 开始处理
[self.adapter startProcess];
// 结束处理并释放资源(仅在dealloc中调用一次即可)
[self.adapter stopProcess];
- 切换滤镜
[self.adapter configFilterA:filterA configFilterB:filterB offset:filterOffset];
- 设置美颜参数
MDRMicroSurgeryType:
/* 基础美颜 */
RUDDY; // 红润 0.0 - 1.0
SKIN_WHITENING; // 美白 0.0 - 1.0
SKIN_SMOOTH; // 磨皮 0.0 - 1.0
SHARPEN(SKIN_SHARPEN); // 锐化 0.0 - 1.0
BIG_EYE; // 大眼 0.0 - 1.0
THIN_FACE; // 瘦脸 0.0 - 1.0
/* 微整形 */
NOSE_WIDTH; // 鼻宽 -1.0 - 1.0
FACE_WIDTH; // 脸宽 0.0 - 1.0
JAW_SHAPE; // 削脸 -1.0 - 1.0
CHIN_LENGTH; // 下巴 -1.0 - 1.0;
FOREHEAD; // 额头 -1.0 - 1.0
SHORTEN_FACE; // 短脸 0.0 - 1.0;
EYE_DISTANCE; // 眼距 -1.0 - 1.0
EYESAREA; // 眼袋 0.0 - 1.0
EYE_HEIGHT; // 眼高 0.0 - 1.0
NOSE_SIZE; // 鼻子大小 -1.0 - 1.0
NOSE_LIFT; // 鼻高 -1.0 - 1.0
NOSE_RIDGE_WIDTH; // 鼻梁 -1.0 - 1.0
NOSE_TIP_SIZE; //鼻尖 -1.0 - 1.0
LIP_THICKNESS; //嘴唇厚度 -1.0 - 1.0
MOUTH_SIZE; //嘴唇大小 -1.0 - 1.0
CHEEKBONE_WIDTH; // 颧骨 0.0 - 1.0
JAW2_WIDTH; // 下颌骨 0.0 - 1.0
TEETHWHITEN; // 白牙 0.0 - 1.0
EYEBRIGHTEN; // 亮眼 0.0 - 1.0
NASOLABIALFOLDSAREA;// 祛法令纹 0.0 - 1.0
EYE_TILT; // 眼睛角度 -1.0 - 1.0
/* 美体 */
THIN_BODY; // 瘦身 0.0 - 1.0
LONG_LEG; // 长腿 0.0 - 1.0
// 设置接口(美白)
[self.cameraEngine adjustBeauty:value forKey:SKIN_WHITENING];
/* 对应历史版本旧接口
[self.adapter setSkinSmoothValue:skinSmoothFactor]; // 磨皮, 参数范围0-1
[self.adapter setSkinWhitenValue:skinWhitenFactor]; // 美白, 参数范围0-1
[self.adapter setBeautyBigEyeValue:bigEyeFactor]; // 大眼, 参数范围0-1
[self.adapter setBeautyThinFaceValue:thinFaceFactor]; // 瘦脸, 参数范围0-1
[self.adapter setBeautyThinBodyValue:thinBodyFactor]; // 瘦身, 参数范围0-1
[self.adapter setBeautyLenghLegValue:longLegFactor]; // 长腿, 参数范围0-1 */
- 美妆
XEngineMakeupKey:
/* 美妆 */
MAKEUP_BLUSH; // 腮红 0 - 1
MAKEUP_FACIAL; // 修容 0 - 1
MAKEUP_EYEBROW; // 眼眉 0 - 1
MAKEUP_EYES; // 眼妆 0 - 1
MAKEUP_LIPS; // 口红 0 - 1
MAKEUP_PUPIL; // 瞳孔 0 - 1
/* 风格妆 */
MAKEUP_LUT; // 滤镜 0 - 1
MAKEUP_ALL; // 整装 0 - 1
// 美妆、风格妆
// @params makeupEffect 美妆资源绝对路径
[self.cameraEngine addMakeupEffect:makeupEffect];
// 设置美妆强度
// @params intensity 强度 [0-1]
[self.cameraEngine setMakeupEffectIntensity:1.0 makeupType:(XEngineMakeupKey)makeupType];
// 按美妆子项移除美妆
[self.cameraEngine removeMakeupEffectWithType:(XEngineMakeupKey)makeupType];
// 移除所有美妆效果
[self.cameraEngine removeAllMakeupEffect];
其它功能请参考图片处理接口文档。