RecordSDK 接口文档

短视频模块SDK, 用于录制视频,视频编辑,添加特效等功能。RecordSDK核心四大模块主要由基础模块,录制模块,视频编辑模块,图片编辑模块四大模块构成。包含了需要用到的工具类,滤镜,视频导出组件等重要基础功能。录制模块主要包含了视频录制相关操作,已经相关特效处理功能。视频编辑与图片编辑模块主要包含了视频(图片)编辑相关操作以及相关特效处理功能。

1. 基本功能

1.1. 初始化SDK (MDRecordManager)

  • 设置APPID
  + (void)initSDK:(NSString *)appID;
  • 拉取配置文件
  + (void)fetchConfigUsingAppId
  • 获取SDK version
  + (NSString *)version;
  • 获取Token
  + (NSString *)appToken;
  • 配置打点服务 (2.3.0 新增)
  // 注册logger
  + (void)configLogger:(id<MDRIRecordLogger>)logger;
  • 输出SDK日志
  + (void)enableConsoleLog:(BOOL)enable;

2. 新版录制模块 MDRCameraEngine 替代 MDRecordingAdapter

  • 新版录制模块基本重构之后,对MDRecordingAdapter的接口做了部分调整.

  • 初始化

  - (instancetype)initWithDelegate:(id<MDRCameraEngineDelegate> _Nullable)delegate;
  • 录制设置
  /// 开始录制
  /// 1.默认视频编码配置:
  /// 视频编码类型,default: MDRVideoEncodeType_H264
  /// 视频编码分辨率,default: {720, 1280}
  /// 视频码率,单位bit,default: 5 * 1000 * 1000 bit
  /// 视频编码裁剪模式,default:MDRVideoEncodeScaleMode_ResizeAspectFill
  /// 视频编码帧率,default:和采集帧率保持一致
  /// 2.默认音频编码配置:
  /// 音频编码类型,default: MDRAudioEncodeType_AAC
  /// 音频采样信息,default: {sampleRate: 44100, sampleFormat: MDRAudioSampleFormatType_S16, channelCount: 1}
  /// 音频码率,单位bit,default: 256 * 1000 bit
  - (BOOL)startRecording;

  ///  开始录制
  /// @param flag  录制选项
  - (BOOL)startRecordingWithFlag:(MDRRecordingFlagOption)flag;
  ///  开始录制
  /// @param flag  录制选项
  /// @param encodeParams 编码参数配置,更多参数配置请参考 MDRCommonDefine.h
  /// 例如:
  /// NSMutableDictionary *encodeParams = [[NSMutableDictionary alloc] init];
  /// encodeParams[MDRVideoEncodeFrameRateKey] = @15;      //15FPS
  /// encodeParams[MDRVideoEncodeBitRateKey] = @5000000;    //5M bps
  /// encodeParams[MDRVideoEncodeScaleModeKey] = @(MDRVideoEncodeScaleMode_Fit);
  - (BOOL)startRecordingWithFlag:(MDRRecordingFlagOption)flag
                andEncodeParams:(NSDictionary * _Nullable)encodeParams;

  /// 开始录制
  /// @param flag 录制选项
  /// @param speedVaryFactor 变速因子 取值范围0.2 - 4.0 默认值为1
  /// @param encodeParams 编码参数配置
  - (BOOL)startRecordingWithFlag:(MDRRecordingFlagOption)flag
                  speedVaryFactor:(CGFloat)speedVaryFactor
                  andEncodeParams:(NSDictionary * _Nullable)encodeParams;
  • 视频录制相关属性
  /// 拍摄器的预览视图
  @property (nonatomic, strong, readonly) UIView<MLPixelBufferDisplay> *previewView;

  @property (nonatomic, strong) MDRCapturePreviewConfig *previewConfig;
  /// 录制最大时长 (总时长,非单段),单位 秒 default: 60s
  @property (nonatomic, assign) NSTimeInterval recordMaxDuration;

  /// 单段录制最短时长,单位 秒  default: 1s
  @property (nonatomic, assign) NSTimeInterval segmentMinDuration;

  /// 是否存在变速片段
  @property (nonatomic, assign, readonly) BOOL hasPerSpeedEffect;

  /// 取值范围0.2 - 4.0 默认值为1, 只影响即将录制的片段
  @property (nonatomic, assign) CGFloat speedVaryFactor;
  /// 是否保存原始视频, YES 表明保存原始视频, NO 表示保存美颜后视频。 默认为NO
  @property (nonatomic, assign) BOOL saveOrigin;
  @property (nonatomic, assign) BOOL shouldRecordAudio;
  @property (nonatomic, assign) BOOL shouldReverseVideoSample;
  /// 采样帧率,默认30FPS,导出帧率默认和采样帧率一致
  @property (nonatomic, assign) NSInteger captureFrameRate;

  /// 使用固定帧率进行渲染
  @property (nonatomic, assign, getter=isFixedFPS) BOOL fixedFPS;

  /// 当前采集设备类型
  @property (nonatomic, assign, readonly) MDRCaptureDeviceType currentDeviceType;

  /// 当前的设备能力描述
  @property (nonatomic, strong, readonly) MDRCaptureDeviceCapability *currentDeviceCapability;

  /// 当前放大的倍数
  @property (nonatomic, assign, readonly) CGFloat currentVideoZoomFactor;

  @property (nonatomic, assign, readonly) MDRCameraEngineState engineState;

  /// 录制片段数组
  @property (nonatomic, assign, readonly) NSArray<MDRMediaSegmentInfo *> *segmentInfos;

  /// 当前录制的总时长
  @property (nonatomic, assign, readonly) NSTimeInterval currentRecordingDuration;

  /// 变速后实际展示总时长
  @property (nonatomic, assign, readonly) NSTimeInterval currentRecordingPresentDuration;
  /// 是否正在合成视频
  @property (nonatomic, assign, readonly) BOOL stopMerge;
  /// 闪光灯
  @property (nonatomic, assign) MDRecordCaptureFlashMode flashMode;
  /// 闪光灯模式
  - (NSArray *)supportFlashModes;
  /// 设置背景音乐
  @property (nonatomic, strong, nullable) AVAsset *backgroundAudio;

  ///  是否准备开始播放配乐
  @property (nonatomic, assign, readonly) BOOL isReadyToPlayMusic;

  /// 屏幕旋转方向
  @property (nonatomic, assign) UIDeviceOrientation outputOrientation;

  /// 控制是否屏蔽自动配置audioSession,如果屏蔽会影响声音的采集。
  /// fix : 主要是为了修复在录制过程中采集外放音频的音量过小的问题,建议在startCapture前调用
  @property (nonatomic, assign) BOOL autoConfigAudioSessionDisable;
  • 滤镜相关
  /// 设置滤镜
  /// @param filter 滤镜对象
  - (void)configCurrentFilter:(MDRecordFilter *)filter;

  /// 切换滤镜(用于左右/上下滑动滤镜时使用)
  /// @param filterA  滤镜a
  /// @param filterB 滤镜b
  /// @param offset 所占百分比
  - (void)configFilterA:(MDRecordFilter *)filterA configFilterB:(MDRecordFilter *)filterB offset:(float)offset;

  /// 切换美颜/滤镜贴纸。     待完善:如果decoration里有美颜,和默认的美颜之间的设置逻辑
  /// @param decoration FDKDecoration对象
  - (void)updateDecoration:(FDKDecoration *)decoration;

  /// 移除美颜/滤镜贴纸
  - (void)removeDecoration;
  • 美颜/美体相关接口
  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;
  NASOLABIALFOLDSAREA;        // 祛法令纹  0.0 - 1.0
  EYE_TILT;                   // 眼睛角度         -1.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

  /* 美体 */
  THIN_BODY;          // 瘦身              0.0 - 1.0
  LONG_LEG;           // 长腿              0.0 - 1.0

  // 设置美颜-微整形 参见 MDRRenderBeautyKey
  - (void)adjustBeauty:(CGFloat)value forKey:(MDRMicroSurgeryType)key;


  /* 设置美体 */
  /// @param value 取值范围0-1
  - (void)setBeautyThinBodyValue:(float)value;

  /// 设置长腿值
  /// @param value 取值范围0-1
  - (void)setBeautyLenghLegValue:(float)value;

  /*  历史版本旧接口

  /// 设置美白值
  /// @param value 取值范围0-1
  - (void)setSkinWhitenValue:(float)value;

  /// 设置红润值
  /// @param value 取值范围0-1
  - (void)setSkinRuddyValue:(float)value;

  /// 设置磨皮值
  /// @param value 取值范围0-1
  - (void)setSkinSmoothValue:(float)value;

  /// 设置大眼值
  /// @param value 取值范围0-1
  - (void)setBeautyBigEyeValue:(float)value;

  /// 设置瘦脸值
  /// @param value 取值范围0-1
  - (void)setBeautyThinFaceValue:(float)value;

  /// 设置瘦身值
  /// @param value 取值范围0-1
  - (void)setBeautyThinBodyValue:(float)value;

  /// 设置长腿值
  /// @param value 取值范围0-1
  - (void)setBeautyLenghLegValue:(float)value;  
  */
  • 美妆新接口(2.5.0 以上版本)
  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 美妆资源路径
  - (void)addMakeupEffect:(NSString *)makeupEffect;

  /// 设置美妆强度
  /// @params intensity 强度 [0-1]
  /// @params makeupType 美妆子项类型
  - (void)setMakeupEffectIntensity:(CGFloat)intensity makeupType:(XEngineMakeupKey)makeupType;

  /// 按美妆子项移除美妆
  /// @params makeupType 美妆子项类型
  - (void)removeMakeupEffectWithType:(XEngineMakeupKey)makeupType;

  /// 移除所有美妆效果
  - (void)removeAllMakeupEffect;

  /// 美妆效果是否生效
  - (BOOL)isMakeupEffectActive;
  • 显示原图
  // 设置渲染模块状态  NO : 显示原图
  - (void)setRenderStatus:(BOOL)status;
  • 引擎相关:
  /// 启动3D引擎
  /// @param path
  - (void)runXESEngineWithDecorationRootPath:(NSString *)path;

  ******************给引擎传递事件******************************
  - (BOOL)hitTestTouch:(CGPoint)point withView:(UIView *)view;

  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

  - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
  • 算法数据相关
  /// 是否开启光膀子检测
  /// @param enable rue 开启  false 不开启
  - (void)activateBarenessDetectorEnable:(BOOL)enable;

  /// 视频帧,脸部,身体数据回调
  @property (nonatomic, copy) void(^ _Nullable faceFeatureHandler)(CVPixelBufferRef _Nonnull pixelbuffer, NSArray<MMFaceFeature *> * _Nullable    faceFeatures, NSArray<MMBodyFeature *> * _Nullable bodyFeatures)
  DEPRECATED_MSG_ATTRIBUTE("use didOutputFaceFeatureInfo");

  /// 人脸关键信息回调
  /// @param cameraEngineC引擎对象
  /// @param faceFeatureInfo 人脸特征信息
  - (void)cameraEngine:(MDRCameraEngine *)cameraEngine didOutputFaceFeatureInfo:(MDRFaceFeatureInfo *)faceFeatureInfo;

  /**
    是否使用AI美颜功能

    x.x.x版本以后可用      2.2.9版本建议使用useAIBigEyeThinFace
                        useAISkinWhiten  useAISkinSmooth 代替
    */

  /// 是否使用AI美颜功能   待完善:  建议iOS 10以上开启,还是只能iOS10以上开启?
  ///  2.2.9版本建议使用useAIBigEyeThinFace useAISkinWhiten  useAISkinSmooth 代替
  @property (nonatomic, assign) BOOL canUseAIBeautySetting;

  /// 是否启用瘦身长腿功能
  @property (nonatomic, assign) BOOL canUseBodyThinSetting;

  /// 是否检测到人脸
  @property (nonatomic, readonly) BOOL isFaceCaptured;

