锐动IOS带UI视频编辑SDK

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了锐动IOS带UI视频编辑SDK相关的知识,希望对你有一定的参考价值。

编写目的

预期读者:

有视频编辑开发经验或者无经验的,打算或者正在使用“锐动ios带UI视频编辑SDK”的相关工程师。

 iOS软件工程师。

 产品经理。

 QA

 

名词解释

       分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率。常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等。

       宽高比:视频分辨率的宽高比,常见的有16:9,4:3,1:1。锐动视频编辑SDK对各宽高比的视频都支持编辑,导出的默认分辨率是1280x720,宽高比是16:9。

       帧率:每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。

       码率: 数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。

       素材:来自系统相机,其他App,电脑,网络的照片,音乐,视频等。

       视频分割: 把视频分割为若干个片段,可用于从视频中截取一个或者多个精彩瞬间,或者删除不喜欢的片段,分割后的多个片段也可以用于重新调整顺序,视频合并等。

       视频裁切: 从视频画面中裁切出来仅需要的部分,锐动视频编辑SDK针对手机竖屏拍摄的画面,支持动态调整裁切区域,帮助用户不同时间点选择自己需要的画面。

       视频旋转:对视频进行90°,180°,270°旋转,一般用于矫正用户手机上录制的头像横置的视频。

       视频镜像:对视频左右镜像。

       视频变速:对视频播放速度调整,实现慢镜头或者快镜头效果。

       视频配乐:选取本地或者网络音乐作为视频的背景音乐。

       视频配音:通过micphone对视频配音。

       视频字幕:使用文字标注视频。

       视频滤镜:调整视频的画面颜色效果。

       视频特效:在视频里面增加特效动画或声音

       合并转场:两个视频片段之间的衔接效果。

       主题(模版): 应用视频的整体效果方案。

 

 

XCode集成步骤

 

3.1  运行环境

SDK支持Ios8.0及以上版本的设备,兼容iPhone、iPad、iPod touch

 

3.2 注册申请AppKey和APPSecret

1、 打开 http://www.rdsdk.com ,在锐动官网首页选择登 录或注册,新用户先注册,老用户直接登录。 

2、 登录完成后,进入视频云管理 点击“+新增”,填写您应 用的名称等,点击“提交”,应用创建完成。 

3、 创建应用完成后会自动跳转至个人中心页面,此时会获 取到该应用的 AppKey 和 AppSecret。

 

3.3 下载并导入SDK

3.3.1  添加静态库libRDVEUISDK.a和头文件

3.3.2  添加RDVEUISDK.bundle、RDVECore.bundle、VideoRecord.bundle

3.3.3  工程设置

l TARGETS的Deployment Info仅勾选竖屏(Portrait),横屏(LandscapeLeft、LandscapeRight)不勾选:

 

l IOS10适配

 Info.plist 中 添 加 NSCameraUsageDescription 、 

NSMicrophoneUsageDescription、NSPhotoLibraryUsageDescription、NSAppleMusicUsageDescription。 

 

l HTTP协议适配

 Info.plist 中 添 加App Transport Security Settings

l 添加引用苹果官方库

如果录制时使用faceU,还需要引用库Accelerate.framework

l 设置 Other Linker Flags

 TARGETS->Build Settings->Other Linker Flags 中加入-ObjC。 

l 设置Enable Bitcode

 TARGETS->Build Settings->Enable Bitcode设置为No。

 

3.4 集成SDK

3.4.1 引入头文件及初始化

#import "RDVEUISDK.h"

/**  初始化对象

 *

 *  @param appkey          在锐动SDK官网(http://www.rdsdk.com/ )中注册的应用Key。

 *  @param appsecret       在锐动SDK官网(http://www.rdsdk.com/ )中注册的应用秘钥。

 *  @param licenceKey       在锐动SDK官网(http://www.rdsdk.com/ )中注册的licenceKey。

 *  @param resultFailBlock 返回错误信息

 */

- (instancetype) initWithAPPKey:(NSString *)appkey

                       APPSecret:(NSString *)appsecret

LicenceKey:(NSString *)licenceKey

                     resultFail:(RdVEFailBlock )resultFailBlock;

3.4.2 功能设置

/**   视频导出设置

 */

@property (nonatomic,strong) ExportConfiguration     *exportConfiguration;

 

/**   编辑设置

 */

@property (nonatomic,strong) EditConfiguration        * editConfiguration;

 

/**  拍摄功能设置

 */

@property (nonatomic,strong) CameraConfiguration    * cameraConfiguration;

 

3.4.2.1 视频导出设置

/** 设置视频输出最大时长 (单位是秒) 不限制则传0,默认不限制

 */

@property (nonatomic,assign)long int   outputVideoMaxDuration;

 

/** 设置视频输入最大时长 (单位是秒) 不限制则传0,默认不限制

 */

@property (nonatomic,assign)long int   inputVideoMaxDuration;

 

