首页 > IT职业 > IT生活 > 锐动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对视频配音。
视频字幕:使用文字标注视频。
视频滤镜:调整视频的画面颜色效果。
视频特效:在视频里面增加特效动画或声音
合并转场:两个视频片段之间的衔接效果。
主题(模版): 应用视频的整体效果方案。
SDK支持Ios8.0及以上版本的设备,兼容iPhone、iPad、iPod touch
1、 打开 http://www.rdsdk.com ,在锐动官网首页选择登 录或注册,新用户先注册,老用户直接登录。
2、 登录完成后,进入视频云管理 点击“+新增”,填写您应 用的名称等,点击“提交”,应用创建完成。
3、 创建应用完成后会自动跳转至个人中心页面,此时会获 取到该应用的 AppKey 和 AppSecret。


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。
#import "RDVEUISDK.h"
- (instancetype) initWithAPPKey:(NSString *)appkey
APPSecret:(NSString *)appsecret
LicenceKey:(NSString *)licenceKey
resultFail:(RdVEFailBlock )resultFailBlock;
@property (nonatomic,strong) ExportConfiguration *exportConfiguration;
@property (nonatomic,strong) EditConfiguration * editConfiguration;
@property (nonatomic,strong) CameraConfiguration * cameraConfiguration;
@property (nonatomic,assign)long int outputVideoMaxDuration;
@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;
@property (nonatomic,assign)float videoBitRate;
@property (nonatomic,assign)CGSize condenseVideoResolutionRatio;
@property (assign, nonatomic)bool enableWizard;
@property (assign, nonatomic)SUPPORTFILETYPE supportFileType;
@property (nonatomic,assign) RDDEFAULTSELECTALBUM defaultSelectAlbum;
@property (nonatomic,assign) int mediaCountLimit;
@property (nonatomic,assign) int mediaMinCount;
@property (nonatomic,assign) bool enableAlbumCamera;
@property (nonatomic,copy,nullable) void(^clickAlbumCameraBlackBlock)();
@property (nonatomic,assign) TRIMMODE trimMode;
@property (nonatomic,assign) float trimDuration_OneSpecifyTime;
@property (nonatomic,assign) float trimMinDuration_TwoSpecifyTime;
@property (nonatomic,assign) float trimMaxDuration_TwoSpecifyTime;
@property (nonatomic,assign) RDdefaultSelectCutMinOrMax defaultSelectMinOrMax;
@property (nonatomic,assign) TRIMEXPORTVIDEOTYPE trimExportVideoType;
@property (nonatomic,assign) bool enableSingleSpecialEffects;
@property (nonatomic,assign) bool enableSingleMediaAdjust;
@property (nonatomic,assign) bool enableSingleMediaFilter;
@property (nonatomic,assign) bool enableTrim;
@property (nonatomic,assign) bool enableSplit;
@property (nonatomic,assign) bool enableEdit;
@property (nonatomic,assign) bool enableSpeedcontrol;
@property (nonatomic,assign) bool enableCopy;
@property (nonatomic,assign) bool enableSort;
@property (nonatomic,assign) bool enableProportion;
@property (nonatomic,assign) bool enableImageDurationControl;
@property (nonatomic,assign) bool enableTextTitle;
@property (nonatomic,assign) RDPROPORTIONTYPE proportionType;
@property (nonatomic,assign) bool enableReverseVideo;
@property (nonatomic,assign) bool enableDraft;
@property (nonatomic,copy)NSString * _Nonnull netMaterialTypeURL;
@property (nonatomic,copy)NSString * _Nullable musicResourceURL;
@property (nonatomic,copy)NSString * _Nullable cloudMusicResourceURL;
@property (nonatomic,copy)NSString * _Nullable soundMusicTypeResourceURL;
@property (nonatomic,copy)NSString * _Nullable soundMusicResourceURL;
@property (nonatomic,copy,nullable)NSString *mvResourceURL;
@property (nonatomic,copy,nullable)NSString *newmvResourceURL;
@property (nonatomic,copy,nullable)NSString *newmusicResourceURL;
@property (nonatomic,copy,nullable)NSString *newartist;
@property (nonatomic,copy,nullable)NSString *newartistHomepageTitle;
@property (nonatomic,copy,nullable)NSString *newartistHomepageUrl;
@property (nonatomic,copy,nullable)NSString *newmusicAuthorizationTitle;
@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;
@property (nonatomic,assign) bool enableLocalMusic;
@property (nonatomic,assign) bool enableMV;
@property (nonatomic,assign) bool enableMusic;
@property (nonatomic,assign) bool enableSoundEffect;
@property (nonatomic,assign) bool enableDubbing;
@property (nonatomic,assign) bool enableTransition;
@property (nonatomic,assign) RDDUBBINGTYPE dubbingType;
@property (nonatomic,assign) bool enableSubtitle;
@property (nonatomic,assign) bool enableFilter;
@property (nonatomic,assign) bool enableSticker;
@property (nonatomic,assign) bool enableEffectsVideo;
@property (nonatomic,assign) bool enableDewatermark;
@property (nonatomic,assign) bool enableFragmentedit;
@property (nonatomic,assign) bool enablePicZoom;
@property (nonatomic,assign) bool enableBackgroundEdit;
@property (nonatomic,assign) bool enableCover;
@property (nonatomic,assign) bool enableDoodle;
@property (nonatomic,assign) bool presentAnimated;
@property (nonatomic,assign) bool dissmissAnimated;
@property (nonatomic,assign) bool enableMVEffect;
@property (nonatomic,assign) bool enableCollage;
@property(nonatomic, assign) bool captureAsYUV;
@property (nonatomic,assign) CameraModelType cameraModelType;
@property (nonatomic,assign) bool cameraWriteToAlbum;
@property (nonatomic,assign) AVCaptureDevicePosition cameraCaptureDevicePosition;
@property (nonatomic,assign) RecordVideoOrientation cameraRecordOrientation;
@property (nonatomic,assign) RecordVideoSizeType cameraRecordSizeType;
@property (nonatomic,assign) int32_t cameraFrameRate;
@property (nonatomic,assign) int32_t cameraBitRate;
@property (nonatomic,assign) Record_Type cameraRecord_Type;
@property (nonatomic,copy,nullable) NSString *cameraOutputPath;
@property (nonatomic,assign) CGSize cameraOutputSize;
@property (nonatomic,assign) CameraCollocationPositionType cameraCollocationPosition;
@property (nonatomic,assign) float cameraSquare_MaxVideoDuration;
@property (nonatomic,assign) float cameraNotSquare_MaxVideoDuration;
@property (nonatomic,assign) float cameraMinVideoDuration;
@property (nonatomic , assign) bool enableFilter;
@property (assign, nonatomic) bool enableFaceU;
@property (assign, nonatomic,nonnull) void *faceUAuth;
@property (assign, nonatomic)Float64 lenFaceUAuth;
@property (assign, nonatomic)bool enableNetFaceUnity;
@property (copy, nonatomic,nonnull)NSString *faceUURL;
@property (nonatomic,assign) bool cameraMV;
@property (nonatomic,assign) bool cameraVideo;
@property (nonatomic,assign) bool cameraPhoto;
@property (nonatomic,assign) float cameraMV_MinVideoDuration;
@property (nonatomic,assign) float cameraMV_MaxVideoDuration;
@property (nonatomic,copy,nonnull) void(^cameraEnterPhotoAlbumCallblackBlock)( );
@property (nonatomic,assign) bool hiddenPhotoLib;
// faceU美颜设置
@property (nonatomic , assign) float cheekThinning;
@property (nonatomic , assign) float eyeEnlarging;
@property (nonatomic , assign) float colorLevel;
@property (nonatomic , assign) float blurLevel;
@property (nonatomic , assign) float faceShapeLevel;
@property (nonatomic , assign) float faceShape;
@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;
*/
@property (nonatomic, copy) void (^cameraWaterProcessingCompletionBlock)(NSInteger type,RecordStatus status, UIView *waterMarkview ,float time);
1、 导入签权证书
2、 导入美颜基础资源:face_beautification.bundle、v3.bundle
rdVESDK.cameraConfiguration.enableFaceU = true;
rdVESDK.cameraConfiguration.faceUAuth = &g_faceuAuth_package;
rdVESDK.cameraConfiguration.lenFaceUAuth = sizeof(g_faceuAuth_package);
rdVESDK.cameraConfiguration.enableNetFaceUnity = true;
rdVESDK.cameraConfiguration.faceUURL = @"http://faceUnity道具资源下载地址";
自定义获取faceUnity道具的url方法,具体参见《3.16.1自定义faceU资源》。
- (void)videoRecordAutoSizeWithSourceController: (UIViewController*)source
callbackBlock: (RdVERecordCallbackBlock)callbackBlock
imagebackBlock: (RdVECallbackBlock)imagebackBlock
faileBlock: (RdVEFailBlock)failBlock
cancel: (RdVECancelBlock)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;
- (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;
实现代理方法:
- (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)
进入系统相册:


相册选择完成:

- (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;
- (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;
- (NSDictionary *) getVideoInformation:(AVURLAsset *)urlAsset;
- (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;
- (void)pictureMovieWithSuperController_Theme:(UIViewController *)viewController
UrlsArray:(NSMutableArray *)urlsArray
outputPath:(NSString *)outputVideoPath
callback:(RdVECallbackBlock )callbackBlock
cancel:(RdVECancelBlock )cancelBlock;
- (void)pictureMovieWithSuperController:(UIViewController *)viewController
UrlsArray:(NSMutableArray *)urlsArray
outputPath:(NSString *)outputVideoPath
callback:(RdVECallbackBlock )callbackBlock
cancel:(RdVECancelBlock )cancelBlock;
- (void)AEHomeWithSuperController:(UIViewController *)viewController
outputPath:(NSString *)outputVideoPath
callback:(RdVECallbackBlock )callbackBlock
cancel:(RdVECancelBlock )cancelBlock;
- (void)aeTextAnimateWithSuperController:(UIViewController *)viewController
outputPath:(NSString *)outputVideoPath
callback:(RdVECallbackBlock )callbackBlock
cancel:(RdVECancelBlock )cancelBlock;
- (void)dogePuzzleWithSuperController:(UIViewController *)viewController
UrlsArray:(NSMutableArray *)urlsArray
outputPath:(NSString *)outputVideoPath
callback:(RdVECallbackBlock )callbackBlock
cancel:(RdVECancelBlock )cancelBlock;
- (BOOL)onRdVEAlbumWithSuperController:(UIViewController *)viewController
albumType:(ALBUMTYPE)albumType
callBlock:(OnAlbumCallbackBlock) callbackBlock
cancelBlock:(RdVECancelBlock) cancelBlock;
+ (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;
- (void)video2audiowithtype:(UIViewController *)viewController
atAVFileType:(AVFileType)type
videoUrl:(NSURL*)videoUrl
outputFolderPath:(NSString*)outputFolder
samplerate:(int )samplerate
callback:(RdVECallbackBlock )callbackBlock
cancel:(RdVECancelBlock )cancelBlock;
- (void)singleMediaWithSuperController:(UIViewController *)viewController
functionType:(RDSingleFunctionType)functionType
outputPath:(NSString *)outputVideoPath
urlArray:(NSMutableArray <NSURL *>*)urlArray
callback:(RdVECallbackBlock)callbackBlock
cancel:(RdVECancelBlock)cancelBlock;
获取人脸贴纸资源的 url 需满足以下定义:
请求格式:

参数说明:

正常返回结果:

设置访问http域名白名单:

1、通过以下配置启用 MV, 并设置获取 MV 资源的 url
rdVESDK.editConfiguration.enableMV = true;
rdVESDK.editConfiguration.mvResourceURL = @"http://**";
2、MV中的json配置参照文件:素材管理平台操作手册.doc
3、获取 MV 资源的 url 需满足以下定义:
请求格式:

参数说明:

正常返回结果:

通过以下配置启用自定义配乐 ,并设置获取配乐资源的 url
rdVESDK.editConfiguration.enableMusic = true;
rdVESDK.editConfiguration.musicResourceURL= @"http:// **"; //若不设置 url 自动隐藏该功能
获取配乐资源的 url 需满足以下定义:
请求格式:

参数说明:

正常返回结果:

通过以下配置启用自定义云音乐,并设置获取云音乐资源的 url
rdVESDK.editConfiguration.enableMusic = true;
rdVESDK.editConfiguration. soundMusicTypeResourceURL= @"http:// **";
rdVESDK.editConfiguration.cloudMusicResourceURL= @"http:// **";//若不设置 url 自动隐藏该功能
获取云音乐资源的 url 需满足以下定义:
请求格式:

参数说明:

正常返回结果:

1、通过以下配置启用自定义字幕、贴纸,并设置获取字幕、贴纸资源的 url
rdVESDK.editConfiguration. enableSubtitle = true;
rdVESDK.editConfiguration. subtitleResourceURL= @"http:// **";//若不设置 url ,则使用默认地址
rdVESDK.editConfiguration. enableSticker= true;
rdVESDK.editConfiguration. effectResourceURL= @"http:// **";//若不设置 url ,则使用默认地址
2、json配置参照文件:素材管理平台操作手册.doc
1、设置获取字体资源的 url
rdVESDK.editConfiguration. fontResourceURL= @"http:// **";//若不设置 url ,则使用默认地址
1、通过以下配置启用自定义滤镜,并设置获取滤镜的 url
rdVESDK.editConfiguration. enableFilter= true;
rdVESDK.editConfiguration. filterResourceURL= @"http:// **";//若不设置 url ,则使用默认地址
1、通过以下配置启用自定义转场,并设置获取转场资源的 url
rdVESDK.editConfiguration. enableTransition= true;
rdVESDK.editConfiguration. transitionURL= @"http:// **";//若不设置 url ,则使用默认地址
1、通过以下配置启用自定义特效,并设置获取特效资源的 url
rdVESDK.editConfiguration. enableEffectsVideo = true;
rdVESDK.editConfiguration. specialEffectResourceURL = @"http:// **";//若不设置 url ,则使用默认地址
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2551/viewspace-2824088/ ,如需转载,请注明出处,否则将追究法律责任。