3. 录制模块 MDRecordingAdapter(即将废弃, 由MDRCameraEngine替代)

3.1. 基本设置

  • 设置生成视屏编码格式, 参数参考 AVVideoCodecType, 需要在setupRecorder之前调用
  - (void)setVideoCodecKey:(AVVideoCodecType)codeckey;
  • 设置生成视频码率, 单位为M. 默认值为 5.0 * 1024 * 1024, 需要在 setupRecorder 之前调用
  - (void)setVideoBitRate:(float)bitrate;
  • 设置生成视频帧率, 默认为30帧. 需要在 setupRecorder 之前调用
  - (void)setVideoFrameRate:(NSInteger)frameRate;
  • 设置生成视频分辨率, 当分辨率与视频大小不一致时候,以等比填充方式导出。需要在setupRecorder之前调用
  - (void)setVideoResolution:(CGSize)resolution;
  • 设置生成视频填充模式(等比适应/等比填充/拉伸),参数参考 AVVideoScalingModeKey, 需要在setupRecorder之前调用
  - (void)setVideoScaleMode:(NSString *)scaleMode;
  • 设置摄像头采样分辨率, 参考 AVCaptureSessionPreset, 默认为 AVCaptureSessionPreset1280x720, 需要在 setupRecorder 之前调用
  - (void)setCameraPreset:(AVCaptureSessionPreset)preset;
  • 设置摄像头初始位置, 默认为 AVCaptureDevicePositionFront. 需要在 setupRecorder 之前调用
  - (void)setCameraPosition:(AVCaptureDevicePosition)position;
  • 设置摄像头采样帧率 (iPhone 6 默认为15, iphone 6s及以上默认为30). 需要在 setupRecorder 之前调用 (2.2.3 新增)
  - (void)setCameraFrameRate:(NSInteger)frameRate;
  • 初始化相机, 注意: 除上述函数,其余函数均需在setupRecorder之后调用
  - (void)setupRecorder;
  • 获取显示视图
  @property (nonatomic, strong, readonly) UIView<MLPixelBufferDisplay> *previewView;
  • 设置最大录制时长
  - (void)setMaxRecordDuration:(NSTimeInverval)duration;
  • 设置最小录制时长
  - (void)setMinRecordDuration:(NSTimeInterval)duration;
  • 获取录制最大时长
  - (NSTimeInterval)recordDuration;
  • 麦克风初始是否启用/禁用. (需要在 setupRecorder 之前调用)
  @property (nonatomic, assign) BOOL shouldRecordAudio; (2.2.2 新增)

  - (void)disableAudioRecording; (删除)
  • 麦克风启用/禁用 (2.2.2 新增)