/** 是否禁用片尾

 */

@property (nonatomic,assign)bool    endPicDisabled;

 

/** 片尾显示的用户名

 */

@property (nonatomic,copy)NSString * _Nullable endPicUserName;

 

/** 片尾显示时长(不包括淡入时长)

 */

@property (nonatomic,assign)float    endPicDuration;

 

/** 片尾淡入时长

 */

@property (nonatomic,assign)float    endPicFadeDuration;

 

/** 片尾显示的图片路径

 */

@property (nonatomic,copy)NSString * _Nullable endPicImagepath;

 

/** 是否禁用水印

 */

@property (nonatomic,assign)bool     waterDisabled;

 

/** 文字水印

 */

@property (nonatomic,copy,nullable)NSString *waterText;

 

/** 图片水印

 */

@property (nonatomic,strong,nullable)UIImage *waterImage;

 

/** 显示位置

 */

@property (nonatomic,assign)RDWATERPOSITION  waterPosition;

 

/** 设置视频输出码率 (单位是兆,默认是6M),建议设置大于1M,导出和压缩都生效

 */

@property (nonatomic,assign)float   videoBitRate;

 

/**压缩视频分辨率(调用压缩视频接口生效)

 */

@property (nonatomic,assign)CGSize  condenseVideoResolutionRatio;

 

3.4.2.2 视频编辑设置

/** 向导模式 如果需要自己删除一些功能 则需启用此参数  default false

 */

@property (assign, nonatomic)bool enableWizard;

 

/** 编辑视频所支持的文件类型 (default all)

 */

@property (assign, nonatomic)SUPPORTFILETYPE supportFileType;

3.4.2.2.1 相册界面设置

/** 默认选中视频还是图片

 */

@property (nonatomic,assign) RDDEFAULTSELECTALBUM defaultSelectAlbum;

 

/**选择视频和图片的最大张数

 */

@property (nonatomic,assign) int mediaCountLimit;

 

/**选择视频和图片的最小数

 */

@property (nonatomic,assign) int mediaMinCount;

 

/**启用相册相机 (default true)

 */

@property (nonatomic,assign) bool enableAlbumCamera;

 

 

/**点击相册界面相机按钮回调

 */

@property (nonatomic,copy,nullable) void(^clickAlbumCameraBlackBlock)();

3.4.2.2.2 截取界面设置

/** 截取时间模式

 */

@property (nonatomic,assign) TRIMMODE trimMode;

 

/** 单个时间定长截取:截取时间 默认15s

 */

@property (nonatomic,assign) float trimDuration_OneSpecifyTime;

 

/** 两个时间定长截取:偏小截取时间 默认12s

 */

@property (nonatomic,assign) float trimMinDuration_TwoSpecifyTime;

 

/** 两个时间定长截取:偏大截取时间 默认30s

 */

@property (nonatomic,assign) float trimMaxDuration_TwoSpecifyTime;

 

/** 两个时间定长截取:默认选中小值还是大值

 */

@property (nonatomic,assign) RDdefaultSelectCutMinOrMax  defaultSelectMinOrMax;

 

/** 定长截取时,截取后视频分辨率类型 默认TRIMVIDEOTYPE_ORIGINAL

 *  自由截取时,始终为TRIMVIDEOTYPE_ORIGINAL,该设置无效

 */

@property (nonatomic,assign) TRIMEXPORTVIDEOTYPE trimExportVideoType;

3.4.2.2.3 编辑界面设置

/**单个媒体特效

  */

@property (nonatomic,assign) bool enableSingleSpecialEffects;

 

 

/** 单个媒体调色

 */

@property (nonatomic,assign) bool enableSingleMediaAdjust;

 

/** 单个媒体滤镜 (default true)

 */

@property (nonatomic,assign) bool enableSingleMediaFilter;

/** 截取 (default true)

 */

@property (nonatomic,assign) bool enableTrim;

 

/** 分割 (default true)

 */

@property (nonatomic,assign) bool enableSplit;

/** 裁切 (default true)

 */

@property (nonatomic,assign) bool enableEdit;

 

/** 变速 (default true)

 */

@property (nonatomic,assign) bool enableSpeedcontrol;

 

/** 复制 (default true)

 */

@property (nonatomic,assign) bool enableCopy;

 

/** 调整顺序 (default true)

 */

@property (nonatomic,assign) bool enableSort;

 

/** 调整视频比例 (default true)

 */

@property (nonatomic,assign) bool enableProportion;

 

/** 调整图片显示时长 (default true)

 */

@property (nonatomic,assign) bool enableImageDurationControl;

 

/** 文字版 (default true)

 */

@property (nonatomic,assign) bool enableTextTitle;

 

/** 默认视频输出方式(自动,横屏,1 :1)

 */

@property (nonatomic,assign) RDPROPORTIONTYPE  proportionType;

 

