1 编写目的
预期读者:
有视频编辑开发经验或者无经验的,打算或者正在使用“锐动iOS带UI视频编辑SDK”的相关工程师。
iOS软件工程师。
产品经理。
QA
2 名词解释
分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率。常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等。
宽高比:视频分辨率的宽高比,常见的有16:9,4:3,1:1。锐动视频编辑SDK对各宽高比的视频都支持编辑,导出的默认分辨率是1280x720,宽高比是16:9。
帧率:每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。
码率: 数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。
素材:来自系统相机,其他App,电脑,网络的照片,音乐,视频等。
视频分割: 把视频分割为若干个片段,可用于从视频中截取一个或者多个精彩瞬间,或者删除不喜欢的片段,分割后的多个片段也可以用于重新调整顺序,视频合并等。
视频裁切: 从视频画面中裁切出来仅需要的部分,锐动视频编辑SDK针对手机竖屏拍摄的画面,支持动态调整裁切区域,帮助用户不同时间点选择自己需要的画面。
视频旋转:对视频进行90°,180°,270°旋转,一般用于矫正用户手机上录制的头像横置的视频。
视频镜像:对视频左右镜像。
视频变速:对视频播放速度调整,实现慢镜头或者快镜头效果。
视频配乐:选取本地或者网络音乐作为视频的背景音乐。
视频配音:通过micphone对视频配音。
视频字幕:使用文字标注视频。
视频滤镜:调整视频的画面颜色效果。
视频特效:在视频里面增加特效动画或声音
合并转场:两个视频片段之间的衔接效果。
主题(模版): 应用视频的整体效果方案。
3 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