// enable: YES 启用, NO 禁用
  - (void)enableAudioRecording:(BOOL)enable;
  • 获取水平镜像输出流, YES 输出水平镜像数据流,NO返回非水平镜像数据流 (2.2.10新增)
  - (void)enableReverseVideoSampleBuffer:(BOOL)enable;

3.2. 新增美妆接口(旧美妆接口废弃不可用)

  • 添加美妆素材

  /// 美妆、风格妆
  /// 添加美妆子项或整装风格妆
  /// @params makeupEffect 美妆资源路径
  - (void)addMakeupEffect:(NSString *)makeupEffect;
  • 移除单个美妆素材
  /// 按美妆子项移除美妆
  /// @params makeupType 美妆子项类型
  - (void)removeMakeupEffectWithType:(XEngineMakeupKey)makeupType;
  • 移除全部美妆素材
  /// 移除所有美妆效果
  - (void)removeAllMakeupEffect;

3.3. 录制操作

  • 调整焦距 factor 在 1 - 6 之取值,最大支持6倍放大
  - (void)setVideoZoomFactor:(CGFloat)factor;
- (CGFloat)videoZoomFactor;
  • 设置闪光灯模式
// 是否支持闪光灯
  - (BOOL)hasFlash;

// 闪光灯模式
- (NSArray *)supportFlashModes;