/** 倒放 (default true)

 */

@property (nonatomic,assign) bool enableReverseVideo;

 

/** 草稿 (default false)

 */

@property (nonatomic,assign) bool enableDraft;

3.4.2.2.4 高级编辑界面设置

/** 网络素材分类地址

 */

@property (nonatomic,copy)NSString   * _Nonnull netMaterialTypeURL;

 

/** Music网络资源地址 (需自己构建网络下载API)

 */

@property (nonatomic,copy)NSString    * _Nullable musicResourceURL;

 

/** cloudMusic网络资源地址 (需自己构建网络下载API) default nil

 */

@property (nonatomic,copy)NSString    * _Nullable cloudMusicResourceURL;

/** 音效分类网络资源地址 (需自己构建网络下载API) default nil

 */

@property (nonatomic,copy)NSString    * _Nullable soundMusicTypeResourceURL;

 

/** 音效分类网络资源地址 (需自己构建网络下载API) default nil

 */

@property (nonatomic,copy)NSString    * _Nullable soundMusicResourceURL;

 

/** MV网络资源地址 (需自己构建网络下载API)

 */

@property (nonatomic,copy,nullable)NSString    *mvResourceURL;

 

/** MV网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *newmvResourceURL;

 

/** 音乐网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *newmusicResourceURL;

 

/** 音乐家

 */

@property (nonatomic,copy,nullable)NSString    *newartist;

 

/** 音乐家主页标题

 */

@property (nonatomic,copy,nullable)NSString    *newartistHomepageTitle;

 

/** 音乐家主页Url

 */

@property (nonatomic,copy,nullable)NSString    *newartistHomepageUrl;

 

/** 音乐授权证书标题

 */

@property (nonatomic,copy,nullable)NSString    *newmusicAuthorizationTitle;

 

/** 音乐授权证书Url

 */

@property (nonatomic,copy,nullable)NSString    *newmusicAuthorizationUrl;

 

/** 滤镜网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *filterResourceURL;

 

/** 字幕网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *subtitleResourceURL;

 

/** 贴纸网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *effectResourceURL;

 

/** 特效网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *specialEffectResourceURL;

 

/** 字体网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *fontResourceURL;

 

/** 转场网络资源地址

 */

@property (nonatomic,copy,nullable)NSString    *transitionURL;

 

/** 本地音乐 (default true)

 */

@property (nonatomic,assign) bool enableLocalMusic;

 

/** MV (default true)

 */

@property (nonatomic,assign) bool enableMV;

 

/** 配乐 (default true)

 */

@property (nonatomic,assign) bool enableMusic;

 

/** 变声 (default true)

 */

@property (nonatomic,assign) bool enableSoundEffect;

 

/** 配音 (default true)

 */

@property (nonatomic,assign) bool enableDubbing;

 

/** 转场 (default true)

 */

@property (nonatomic,assign) bool enableTransition;

 

/** 配音类型 (default 方式一(配音不放在配乐里面))

 */

@property (nonatomic,assign) RDDUBBINGTYPE dubbingType;

/** 字幕 (default true)

 */

@property (nonatomic,assign) bool enableSubtitle;

 

/** 滤镜 (default true)

 */

@property (nonatomic,assign) bool enableFilter;

 

/** 贴纸 (default true)

 */

@property (nonatomic,assign) bool enableSticker;

 

/** 特效 (default true)

 */

@property (nonatomic,assign) bool enableEffectsVideo;

 

/** 去水印 (default true)

 */

@property (nonatomic,assign) bool enableDewatermark;

 

/** 片段编辑 (default true)

 */

@property (nonatomic,assign) bool enableFragmentedit;

 

/** 图片动画 (default true)

 */

@property (nonatomic,assign) bool enablePicZoom;

 

/** 背景 (default true)

 */

@property (nonatomic,assign) bool enableBackgroundEdit;

 

/** 封面 (default true)

 */

@property (nonatomic,assign) bool enableCover;

/** 涂鸦 (default true)

 */

@property (nonatomic,assign) bool enableDoodle;

 

/** 进入SDK界面是否需要动画 (default true)

 */

@property (nonatomic,assign) bool presentAnimated;

 

/** 退出SDK界面是否需要动画 (default true)

 */

@property (nonatomic,assign) bool dissmissAnimated;

 

/** MVEffect (default false)

 */

@property (nonatomic,assign) bool enableMVEffect;

 

/** 画中画 (default true)

 */

@property (nonatomic,assign) bool enableCollage;

3.4.2.3 视频录制功能设置

/** 设置输出图像格式,默认为YES

 *  YES:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange

 *  NO:kCVPixelFormatType_32BGRA

 */

@property(nonatomic, assign) bool captureAsYUV;

 

/** 拍摄模式 default CameraModel_Onlyone

 */

@property (nonatomic,assign) CameraModelType              cameraModelType;

 

