RDVECore是銳動推出的無UI,高度抽象化API的視頻編輯SDK,支持如下功能:bash
RDVECore包含了豐富的基礎功能,對於編輯中的視頻、圖片、音樂有各類處理方式,而且能夠根據實際的業務需求,進行搭配組合,全部處理均可以精確到毫秒級,達到最專業的的要求,主要功能以下:
MV MV根據配置資源進行混合以及動畫,加強短視頻效果
濾鏡 RDVEUISDK自己提供豐富的濾鏡效果讓開發者進行選擇,同時用戶還能夠根據本身的需求進行濾鏡擴展。
字幕特效 字幕特效支持在指定位置,指定時間段顯示;實時預覽效果
配音、配樂 支持指定時間段添加配音; 支持配音、配樂與視頻原音比例調節; 支持本地添加更多配樂
截取、分割 支持毫秒級截取、分割視頻; 支持快速預覽截取、分割後視頻
調速 調整視頻的播放速度,快放或者慢放
轉場 支持多種轉場; 支持隨機轉場、指定轉場時長等擴展設置
其它編輯功能 支持多種比例裁剪; 支持90、180、270度旋轉視頻畫面; 支持左右鏡像、上下鏡像; 支持輸出比例調整;架構
實時美顏 能夠在拍攝過程當中實時人臉美膚,提亮、美白等效果,達到人臉美化,同時支持美化程度的調節
人臉貼紙/掛件 支持人臉識別及貼紙/掛件顯示
拍攝自由定義
RDVECore在拍攝過程當中,能夠根據具體的錄製需求,進行自由化的設定,擁有更佳優異的拍攝錄製效果。
多段拍攝 一個視頻能夠分多段次拍攝
攝像頭切換 前、後攝像頭自由切換,中間無卡頓
多比例支持 支持1:1 、9:1六、16:9多個比例錄製
變焦、對焦 經過相應手勢能夠縮放攝像頭採集畫面及清晰度
濾鏡
在拍攝過程當中,除了實時美顏,同時還能夠實時添加濾鏡效果,RDVEUISDK自己提供豐富的濾鏡效果讓開發者進行選擇,同時用戶還能夠根據本身的需求進行濾鏡擴展。
照片 當前攝像頭畫面保存到圖片
RDVECore架構圖:
app
RDVECore簡要流程圖:
ide
SDK支持iOS7.0及以上版本的設備,兼容iPhone、iPad、iPod touch字體
2.2註冊申請AppKey和APPSecret
2.2.1 打開 www.rdsdk.com/ ,在銳動官網首頁選擇登 錄或註冊,新用戶先註冊,老用戶直接登陸。
2.2.2 登陸完成後,進入視頻雲管理 點擊「+新增」,填寫您應 用的名稱等,點擊「提交」,應用建立完成。
2.2.3 建立應用完成後會自動跳轉至我的中心頁面,此時會獲 取到該應用的 AppKey 和 AppSecret。
動畫
2.3.1 添加靜態庫libRDVECore.a和頭文件
ui
2.3.2 添加RDVECore.bundle
atom
2.3.3 工程設置
TARGETS的Deployment Info僅勾選豎屏(Portrait),橫屏(LandscapeLeft、LandscapeRight)不勾選:
url
IOS10適配
在 Info.plist 中 添 加 NSCameraUsageDescription 、
NSMicrophoneUsageDescription、NSPhotoLibraryUsageDescription。
spa
添加引用蘋果官方庫
設置 Other Linker Flags
在 TARGETS->Build Settings->Other Linker Flags 中加入-ObjC。
2.4.1引入頭文件及初始化
#import "RDVECore.h"
/* 初始化對象
APPSecret:(NSString *)appsecret
videoSize:(CGSize)size
fps:(int)fps
resultFail:(void (^)(NSError *error))resultFailBlock;複製代碼
2.4.2構造虛擬視頻並添加到播放器
一、構造一個或多個場景,並設置場景的相應屬性
NSMutableArray scenes = [NSMutableArray new];
RDScene scene = [[RDScene alloc] init];
(設置場景的相應屬性)
[scenes addObject:scene];
二、將場景添加到播放器中
[_videoCoreSDK addScenes:scenes];
三、設置播放器屬性
_videoCoreSDK.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width);
_videoCoreSDK.delegate = self;
_videoCoreSDK.shouldRepeat = YES;
四、構造虛擬視頻
[_videoCoreSDK build];
五、將播放器添加到視圖中
[self.view addSubview:_videoCoreSDK.view];
2.4.3MV
一、初始化MV
NSMutableArray selectMVEffects = [NSMutableArray array];
VVMovieEffect mvEffect = [[VVMovieEffect alloc] init];
[selectMVEffects addObject:mvEffect];
二、設置MV屬性
//MV路徑
@property (nonatomic,strong) NSURL* _Nullable url;
//MV顯示時長
@property (nonatomic,assign) CMTimeRange timeRange;
//MV類型
@property (nonatomic,assign) RDVideoMVEffectType type;
三、將MV添加到播放器中,或者將MV從播放器中移除
1)添加[_videoCoreSDK addMVEffect:selectMVEffects];
2)移除[_videoCoreSDK addMVEffect:nil];
四、從新構造虛擬視頻
[_videoCoreSDK build];
2.4.4配樂
一、初始化配樂
RDMusic music = [[RDMusic alloc] init];
二、設置配樂屬性
/**音樂總時間範圍 /
@property (nonatomic, assign) CMTimeRange timeRange;
/*音樂截取時間範圍 /
@property (nonatomic, assign) CMTimeRange clipTimeRange;
/*音樂名稱 /
@property (nonatomic, strong) NSString *_Nullable name;
/*音量(0.0-1.0),默認爲1.0 /
@property (nonatomic, assign) float volume;
/*是否重複播放 /
@property (nonatomic, assign) BOOL isRepeat;
三、將配樂添加到播放器中,或者將配樂從播放器中移除
1)添加:[_videoCoreSDK addMusic:music];
2)移除:[_videoCoreSDK addMusic:nil];
四、從新構造虛擬視頻
[_videoCoreSDK build];
2.4.5配音
一、初始化配音
NSMutableArray dubbingArr = [NSMutableArray array];
RDMusic music = [[RDMusic alloc] init];
[dubbingArr addObject:music];
二、設置配音屬性:同配樂
三、將配音添加到播放器中,或者將配音從播放器中移除
1)添加:[_videoCoreSDK addDubbingMusics:dubbingArr];
2)移除:[_videoCoreSDK addDubbingMusics:nil];
四、從新構造虛擬視頻
[_videoCoreSDK build];
2.4.6字幕、特效
一、在初始化播放器時設置
_videoCoreSDK.frameLayerBlock = ^(CMTime currentTime, CALayer layer) {
[weakSelf addSubLayerToFront:layer time:currentTime];
};
二、初始化字幕(特效)
NSMutableArray effects = [NSMutableArray array];
RDCaption caption = [[RDCaption alloc] init];
[effects addObject:caption];
三、設置字幕(特效)屬性
/**字幕中心座標點比例 /
@property (nonatomic ,assign) CGPoint captionCenter;
/*字幕寬度點比例 /
@property (nonatomic ,assign) CGFloat widthProportion;
/*字幕幀率 /
@property (nonatomic ,assign) CGFloat fps;
/*字幕時間範圍 /
@property (nonatomic ,assign) CMTimeRange timeRange;
/*字幕旋轉角度 /
@property (nonatomic ,assign) float angle;
/*字幕縮放大小 /
@property (nonatomic ,assign) float scale;
/*id /
@property (nonatomic ,assign) NSInteger pid;
/*貼圖類型 0 帶文字,1 不帶文字 /
@property (nonatomic ,assign) NSInteger type;
/* 字幕圖片文件路徑 /
@property (nonatomic ,copy) NSString *_Nullable path;
/*圖片前綴名字 /
@property (nonatomic ,copy) NSString *_Nullable name;
/*持續時間 /
@property (nonatomic ,assign) float duration;
/*多少圖片 /
@property (nonatomic ,assign) NSInteger count;
/*圖片區域 /
@property (nonatomic ,assign) CGRect frame;
/*原始圖片大小 /
@property (nonatomic ,assign) CGSize size;
/*圖片文字 /
@property (nonatomic ,copy) NSString *_Nullable pText;
/* 文字圖片 /
@property (nonatomic ,strong) UIImage *_Nullable tImage;
/文字字體名稱
/
@property (nonatomic ,copy) NSString _Nullable tFontName;
/文字字體大小
*/
@property (nonatomic ,assign) float tFontSize;
/* 文字旋轉度數 /
@property (nonatomic ,assign) float tAngle;
/*文字顏色 /
@property (nonatomic ,strong) UIColor *_Nullable tColor;
/*文字描邊顏色 /
@property (nonatomic ,strong) UIColor * _Nullable strokeColor;
/*文字描邊寬度 /
@property (nonatomic ,assign) float strokeWidth;
/* 文字區域 /
@property (nonatomic ,assign) CGRect tFrame;
/*文字開始時間 /
@property (nonatomic ,assign) float tBegin;
/*文字結束時間 /
@property (nonatomic ,assign) float tEnd;
/*幀動畫 /
@property (nonatomic ,strong) NSArray *_Nullable frames;
/*時間動畫 /
@property (nonatomic ,strong) NSArray *_Nullable times;
/* 字幕是否支持拉伸 /
@property (nonatomic, assign) BOOL tStretching;
/*字幕拉伸的 /
@property (nonatomic ) UIEdgeInsets edgeInsets;
/*字幕拉伸的 /
@property (nonatomic ) CGRect contentsCenter;
/*音樂 /
@property (nonatomic , strong) RDMusic _Nullable music;
四、初始化CaptionLayer
CaptionLayer captionLayer = [[CaptionLayer alloc] initWithCaption:caption videoSize:videoSize];
2.4.7濾鏡
一、添加全部的濾鏡
NSMutableArray globalFilters = [NSMutableArray array];
1)初始化濾鏡
RDFilter filter = [RDFilter new];
[globalFilters addObject:filter];
2)設置濾鏡屬性
/*濾鏡類型 /
@property (nonatomic,assign)NSInteger type;
/*濾鏡名稱 /
@property (nonatomic,copy )NSString *name;
/*濾鏡acv地址 /
@property (nonatomic,copy )NSString *acvPath;
3)添加全部濾鏡
[_videoCoreSDK addGlobalFilters:globalFilters];
二、設置濾鏡
[_videoCoreSDK setGlobalFilter:selectFilterIndex];
2.4.8倒放
/* 倒序 params: url 視頻源地址
params: outputUrl 輸出路徑 params: timeRange 倒序時間範圍
params: videoSpeed 視頻速度 params: progressBlock 倒序進度回調
params: finishBlock 結束回調 params: failBlock 失敗回調
params: cancel 是否取消 /
outputUrl:(NSURL *)outputUrl
timeRange:(CMTimeRange)timeRange
videoSpeed:(float)speed
progressBlock:(void (^)(NSNumber *prencent))progressBlock
callbackBlock:(void (^)())finishBlock
fail:(void (^)())failBlock複製代碼
cancel:(BOOL *)cancel;2.4.9水印
/**添加水印
/**添加文字水印
/*移除水印 /
/**添加片尾LOGO
/*移除片尾LOGO /
2.4.10獲取縮略圖
/*獲取某個時間點的縮略圖 /
2.4.11導出視頻
/* 導出視頻 params: movieURL 輸出路徑
params: size 分辨率大小 params: bitrate 碼率(例:設置爲5M碼率,傳值爲5)
params: fps 幀率 params: maxExportVideoDuration 最大導出時長 默認爲0 不限制
params: progress 導出進度 params: success 完成
params: fail 失敗 /
size:(CGSize) size
bitrate:(int)bitrate
fps:(int)fps複製代碼
maxExportVideoDuration:(float)maxExportVideoDurationprogress:(void(^)(float))progress
success:(void(^)())success
fail:(void(^)(NSError*))fail;複製代碼
/* 取消導出 /
2.4.12編輯完成後釋放
[_videoCoreSDK stop];
_videoCoreSDK.delegate = nil;
_videoCoreSDK = nil;
2.5.1引入頭文件及初始化
#import "RDCameraManager.h"
/* 初始化對象
APPSecret:(NSString *)appsecret複製代碼
resultFail:(void (^)(NSError *error))resultFailBlock;2.5.2錄製前設置錄製相關參數
/** 錄製以前準備,用於設置錄製相關參數。
superview:(UIView *)superview
bitrate: (int) bitrate
fps: (int) fps
mode: (BOOL) mode
writerSize: (CGSize) size
isFront:(BOOL) isFront
faceU:(BOOL) faceU;複製代碼
//左右滑動錄製預覽視圖時,是否切換濾鏡。默認爲YES(切換)
@property (nonatomic, assign) BOOL swipeScreenIsChangeFilter;
//美顏狀態
@property (nonatomic , assign) BeautifyState beautifyState;
/* 設置對焦圖片 /
2.5.3錄製
/* 啓用預覽 /
/* 關閉預覽 /
/* 開始錄製 /
/* 中止錄製 /
/* 拍照 /
/* 聚焦 /
/** 切換錄製視頻方式
2.5.4錄製回調
/* 滑動切換到的當前濾鏡Index /
/* 聚焦時回調 /
/** 啓用預覽(startCamera)後回調。
/* 當前錄製時間 /
/** 滑動錄製預覽視圖開始
/** 滑動錄製預覽視圖中
/** 滑動錄製預覽視圖結束
/* 錄製開始 /
/* 錄製取消 /
/* 錄製結束 /
2.5.5faceU
//人臉道具貼紙證書
@property (nonatomic , assign) void* faceUAuth;
//人臉道具貼紙證書長度
@property (nonatomic , assign) unsigned int faceUAuthlength;
//瘦臉 0.0~1.0 默認0.68
@property (nonatomic , assign) float cheekThinning;
//大眼 0.0~2.0 默認1.53
@property (nonatomic , assign) float eyeEnlarging;
//美白 0.0~1.0 默認0.48
@property (nonatomic , assign) float colorLevel;
//磨皮 1 2 3 4 5 6 默認3
@property (nonatomic , assign) float blurLevel;
//瘦臉等級 0.0 ~ 1.0 默認1.0
@property (nonatomic , assign) float faceShapeLevel;
//瘦臉類型
@property (nonatomic , assign) float faceShape;
/* 切換FaceUItem /
2.5.6錄製時播放音樂
/*使用音樂路徑 /
/* 播放音樂 rate(極慢:1.0/3.0 慢:1.0/2.0 正常:1.0 快:2.0 極快:3.0) /
/* 暫停音樂 /
/* 中止播放音樂 /
2.5.7濾鏡
/* 添加濾鏡組 /
/* 設置濾鏡 /
/* 移除濾鏡組 /
2.5.8合併及倒序
/* 合併錄製文件 /
progress:(void(^)(NSNumber *progress))progressBlock
finish:(void(^)(NSURL *videourl))finish
fail:(void(^)(NSError *error))fail
cancel:(void(^)())cancel;複製代碼
/* 取消合併 /
/* 倒序 params: url 視頻源地址
params: outputUrl 輸出路徑 params: timeRange 倒序時間範圍
params: progressBlock 倒序進度回調 params: callbackBlock 結束回調
params: failBlock 失敗回調 /
outputUrl:(NSURL *)outputUrl
timeRange:(CMTimeRange)timeRange
progressBlock:(void (^)(NSNumber *prencent))progressBlock
callbackBlock:(void (^)())callbackBlock複製代碼
fail:(void (^)())failBlock;2.5.9獲取帶濾鏡效果的截圖
/* 獲取帶濾鏡的縮略圖 /
+(void) returnImageWith:(UIImage )inputImage
Filter:(RDFilter )obj
withCompletionHandler:(void (^)(UIImage *processedImage))block;
2.5.10錄製完成後釋放 [_cameraManager stopCamera]; [_cameraManager deleteItems]; _cameraManager.delegate = nil; _cameraManager = nil;