// 设置闪光灯模式
  @property (nonatomic, assign) MDRecordCaptureFlashMode flashMode;
  • 设置曝光补偿 (范围 -3.0 - 3.0) (2.3.2新增)
  - (void)updateExposureTargetBias:(float)bias;
  • 是否存在相机输入源
  - (BOOL)hasVideoInput;
  • 切换摄像头
  - (void)switchCameraPosition;
  • 获取当前摄像头位置
  @property (nonatomic, assign, readonly) AVCaptureDevicePosition cameraPosition;
  • 摄像头聚焦, 输入实际点击Camera显示View的坐标值
  - (void)focusCameraInPoint:(CGPoint)pointInCamera;
  • 开启预览
  - (void)startCapturing;
  • 暂停预览
  - (void)pauseCapturing;
  • 结束预览
  - (void)stopCapturing;
  • 拍照
  - (void)takePhoto;
  • 拍照回调
// 即将开始拍照
  @property (nonatomic, copy) void (^captureStillImageWillHandler)(void);

// 拍照结果回调
  @property (nonatomic, copy) void (^captureStillImageHandler)(UIImage *image);
  • 设置设备方向
  @property (nonatomic, assign) UIDeviceOrientation outputOrientation;
  • 是否保存原始视频, YES 表明保存原始视频, NO 表示保存美颜后视频。 默认为NO
  @property (nonatomic, assign) BOOL saveOrigin;
  • 是否可以录制
  - (BOOL)canStartRecording;
  • 开始录制
  - (void)startRecording;
  • 完成一段录制
  - (void)pauseRecording;
  • 取消当前段录制
  - (void)cancelRecording;
  • 结束录制
  - (void)stopVideoCaptureWithOutputURL:(NSURL *)URL
                      completionHandler:(void (^)(NSURL *videoFileURL, NSError *error))completionHandler;
  • 获得分段数量
  - (NSInteger)savedSegmentCount;
  • 删除最后一个分段
  - (void)deleteLastSavedSegment;
  • 重置录制操作(移除所有已录制的视频片段以及录制状态)
  - (void)resetRecorder;
  • 清除暂存文件
  - (void)cleanStashFile;
  • 是否正在录制
  @property (nonatomic, readonly) BOOL isRecording;
  • 获取当前录制时长