/** 是否在拍摄完成就保存到相册再返回 default false 该参数只有在 CameraModel_Onlyone 模式下才生效

 */

@property (nonatomic,assign) bool                           cameraWriteToAlbum;

 

/** 前/后置摄像头 default AVCaptureDevicePositionFront

 */

@property (nonatomic,assign) AVCaptureDevicePosition        cameraCaptureDevicePosition;

 

/** 相机的方向 default RecordVideoOrientationAuto

 */

@property (nonatomic,assign) RecordVideoOrientation         cameraRecordOrientation;

 

/** 相机录制大小(正方形录制,非正方形录制)

 */

@property (nonatomic,assign) RecordVideoSizeType            cameraRecordSizeType;

 

/** 录制视频帧率 default 30

 */

@property (nonatomic,assign) int32_t                        cameraFrameRate;

 

/** 录制视频码率 default 4000000

 */

@property (nonatomic,assign) int32_t                        cameraBitRate;

 

/** 录制还是拍照 default RecordTypeVideo

 */

@property (nonatomic,assign) Record_Type                    cameraRecord_Type;

 

/** 视频输出路径

 */

@property (nonatomic,copy,nullable) NSString              *cameraOutputPath;

 

/**录制的视频的大小 (如:{720,1280}) default CGSizeZero

 */

@property (nonatomic,assign) CGSize                         cameraOutputSize;

 

/** 正方形录制时配置按钮的位置(美颜,延时,摄像头切换 三个按钮的位置)

 */

@property (nonatomic,assign) CameraCollocationPositionType  cameraCollocationPosition;

 

/** 正方形录制最大时长(default 10 )

 */

@property (nonatomic,assign) float                          cameraSquare_MaxVideoDuration;

 

/**非正方形录制最大时长 (default 0 ,不限制)

 */

@property (nonatomic,assign) float                          cameraNotSquare_MaxVideoDuration;

 

/**录制最小时长 (default 0 ,不限制 正方形录制和长方形录制都生效)

 */

@property (nonatomic,assign) float                          cameraMinVideoDuration;

 

/** 是否开启滤镜功能(只有在开启Faceu的时候该参数才生效)

 */

@property (nonatomic , assign) bool                         enableFilter;

 

/**人脸道具贴纸

 */

@property (assign, nonatomic) bool                          enableFaceU;

 

/**人脸道具贴纸证书

 */

@property (assign, nonatomic,nonnull) void                  *faceUAuth;

 

/**人脸道具贴纸证书长度

 */

@property (assign, nonatomic)Float64                        lenFaceUAuth;

 

/**是否启用网络下载faceUnity

 */

@property (assign, nonatomic)bool                           enableNetFaceUnity;

 

/**人脸道具贴纸下载路径

 */

@property (copy, nonatomic,nonnull)NSString                 *faceUURL;

 

/** 拍摄类型:可拍摄短视频MV(default true)

 */

@property (nonatomic,assign) bool                           cameraMV;

 

/** 拍摄类型:可拍摄视频(default true)

 */

@property (nonatomic,assign) bool                           cameraVideo;

 

/** 拍摄类型:可拍摄照片(default true)

 */

@property (nonatomic,assign) bool                           cameraPhoto;

 

/** 短视频MV录制最小时长(default 3s )

 */

@property (nonatomic,assign) float                          cameraMV_MinVideoDuration;

 

/** 短视频MV录制最大时长(default 15s )

 */

@property (nonatomic,assign) float                          cameraMV_MaxVideoDuration;

 

/** 从相机进入相册

 */

@property (nonatomic,copy,nonnull) void(^cameraEnterPhotoAlbumCallblackBlock)( );

 

/** 是否隐藏相机进入相册按钮

 */

@property (nonatomic,assign) bool                           hiddenPhotoLib;

 

// faceU美颜设置

/**瘦脸 0.0~1.0     default 0.68

 */

@property (nonatomic , assign) float cheekThinning;

 

 

/**大眼 0.0~2.0     default 1.53

 */

@property (nonatomic , assign) float eyeEnlarging;

 

 

/**美白 0.0~1.0     default 0.48

 */

@property (nonatomic , assign) float colorLevel;

 

/**磨皮 1 2 3 4 5   default 3

 */

@property (nonatomic , assign) float blurLevel;

 

/** 瘦脸等级 0.0 ~ 1.0 默认1.0

 */

@property (nonatomic , assign) float faceShapeLevel;

 

/** 瘦脸类型 0.0 ~ 3.0 默认0.0

 */

@property (nonatomic , assign) float faceShape;

 

/*是否开启使用音乐录制. 如果需要切换音乐请设置好音乐下载路径,不设置则跳转到本地音乐界面 (editConfiguration.cloudMusicResourceURL)

 */

@property (nonatomic, assign) BOOL                  enableUseMusic;

 

/*传入需要录制时播放的音乐

 */

@property (nonatomic, strong) RDMusicInfo          * _Nullable musicInfo;

 