@ property (nonatomic, readonly) NSTimeInterval currentRecordingDuration;
  • 获取变速后实际展示时长
  @property (nonatomic, readonly) NSTimeInterval currentRecordingPresentDuration;
  • 是否正在合成视频
  @property (nonatomic, assign, readonly) BOOL stopMerge;
  • 录制进度回调
  @property (nonatomic, copy) void (^recordProgressChangedHandler)(double progress);
  • 到达最大录制时长回调
  @property (nonatomic, copy) void (^recordDurationReachedHandler)(void);
  • 导出视频进度回调
  @property (nonatomic, copy) void (^completeProgressUpdateHandler)(double progress);
  • 录制片段增加/删除
  @property (nonatomic,copy) void (^recordSegmentsChangedHandler)(NSArray *durations, NSArray *presentDurations, BOOL valid , MDRecordSegmentStatus segmentStatus)
  • 设置滤镜切换动画方向(横向或者纵向), 需要在 setupRecorder 之前调用
  - (void)configSlidingFilterMode:(MDRGPUImageSlidingFilterMode)mode;
  • 切换滤镜(有动画)
  - (void)configFilterA:(MDRecordFilter *)filterA configFilterB:(MDRecordFilter *)filterB offset:(float)offset;
  • 切换滤镜(无动画)
  - (void)configCurrentFilter:(MDRecordFilter *)filter;
  • 滤镜链插槽,canUseAIBeautySetting 为 false 有效。每次配置decoration后调用一次,不可重复调用
  - (void)configDecorationFilterAttachment:(MDGPUImageMediaFiltersAttachment *)filtersAttachment;
  • 增加美颜滤镜/贴纸
  - (void)updateDecoration:(FDKDecoration *)decoration;
  • 移除美颜/贴纸
  - (void)removeDecoration;
  • 调整贴纸自带音效音量, 范围 0.0 - 1.0
  - (void)adjustStikcerVolume:(float)volume;
  • 光膀子检测
  // 是否开启光膀子检测
  - (void)activateBarenessDetectorEnable:(BOOL)enable;
  // 是否存在光膀子
  - (BOOL)hasDetectorBareness;
  // 发现光膀子时候的回调
  - (void)setDetectBareness:(void (^)(void))detectBareness;
  • 是否使用AI美颜功能 (iOS 10以上开启)
  @property (nonatomic, assign) BOOL canUseAIBeautySetting;
  • 是否启用AI美颜的大眼瘦脸(默认关闭)(2.2.9新增)
  @property (nonatomic, assign) BOOL useAIBigEyeThinFace;
  • 是否启用AI美颜的美白(默认关闭)(2.2.9新增)
  @property (nonatomic, assign) BOOL useAISkinWhiten;
  • 是否启用AI美颜的磨皮(默认关闭)(2.2.9新增)
  @property (nonatomic, assign) BOOL useAISkinSmooth;
  • 是否启用瘦身长腿功能
  @property (nonatomic, assign) BOOL canUseBodyThinSetting;
  • 是否检测到人脸
  @property (nonatomic, readonly) BOOL isFaceCaptured;
  • 重置检测器状态
  - (void)resetState;
  • 清除贴纸缓存
  - (void)clean;
  • 向滤镜链中添加自定义滤镜
  - (void)addCustomFilter:(GPUImageOutput<GPUImageInput> *)filter;
  - (void)removeCustomFilter:(GPUImageOutput<GPUImageInput> *)filter;
  • 配乐
// 音乐资源
  @property (nonatomic, strong, nullable) AVAsset *backgroundAudio;
  • 美颜/美体(已废弃,使用新接口替代)

    // 美颜设置
    - (void)setBeautyConfiguration:(CXBeautyConfiguration *)config;
    // 美白
    - (void)setSkinWhitenValue:(float)value;
    // 磨皮
    - (void)setSkinSmoothValue:(float)value;
    // 大眼
    - (void)setBeautyBigEyeValue:(float)value;
    // 瘦脸
    - (void)setBeautyThinFaceValue:(float)value;
    // 瘦身
    - (void)setBeautyThinBodyValue:(float)value;
    // 长腿
    - (void)setBeautyLenghLegValue:(float)value;
    
  • 启用3D引擎

  - (void)runXESEngineWithDecorationRootPath:(NSString *)path;
  • 变速
  // 设置变速因子 (0.2 - 4.0)
  - (void)setNextRecordSegmentSpeedVaryFactor:(CGFloat)factor;
  // 获取当前变速因子
  - (CGFloat)nextRecordSegmentSpeedVaryFactor;
  // 当前段是否允许变速
  - (void)speedVaryShouldAllow:(BOOL)isAllow;
  // 当前段是否存在变速效果
  - (BOOL)hasPerSpeedEffect;
  • 美妆(已废弃,使用新接口替代)
 /**
  启用美妆功能

  @param enable YES启用,NO禁用
  */
 - (void)enableMakeup:(BOOL)enable;

 /**
  增加美妆效果

  @param resouceURL 资源文件路径
  @return 该效果identifier
  */
 - (NSString *)addMakeUpEffectWithResourceURL:(NSURL *)resouceURL;

 /**
  根据identifier移除美妆效果

  @param identifiter 要移除的美妆效果的identifier
  */
 - (void)removeMakeUpEffectWithIdentifier:(NSString *)identifiter;

 /**
  移除所有的美妆效果
  */
 - (void)removeAllMakeUpEffect;

 /**
  调整美妆效果程度

  @param intensity 程度(0-1)
  @param identifier 美妆效果
  */
 - (void)setIntensity:(CGFloat)intensity forIdentifiler:(NSString *)identifier;

 /** 
  是否启用背景模糊

  @param enable YES启用,NO禁用
  */
 - (void)enableBackgroundBlur:(BOOL)enable;

 /**
  设置背景模糊效果

  @param mode 背景模糊样式
  */
 - (void)setBackgroundBlurMode:(CXBackgroundBlurMode)mode;

 // 背景模糊程度(0-1)
 - (void)setBackgroundBlurIntensity:(CGFloat)intensity;
  • 添加/移除礼物 ((2.2.0)新增)(2.5.0 废弃)

  • 实时获取视频流 (2.2.2 新增)

  @property (nonatomic, copy, nullable) void(^cameraDidOutputVideoSampleBuffer)(CMSampleBufferRef sampleBuffer);
  • 实时获取音频流 (2.2.0 新增)
  @property (nonatomic, copy, nullable) void(^cameraDidOutputAudioSampleBuffer)(CMSampleBufferRef sampleBuffer);