/*是否启用相机水印

 */

@property (nonatomic, assign) BOOL              enabelCameraWaterMark;

/*片头水印时长

 */

@property (nonatomic, assign) float             cameraWaterMarkHeaderDuration;

 

/*片尾水印时长

 */

@property (nonatomic, assign) float             cameraWaterMarkEndDuration;

/*相机水印更新画面回调

 *1:正方形录制,0:非正方形录制*/

 */

@property (nonatomic, copy) void (^cameraWaterProcessingCompletionBlock)(NSInteger type,RecordStatus status, UIView *waterMarkview ,float time);

3.4.2.3.1 启用faceU说明

1、 导入签权证书

2、 导入美颜基础资源:face_beautification.bundle、v3.bundle

3.4.2.3.1.1  开启faceU

rdVESDK.cameraConfiguration.enableFaceU = true;

3.4.2.3.1.2  启用签权证书

    rdVESDK.cameraConfiguration.faceUAuth = &g_faceuAuth_package;

rdVESDK.cameraConfiguration.lenFaceUAuth = sizeof(g_faceuAuth_package);

3.4.2.3.1.3  从网络加载faceUnity道具资源

rdVESDK.cameraConfiguration.enableNetFaceUnity  = true;

rdVESDK.cameraConfiguration.faceUURL = @"http://faceUnity道具资源下载地址";

自定义获取faceUnity道具的url方法,具体参见《3.16.1自定义faceU资源》。

 

3.5 录制视频

/** 录制视频 参数设置(cameraConfiguration)

 *  @param source        源视图控制器

 *  @param callbackBlock 完成录制回调(result :0 表示MV 1表示视频)

 *  @param imagebackBlock 拍照完成回调

 *  @param cancelBlock   取消录制回调

 */

- (void)videoRecordAutoSizeWithSourceController: (UIViewController*)source

                                  callbackBlock: (RdVERecordCallbackBlock)callbackBlock

                                 imagebackBlock: (RdVECallbackBlock)imagebackBlock

                                     faileBlock: (RdVEFailBlock)failBlock

        cancel: (RdVECancelBlock)cancelBlock;

 

3.6 编辑视频

/**   编辑短视频MV

 *

 *  @param viewController    源控制器

 *  @param urlAsset          视频源

 *  @param clipTimeRange     时间段

 *  @param crop              crop范围 默认:CGRectMake(0, 0, 1, 1)

 *  @param outputVideoPath   视频输出路径

 *  @param callbackBlock     完成编辑回调

 *  @param cancelBlock       取消编辑回调

 */

- (void)editVideoWithSuperController:(UIViewController *)viewController

                            urlAsset:(AVURLAsset *)urlAsset

                       clipTimeRange:(CMTimeRange )clipTimeRange

                                crop:(CGRect)crop

                          outputPath:(NSString *)outputVideoPath

                            callback:(RdVECallbackBlock )callbackBlock

cancel:(RdVECancelBlock )cancelBlock;

 

- (void)editVideoWithSuperController:(UIViewController *)viewController

                            urlAsset:(AVURLAsset *)urlAsset

                       clipTimeRange:(CMTimeRange )clipTimeRange

                                crop:(CGRect)crop

                           musicInfo:(RDMusicInfo *)musicInfo

                          outputPath:(NSString *)outputVideoPath

callback:(RdVECallbackBlock )callbackBlock

                        cancel:(RdVECancelBlock )cancelBlock;

 

/**   编辑视频(传入URL数组)

 *

 *  @param viewController    源控制器

 *  @param foldertype        缓存文件夹类型 (Documents、Library、Temp,None)

 *  @param appAlbumCacheName 需扫描的缓存文件夹名称

 *  @param urlsArray         视频/图片路径(NSMutableArray <NSURL*>)如:相册视频 assets-library://asset/asset...

 *  @param outputVideoPath   视频输出路径

 *  @param callbackBlock     完成编辑回调

 *  @param cancelBlock       取消编辑回调

 */

- (void)editVideoWithSuperController:(UIViewController *)viewController

                          foldertype:(FolderType)foldertype

                   appAlbumCacheName:(NSString *)appAlbumCacheName

                           urlsArray:(NSMutableArray *)urlsArray

                          outputPath:(NSString *)outputVideoPath

                            callback:(RdVECallbackBlock )callbackBlock

cancel:(RdVECancelBlock )cancelBlock;

 

- (void)editVideoWithSuperController:(UIViewController *)viewController

                          foldertype:(FolderType)foldertype

                   appAlbumCacheName:(NSString *)appAlbumCacheName

                           urlsArray:(NSMutableArray *)urlsArray

                           musicInfo:(RDMusicInfo *)musicInfo

                          outputPath:(NSString *)outputVideoPath

                            callback:(RdVECallbackBlock )callbackBlock

cancel:(RdVECancelBlock )cancelBlock;