4. 视频编辑模块 MDVideoEditorAdapter

4.1. 视频编辑模块基本设置

  • 自动合成
// 默认为NO,当置为YES时候,调用 `loadVideo` 方法会自动调用 `compositeVideoWithError:`方法合成视频
  @property (nonatomic, assign) BOOL autoComposite;
  • 加载视频, 如果autoCompositeNO, 则需要调用compositeVideoWithError:之后生效; 若autoCompositeYES则自动生效
  - (void)loadVideo:(AVAsset *)asset;
  • 视频裁剪, 需要调用compositeVideoWithError:之后生效
  - (void)setVideoTimeRange:(CMTimeRange)timeRange;
  • 设置变速效果, 需要调用compositeVideoWithError:之后生效
  - (void)setTimeRangeMappingEffects:(NSArray<id<MLTimeRangeMappingEffect>> *)timeRangeMappingEffects;
  • 这是重复片段, 需要调用compositeVideoWithError:之后生效
  - (void)setMediaSourceRepeatRange:(CMTimeRange)timeRange;
  • 设置配乐, 需要调用compositeVideoWithError:之后生效
  @property (nonatomic, strong, nullable) NSURL *backgroundAudioURL;
  • 裁剪配乐, 需要调用compositeVideoWithError:之后生效
  @property (nonatomic, assign) CMTimeRange backgroundAudioRange;
  • 设置变换矩阵, 默认为视频轨道的 preferredTransform. 需要调用 compositeVideoWithError 后生效
  - (void)setVideoPerferredTransform:(CGAffineTransform)videoPerferredTransform;
  • 设置原音量 范围 0.0 - 1.0, 有配乐时,默认0.5; 无配乐时默认 1.0. 需要调用 compositeVideoWithError: 生效量
  - (void)setSourceVolume:(float)volume;
  • 设置配乐音量 范围 0.0 - 1.0, 默认0.5. 需要调用 compositeVideoWithError: 生效
  - (void)setBackgroundMusicVolume:(float)volume;
  • 设置视频显示效果
  - (void)setVideoGravity:(AVLayerVideoGravity)videoGravity;
  • 合成视频
  - (BOOL)compositeVideoWithError:(NSError **)error;
  • 更新音频音量
  - (void)updateAudioMix;