/**   草稿箱

*/

- (void)editDraftWithSuperController:(UIViewController *)viewController

                          outputPath:(NSString *)outputVideoPath

                            callback:(RdVECallbackBlock)callbackBlock

                            failback:(RdVEFailBlock) failback

cancel:(RdVECancelBlock)cancelBlock;

 

 

3.7 自定义相册或是调用系统相册

实现代理方法:

/*

 *如果需要自定义相册则需要实现此函数

 */

- (void)selectVideoAndImageResult:(UINavigationController *)nav callbackBlock:(void (^)(NSMutableArray *lists))callbackBlock;

 

/*

 *如果需要自定义相册则需要实现此函数(添加视频)

 */

- (void)selectVideosResult:(UINavigationController *)nav callbackBlock:(void (^)(NSMutableArray *lists))callbackBlock;

/*

 *如果需要自定义相册则需要实现此函数(添加图片)

 */

- (void)selectImagesResult:(UINavigationController *)nav callbackBlock:(void (^)(NSMutableArray *lists))callbackBlock;

 

以系统相册为例:(需实现以下两个协议:UINavigationControllerDelegate, UIImagePickerControllerDelegate)

进入系统相册:

 

 

 

相册选择完成:

 

3.8 截取视频

/**  截取视频 通过传入视频对象 AVUrlAsset

 *  @param viewController               源控制器

 *  @param title                        导航栏标题

 *  @param backgroundColor              背景色

 *  @param cancelButtonTitle            取消按钮文字

 *  @param cancelButtonTitleColor       取消按钮标题颜色

 *  @param cancelButtonBackgroundColor  取消按钮背景色

 *  @param otherButtonTitle             完成按钮文字

 *  @param otherButtonTitleColor        完成按钮标题颜色

 *  @param otherButtonBackgroundColor   完成按钮背景色

 *  @param urlAsset                     数据源

 *  @param outputVideoPath              视频输出路径

 *  @param callbackBlock                截取完成回调

 *  @param failback                     截取失败回调

 *  @param cancelBlock                  取消截取回调

  */

- (void)trimVideoWithSuperController:(UIViewController *)viewController

                     controllerTitle:(NSString *) title

                     backgroundColor:(UIColor  *) backgroundColor

                   cancelButtonTitle:(NSString *) cancelButtonTitle

              cancelButtonTitleColor:(UIColor  *) cancelButtonTitleColor

         cancelButtonBackgroundColor:(UIColor  *) cancelButtonBackgroundColor

                    otherButtonTitle:(NSString *) otherButtonTitle

               otherButtonTitleColor:(UIColor  *) otherButtonTitleColor

          otherButtonBackgroundColor:(UIColor  *) otherButtonBackgroundColor

                            urlAsset:(AVURLAsset *) urlAsset

                          outputPath:(NSString *) outputVideoPath

                       callbackBlock:(RdVE_TrimAssetCallbackBlock) callbackBlock

                            failback:(RdVEFailBlock       ) failback

cancel:(RdVECancelBlock     ) cancelBlock;

/**  截取视频 通过传入路径 path

 *  @param viewController               源控制器

 *  @param title                        导航栏标题

 *  @param backgroundColor              背景色

 *  @param cancelButtonTitle            取消按钮文字

 *  @param cancelButtonTitleColor       取消按钮标题颜色

 *  @param cancelButtonBackgroundColor  取消按钮背景色

 *  @param otherButtonTitle             完成按钮文字

 *  @param otherButtonTitleColor        完成按钮标题颜色

 *  @param otherButtonBackgroundColor   完成按钮背景色

 *  @param assetPath                    数据源

 *  @param outputVideoPath              视频输出路径

 *  @param callbackBlock                截取完成回调

 *  @param failback                     截取失败回调

 *  @param cancelBlock                  取消截取回调

  */

- (void)trimVideoWithSuperController:(UIViewController *)viewController

                     controllerTitle:(NSString *) title

                     backgroundColor:(UIColor  *) backgroundColor

                   cancelButtonTitle:(NSString *) cancelButtonTitle

              cancelButtonTitleColor:(UIColor  *) cancelButtonTitleColor

         cancelButtonBackgroundColor:(UIColor  *) cancelButtonBackgroundColor

                    otherButtonTitle:(NSString *) otherButtonTitle

               otherButtonTitleColor:(UIColor  *) otherButtonTitleColor

          otherButtonBackgroundColor:(UIColor  *) otherButtonBackgroundColor

                           assetPath:(NSString *) assetPath

                          outputPath:(NSString *) outputVideoPath

                       callbackBlock:(RdVE_TrimVideoPathCallbackBlock) callbackBlock

                            failback:(RdVEFailBlock       ) failback

                              cancel:(RdVECancelBlock     ) cancelBlock;

 

/**设置截取返回类型

 * 此方法点击自定义弹框的按钮时才会被调用

 */