4.2. 播放控制

  • 开始播放
  - (void)play;
  • 停止播放
  - (void)stop;
  • 暂停播放
  - (void)pause;
  • 重新开始播放
  - (void)replay;
  • 获得视频展示页面
  @property (nonatomic, readonly) UIViewController *playerViewController;
  • 获取播放器
  @property (nonatomic, readonly) AVPlayer *player;
  • 是否正在播放
  @property (nonatomic, readonly) BOOL isPlaying;
  • seek到某一时间点
  - (void)seekTime:(float)time;
  • 获取总时长
  - (NSTimeInverval)duration;
  • 获得当前播放时间
  - (NSTimeInterval)getCurrentPlayTime;
  • 设置播放器刷新频率(默认30帧每秒)
  - (void)setPlayerPerferredFPS:(int)fps;
  • 获得视频渲染frame
  @property (nonatomic, readonly) CGRect videoRenderFrame;
  • 获得当前合成的视频
  @property (nonatomic, readonly) AVComposition *composition;
  • 等待视频渲染队列中所有任务完成
  - (void)waitUntilAllOperationsAreFinished;
  • 播放结束
  @property (nonatomic, copy) void(^ _Nullable playToEndTime)(AVPlayer *player);
  • 播放进度
  @property (nonatomic, copy) void(^ _Nullable playerPeriodicTimeCallback)(CMTime time);
  • 切换滤镜(无动画)
  - (void)configCurrentFilter:(MDRecordFilter *)filter;
  • 切换滤镜(无动画)
  - (void)configFilterA:(MDRecordFilter *)filterA configFilterB:(MDRecordFilter *)filterB offset:(float)offset;
  • 翻转特效滤镜
  - (void)setReverse:(BOOL)reverse;
  • 添加特效滤镜
  - (void)addSpecialFilter:(id<MDRTimeFilter>)newTarget timeRange:(CMTimeRange)range;
  /* 废弃接口 */
  // - (void)addSpecialFilter:(GPUImageOutput<GPUImageInput, MDSpecialFilterLifeStyleProtocol> *)newTarget timeRange:(CMTimeRange)range;
  • 移除最后一个特效滤镜
  - (void)deleteLastSpecialFilter;
  • 移除所有特效滤镜
  - (void)deleteAllSpecialFilters;
  • 更新某时刻特效滤镜起作用是时段
  - (void)updateCurrentFilterWithTime:(CMTime)time timeRange:(CMTimeRange)timeRange;
  • 获得当前所有添加的特效滤镜
  - (NSArray<id<MDRTimeFilter>>*)specialFilters;
  /* 废弃接口 */
  - (NSArray<GPUImageOutput<GPUImageInput, MDSpecialFilterLifeStyleProtocol> *> *)specialFilters;
  • 是否有添加特效滤镜
  - (BOOL)hasSpecialFilter;
  • 添加动态贴纸
  - (void)addDynamicSticker:(MDRecordDynamicSticker *)dynamicSticker;
  • 删除动态贴纸
  - (void)removeDynamicSticker:(MDRecordDynamicSticker *)dynamicSticker;
  • 增加美颜滤镜(2.5.0 以上直接使用美颜新接口)
  - (void)updateDecoration:(FDKDecoration *)decoration;
  • 移除美颜(2.5.0 以上直接使用美颜新接口)
  - (void)removeDecoration;
  • 基础美颜 微整形 美体
  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;
  NASOLABIALFOLDSAREA;        // 祛法令纹  0.0 - 1.0
  EYE_TILT;                   // 眼睛角度         -1.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

  /* 美体 */
  THIN_BODY;                  // 瘦身             0.0 - 1.0
  LONG_LEG;                   // 长腿             0.0 - 1.0
  // 设置美颜-微整形 参见 MDRRenderBeautyKey
  - (void)adjustBeauty:(CGFloat)value forKey:(MDRMicroSurgeryType)key;

  /* 历史版本旧接口
  // 美白
  - (void)setSkinWhitenValue:(float)value;
  // 磨皮
  - (void)setSkinSmoothValue:(float)value;
  // 大眼
  - (void)setBeautyBigEyeValue:(float)value;
  // 瘦脸
  - (void)setBeautyThinFaceValue:(float)value;
  // 瘦身值
  - (void)setBeautyThinBodyValue:(float)value;
  //长腿值
  - (void)setBeautyLenghLegValue:(float)value;
  */
  • 美妆新接口(2.5.0 以上版本)
  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 美妆资源路径
  - (void)addMakeupEffect:(NSString *)makeupEffect;

  /// 设置美妆强度
  /// @params intensity 强度 [0-1]
  /// @params makeupType 美妆子项类型
  - (void)setMakeupEffectIntensity:(CGFloat)intensity makeupType:(XEngineMakeupKey)makeupType;

  /// 按美妆子项移除美妆
  /// @params makeupType 美妆子项类型
  - (void)removeMakeupEffectWithType:(XEngineMakeupKey)makeupType;

  /// 移除所有美妆效果
  - (void)removeAllMakeupEffect;

  /// 美妆效果是否生效
  - (BOOL)isMakeupEffectActive;
  • 获取当前涂鸦图片
  @property (nonatomic, readonly) UIImage *mosaicCanvasImage;
  • 设置涂鸦或者马赛克
  - (void)setGraffitiCanvasImage:(UIImage * _Nullable)graffitiCanvasImage mosaicCanvasImage:(UIImage * _Nullable)mosaicCanvasImage;
  • 添加自定义滤镜(废弃)
  - (void)addCustomFilter:(GPUImageOutput<GPUImageInput> *)filter;
  - (void)removeCustomFilter:(GPUImageOutput<GPUImageInput> *)filter;

4.3. 视频导出

  • 图片融合
  @property (nonatomic, strong) UIImage * _Nullable overlayImage;
  • 设置导出码率
  @property (nonatomic, assign) float targetBitRate;
  • 设置导出分辨率
  @property (nonatomic, assign) CGSize presentationSize;
  • 设置导出帧率
  @property (nonatomic, assign) NSInteger targetFrameRate;
  • 设置视频Perferred Transform 矩阵. (已在2.2.4版本后弃用, 请参考setVideoPerferredTransform:方法)
@property (nonatomic, assign) CGAffineTransform videoPerferredTransform;
  • 设置是否使用滤镜效果
  - (void)enableFilterEffect:(BOOL)enable;
  • 开始导出
  - (id<MDCancellable>)exportToURL:(NSURL *)url
                 progressHandler:(void(^ _Nullable)(double progress))progressHandler
                      completion:(void(^ _Nullable)(NSURL *url))completion
                         failure:(void(^ _Nullable)(NSError * _Nullable error))failure;
  • 美妆(旧版接口已废弃)
/**
 启用美妆功能

 @param enable YES启用,NO禁用
 */
- (void)enableMakeup:(BOOL)enable;

/**
 增加美妆效果

 @param resouceURL 资源文件路径
 @return 该效果identifier
 */
- (NSString *)addMakeUpEffectWithResourceURL:(NSURL *)resouceURL;

/**
 根据identifier移除美妆效果

 @param identifiter 要移除的美妆效果的identifier
 */
- (void)removeMakeUpEffectWithIdentifier:(NSString *)identifiter;

/**
 移除所有的美妆效果
 */
- (void)removeAllMakeUpEffect;

/**
 调整美妆效果程度

 @param intensity 程度(0-1)
 @param identifier 美妆效果
 */
- (void)setIntensity:(CGFloat)intensity forIdentifiler:(NSString *)identifier;

@end

@interface MDVideoEditorAdapter (MDRBackgroundBlur)

/**
 是否启用背景模糊

 @param enable YES启用,NO禁用
 */
- (void)enableBackgroundBlur:(BOOL)enable;

/**
 设置背景模糊效果

 @param mode 背景模糊样式
 */
- (void)setBackgroundBlurMode:(CXBackgroundBlurMode)mode;

// 背景模糊程度(0-1)
- (void)setBackgroundBlurIntensity:(CGFloat)intensity;

5. 图片编辑模块 (MDImageEditorAdapter)

5.1. 图片编辑模块基本设置

  • 加载图片
  - (void)loadImage:(UIImage *)image completionHander:(void(^)(CVPixelBufferRef _Nullable, NSError * _Nullable))completion;
  • 更新加载图片
  - (void)reloadImage:(UIImage *)image;
  • 处理图片
  - (void)startProcess;
  • 停止处理并释放资源
  - (void)stopProcess;
  • 切换滤镜(无动画)
  - (void)configCurrentFilter:(MDRecordFilter *)filter;
  • 切换滤镜(无动画)
  - (void)configFilterA:(MDRecordFilter *)filterA configFilterB:(MDRecordFilter *)filterB offset:(float)offset;
  • 增加美颜滤镜(2.5.0 以上直接使用美颜新接口)
  - (void)updateDecoration:(FDKDecoration *)decoration;
  • 移除美颜(2.5.0 以上直接使用美颜新接口)
  - (void)removeDecoration;
  • 基础美颜 微整形 美体
  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;
  NASOLABIALFOLDSAREA;        // 祛法令纹  0.0 - 1.0
  EYE_TILT;                   // 眼睛角度         -1.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

  /* 美体 */
  THIN_BODY;                  // 瘦身              0.0 - 1.0
  LONG_LEG;                   // 长腿              0.0 - 1.0
  // 设置美颜-微整形 参见 MDRRenderBeautyKey
  - (void)adjustBeauty:(CGFloat)value forKey:(MDRMicroSurgeryType)key;

  /* 历史版本旧接口
  // 美白
  - (void)setSkinWhitenValue:(float)value;
  // 磨皮
  - (void)setSkinSmoothValue:(float)value;
  // 大眼
  - (void)setBeautyBigEyeValue:(float)value;
  // 瘦脸
  - (void)setBeautyThinFaceValue:(float)value;
  // 瘦身
  - (void)setBeautyThinBodyValue:(float)value;
  // 长腿
  - (void)setBeautyLenghLegValue:(float)value;
  */
  • 美妆新接口(2.5.0 以上版本)
  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 美妆资源路径
  - (void)addMakeupEffect:(NSString *)makeupEffect;

  /// 设置美妆强度
  /// @params intensity 强度 [0-1]
  /// @params makeupType 美妆子项类型
  - (void)setMakeupEffectIntensity:(CGFloat)intensity makeupType:(XEngineMakeupKey)makeupType;

  /// 按美妆子项移除美妆
  /// @params makeupType 美妆子项类型
  - (void)removeMakeupEffectWithType:(XEngineMakeupKey)makeupType;

  /// 移除所有美妆效果
  - (void)removeAllMakeupEffect;

  /// 美妆效果是否生效
  - (BOOL)isMakeupEffectActive;
  • 添加自定义滤镜(废弃)
  - (void)addCustomFilter:(GPUImageOutput<GPUImageInput> *)filter;
  - (void)removeCustomFilter:(GPUImageOutput<GPUImageInput> *)filter;

6. 影集模块(2.5.0废弃)

6.1. 影集导出 MDGPUImageAlbumMovieExport

  • 初始化
  - (instancetype)initWithItems:(NSArray<MDPictureInputItem *> *)items
                   sizeInPixels:(CGSize)sizeInPixels
                     audioAsset:(AVAsset * _Nullable)asset
                       audioMix:(AVAudioMix * _Nullable)audioMix
  • 设置动画效果
  @property (nonatomic, strong) MDAlbumPlayerAnimationKey animationType;
  • 设置导出路径
  @property (nonatomic, copy) NSURL *exportURL
  • 设置导出分辨率
  @property (nonatomic, readonly) CGSize preferedSize;
  • 获取进度值
  @property(readonly, nonatomic) float progress;
  • 设置代理
  @property (readwrite, nonatomic, assign, nullable) id <MDGPUImageAlbumMovieExportDelegate>delegate;
  • 导出视频
  - (void)exportVideo;
  • 取消导出
  - (void)cancel;
Copyright © momo 2019 all right reserved,powered by Gitbook修订时间: 2021-11-24 10:49:42

results matching ""

    No results matching ""