- (void)trimVideoWithType:(RDCutVideoReturnType )type;

 

/**截取视频 开始时间 总长

 */

- (void)Intercept:(NSString *)InPath

        atOutPath:(NSString *)OutPath

      atStartTime:(float) startTime

   atDurationTime:(float) DurationTime

         atAppkey:(NSString *)appKey

      atappSecret:(NSString *)appSecret

atvideoAverageBitRate:(float) videoAverageBitRate

atSuccessCancelBlock:(SuccessCancelBlock)successCancelBlock

atFailCancelBlock:(FailCancelBlock)failCancelBlock;

 

3.9 视频压缩

/**获取视频信息 字典 width height fps bitrate

 *

 */

- (NSDictionary *) getVideoInformation:(AVURLAsset *)urlAsset;

 

/** 压缩视频 参数设置(ExportConfiguration)

 *  @param size            压缩输出分辨率

 *  @param bitrate         压缩输出比特率

 *  @param progressBlock   压缩进度回调

 *  @param callbackBlock   压缩完成回调

 *  @param failBlock       压缩失败回调

 */

- (void)compressVideoAsset:(AVURLAsset *)urlAsset

                outputPath:(NSString *)outputPath

                 startTime:(CMTime )startTime

                   endTime:(CMTime )endTime

                outputSize:(CGSize) size

             outputBitrate:(float) bitrate

                supperView:(UIViewController *)supperView

             progressBlock:(void (^)(float progress))progressBlock

             callbackBlock:(void (^)(NSString *videoPath))callbackBlock

                      fail:(void (^)(NSError *error))failBlock;

/** 取消导出

 */

- (void) compressCancel;

 

3.10 照片电影

3.10.1 API实现(仿Quik)

- (void)pictureMovieWithSuperController_Theme:(UIViewController *)viewController

                                   UrlsArray:(NSMutableArray *)urlsArray

                                  outputPath:(NSString *)outputVideoPath

                                    callback:(RdVECallbackBlock )callbackBlock

                                      cancel:(RdVECancelBlock )cancelBlock;

3.10.2 AE模板

- (void)pictureMovieWithSuperController:(UIViewController *)viewController

                              UrlsArray:(NSMutableArray *)urlsArray

                             outputPath:(NSString *)outputVideoPath

                               callback:(RdVECallbackBlock )callbackBlock

                                 cancel:(RdVECancelBlock )cancelBlock;

 

3.11 创意搞怪小视频

3.11.1 AE模板(简影)

- (void)AEHomeWithSuperController:(UIViewController *)viewController

                       outputPath:(NSString *)outputVideoPath

                         callback:(RdVECallbackBlock )callbackBlock

                           cancel:(RdVECancelBlock )cancelBlock;

3.11.2 字说

- (void)aeTextAnimateWithSuperController:(UIViewController *)viewController

                              outputPath:(NSString *)outputVideoPath

                                callback:(RdVECallbackBlock )callbackBlock

                                  cancel:(RdVECancelBlock )cancelBlock;

 

 

3.12 多格

- (void)dogePuzzleWithSuperController:(UIViewController *)viewController

                                    UrlsArray:(NSMutableArray *)urlsArray

                                   outputPath:(NSString *)outputVideoPath

                                     callback:(RdVECallbackBlock )callbackBlock

cancel:(RdVECancelBlock )cancelBlock;

 

3.13 相册功能(选择视频或图片后返回选中资源)

/**选择视频或图片

 * @param viewController  源控制器

 * @param albumType 选择相册类型(仅选图片,仅选视频,两者皆可)

 * @param callbackBlock 相册选择完成返回一个NSURL数组 NSMutableArray <NSURL *> *List

 * @param cancelBlock 取消选择相册资源

 */

- (BOOL)onRdVEAlbumWithSuperController:(UIViewController *)viewController

                            albumType:(ALBUMTYPE)albumType

                            callBlock:(OnAlbumCallbackBlock) callbackBlock

                          cancelBlock:(RdVECancelBlock) cancelBlock;

 

3.14 导出视频中的音频

3.14.1 无界面

/** 从视频中提取音频

 *params: type                  输出音频类型,目前支持三种(AVFileTypeMPEGLayer3,AVFileTypeAppleM4A,AVFileTypeWAVE)

 *params: videoUrl              视频源地址

 *params: trimStart             从原始视频截取的开始时间 单位:秒 默认 0

 *params: duration              截取的持续时间 默认视频原始时长

 *params: outputFolder          输出文件存放的文件夹路径

 *params: samplerate            输出采样率

 *params: completionHandle      导出回调

 */

+ (void)video2audiowithtype:(AVFileType)type

                   videoUrl:(NSURL*)videoUrl

                  trimStart:(float)start

                   duration:(float)duration

           outputFolderPath:(NSString*)outputFolder

                 samplerate:(int )samplerate

                 completion:(void(^)(BOOL result,NSString*outputFilePath))completionHandle;

3.14.2 有界面

- (void)video2audiowithtype:(UIViewController *)viewController

               atAVFileType:(AVFileType)type

                   videoUrl:(NSURL*)videoUrl

           outputFolderPath:(NSString*)outputFolder

                 samplerate:(int )samplerate

                   callback:(RdVECallbackBlock )callbackBlock

cancel:(RdVECancelBlock )cancelBlock;

 

3.15 小功能

/** 单个媒体编辑

 *

 *  @param viewController    源控制器

 *  @param functionType      编辑类型

 *  @param urlArray          视频/图片路径如:相册视频 assets-library://asset/asset...

 *  @param outputVideoPath   视频输出路径

 *  @param callbackBlock     完成转码回调

 *  @param cancelBlock       取消转码回调

 */

- (void)singleMediaWithSuperController:(UIViewController *)viewController

                          functionType:(RDSingleFunctionType)functionType

                            outputPath:(NSString *)outputVideoPath

                              urlArray:(NSMutableArray <NSURL *>*)urlArray

                              callback:(RdVECallbackBlock)callbackBlock

                                cancel:(RdVECancelBlock)cancelBlock;

 

3.16 自定义资源

3.16.1 自定义faceU资源

获取人脸贴纸资源的 url 需满足以下定义:

请求格式:

参数说明:

正常返回结果:

设置访问http域名白名单:

3.16.2  自定义MV资源

1、通过以下配置启用 MV, 并设置获取 MV 资源的 url

rdVESDK.editConfiguration.enableMV = true;

rdVESDK.editConfiguration.mvResourceURL   = @"http://**";

2、MV中的json配置参照文件:素材管理平台操作手册.doc

3、获取 MV 资源的 url 需满足以下定义:

请求格式:

参数说明:

正常返回结果:

3.16.3  自定义配乐资源

通过以下配置启用自定义配乐 ,并设置获取配乐资源的 url

rdVESDK.editConfiguration.enableMusic = true;

rdVESDK.editConfiguration.musicResourceURL= @"http:// **"; //若不设置 url 自动隐藏该功能

获取配乐资源的 url 需满足以下定义:

请求格式:

参数说明:

正常返回结果:

3.16.4  自定义云音乐资源

通过以下配置启用自定义云音乐,并设置获取云音乐资源的 url

rdVESDK.editConfiguration.enableMusic = true;

rdVESDK.editConfiguration. soundMusicTypeResourceURL= @"http:// **";

rdVESDK.editConfiguration.cloudMusicResourceURL= @"http:// **";//若不设置 url 自动隐藏该功能 

获取云音乐资源的 url 需满足以下定义:

请求格式:

参数说明:

正常返回结果:

3.16.5 自定义字幕、贴纸资源

1、通过以下配置启用自定义字幕、贴纸,并设置获取字幕、贴纸资源的 url

rdVESDK.editConfiguration. enableSubtitle = true;

rdVESDK.editConfiguration. subtitleResourceURL= @"http:// **";//若不设置 url ,则使用默认地址

rdVESDK.editConfiguration. enableSticker= true;

rdVESDK.editConfiguration. effectResourceURL= @"http:// **";//若不设置 url ,则使用默认地址

2、json配置参照文件:素材管理平台操作手册.doc

3.16.6 自定义字体资源

1、设置获取字体资源的 url

rdVESDK.editConfiguration. fontResourceURL= @"http:// **";//若不设置 url ,则使用默认地址

3.16.7 自定义滤镜资源

1、通过以下配置启用自定义滤镜,并设置获取滤镜的 url

rdVESDK.editConfiguration. enableFilter= true;

rdVESDK.editConfiguration. filterResourceURL= @"http:// **";//若不设置 url ,则使用默认地址

3.16.8 自定义转场资源

1、通过以下配置启用自定义转场,并设置获取转场资源的 url

rdVESDK.editConfiguration. enableTransition= true;

rdVESDK.editConfiguration. transitionURL= @"http:// **";//若不设置 url ,则使用默认地址

3.16.9 自定义特效

1、通过以下配置启用自定义特效,并设置获取特效资源的 url

rdVESDK.editConfiguration. enableEffectsVideo = true;

rdVESDK.editConfiguration. specialEffectResourceURL = @"http:// **";//若不设置 url ,则使用默认地址


想要了解更多详细内容请联系QQ:45644590

以上是关于锐动IOS带UI视频编辑SDK的主要内容,如果未能解决你的问题,请参考以下文章

RDVECore来自锐动的无UI,高度抽象化API的视频编辑SDK--IOS版

RDVECore来自锐动的无UI,高度抽象化API的视频编辑SDK

Android视频编辑SDK--RDVECore来自锐动的无UI,高度抽象化API

锐动视频编辑SDK接入说明

iOS视频编辑SDK

锐动SDK应用于行车记录仪