RDVECore來自銳動的無UI,高度抽象化API的視頻編輯SDK--IOS版

RDVECore功能概述

RDVECore是銳動推出的無UI,高度抽象化API的視頻編輯SDK,支持如下功能:bash

1.1豐富的編輯功能

RDVECore包含了豐富的基礎功能,對於編輯中的視頻、圖片、音樂有各類處理方式,而且能夠根據實際的業務需求,進行搭配組合,全部處理均可以精確到毫秒級,達到最專業的的要求,主要功能以下:
MV MV根據配置資源進行混合以及動畫,加強短視頻效果
濾鏡 RDVEUISDK自己提供豐富的濾鏡效果讓開發者進行選擇,同時用戶還能夠根據本身的需求進行濾鏡擴展。
字幕特效 字幕特效支持在指定位置,指定時間段顯示;實時預覽效果
配音、配樂 支持指定時間段添加配音; 支持配音、配樂與視頻原音比例調節; 支持本地添加更多配樂
截取、分割 支持毫秒級截取、分割視頻; 支持快速預覽截取、分割後視頻
調速 調整視頻的播放速度,快放或者慢放
轉場 支持多種轉場; 支持隨機轉場、指定轉場時長等擴展設置
其它編輯功能 支持多種比例裁剪; 支持90、180、270度旋轉視頻畫面; 支持左右鏡像、上下鏡像; 支持輸出比例調整;架構

1.2完善的視頻拍攝功能

實時美顏 能夠在拍攝過程當中實時人臉美膚,提亮、美白等效果,達到人臉美化,同時支持美化程度的調節
人臉貼紙/掛件 支持人臉識別及貼紙/掛件顯示
拍攝自由定義
RDVECore在拍攝過程當中,能夠根據具體的錄製需求,進行自由化的設定,擁有更佳優異的拍攝錄製效果。
多段拍攝 一個視頻能夠分多段次拍攝
攝像頭切換 前、後攝像頭自由切換,中間無卡頓
多比例支持 支持1:1 、9:1六、16:9多個比例錄製
變焦、對焦 經過相應手勢能夠縮放攝像頭採集畫面及清晰度
濾鏡
在拍攝過程當中,除了實時美顏,同時還能夠實時添加濾鏡效果,RDVEUISDK自己提供豐富的濾鏡效果讓開發者進行選擇,同時用戶還能夠根據本身的需求進行濾鏡擴展。
照片 當前攝像頭畫面保存到圖片
RDVECore架構圖:
app

RDVECore簡要流程圖:
ide

2.1 運行環境

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下載並導入SDK

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

添加引用蘋果官方庫


若是錄製時使用faceU,還須要引用庫Accelerate.framework

設置 Other Linker Flags

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

2.4編輯視頻

2.4.1引入頭文件及初始化

#import "RDVECore.h"
/* 初始化對象

  • @param appkey 在銳動SDK官網(www.rdsdk.com/ )中註冊的應用Key。
  • @param appsecret 在銳動SDK官網(www.rdsdk.com/ )中註冊的應用祕鑰。
  • @param size 視頻分辨率
  • @param fps 視頻幀率(1-30)
  • @param resultFailBlock 初始化失敗的回調[error:初始化失敗的錯誤碼]
    */
    • (instancetype) initWithAPPKey:(NSString *)appkey
      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];

  • videoSize:初始化播放器時,設置的視頻分辨率
    五、在字幕(特效)的顯示範圍(timeRange)內,將captionLayer添加到一、中的layer上。
    具體參照RDVEUISDK。

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 是否取消 /

  • (void)exportReverseVideo:(NSURL *)url
    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水印
/**添加水印

  • @param image 水印圖片
  • @param point 水印在視頻中相對於左上角的位置(值爲:0.0~1.0)
  • @param scale 水印的縮放比例,默認爲1(圖片的原始大小)
    */
    • (void) addWaterMark:(UIImage *)image withPoint:(CGPoint)point scale:(CGFloat)scale;

/**添加文字水印

  • @param waterText 水印文字
  • @param waterColor 水印文字的顏色
  • @param waterFont 水印文字的字體
  • @param point 水印在視頻中相對於左上角的位置(值爲:0.0~1.0)
    */
    • (void) addWaterMark:(NSString )waterText color:(UIColor )waterColor font:(UIFont *)waterFont withPoint:(CGPoint)point;

/*移除水印 /

  • (void)removeWaterMark;

/**添加片尾LOGO

  • @param logoImage LOGO圖片
  • @param userName 用戶名
  • @param showDuration 展現時長
  • @param fadeDuration 淡入時長
    */
    • (void) addEndLogoMark:(UIImage )logoImage userName:(NSString )userName showDuration:(float)showDuration fadeDuration:(float)fadeDuration;

/*移除片尾LOGO /

  • (void)removeEndLogoMark;

2.4.10獲取縮略圖
/*獲取某個時間點的縮略圖 /

  • (UIImage*)getImageAtTime:(CMTime) outputTime scale:(float) scale;

2.4.11導出視頻
/* 導出視頻 params: movieURL 輸出路徑
params: size 分辨率大小 params: bitrate 碼率(例:設置爲5M碼率,傳值爲5)
params: fps 幀率 params: maxExportVideoDuration 最大導出時長 默認爲0 不限制
params: progress 導出進度 params: success 完成
params: fail 失敗 /

  • (void)exportMovieURL:(NSURL*) movieURL
    size:(CGSize) size
             bitrate:(int)bitrate
                 fps:(int)fps複製代碼
    maxExportVideoDuration:(float)maxExportVideoDuration
    progress:(void(^)(float))progress
             success:(void(^)())success
                fail:(void(^)(NSError*))fail;複製代碼

/* 取消導出 /

  • (void)cancelExportMovie:(void(^)())cancelBlock;

2.4.12編輯完成後釋放
[_videoCoreSDK stop];
_videoCoreSDK.delegate = nil;
_videoCoreSDK = nil;

2.5錄製視頻

2.5.1引入頭文件及初始化

#import "RDCameraManager.h"
/* 初始化對象

  • @param appkey 在銳動SDK官網(www.rdsdk.com/ )中註冊的應用Key。
  • @param appsecret 在銳動SDK官網(www.rdsdk.com/ )中註冊的應用祕鑰。
  • @param resultFailBlock 初始化失敗的回調[error:初始化失敗的錯誤碼]
    */
    • (instancetype) initWithAPPKey:(NSString *)appkey
      APPSecret:(NSString *)appsecret複製代碼
      resultFail:(void (^)(NSError *error))resultFailBlock;

2.5.2錄製前設置錄製相關參數
/** 錄製以前準備,用於設置錄製相關參數。

  • @param frame 錄製預覽視圖位置大小
  • @param superview 源視圖控制器
  • @param bitrate 錄製碼率
  • @param fps 錄製幀率
  • @param mode 錄製視頻方式:YES:正方形 NO:全屏
  • @param size 錄製視頻分辨率
  • @param isFront 是不是前置攝像頭錄製
  • @param faceU 是否使用faceU
    */
    • (void) prepareRecordWithFrame:(CGRect)frame
      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;

/* 設置對焦圖片 /

  • (void) setfocus;

2.5.3錄製
/* 啓用預覽 /

  • (void) startCamera;

/* 關閉預覽 /

  • (void) stopCamera;

/* 開始錄製 /

  • (void) beginRecording;

/* 中止錄製 /

  • (void) stopRecording;

/* 拍照 /

  • (void) takePhoto:(int)orientation block:(void(^)(UIImage* image)) func;

/* 聚焦 /

  • (void) focus:(UITapGestureRecognizer *)tap;

/** 切換錄製視頻方式

  • @parma mode:YES:正方形 NO:全屏
  • @parma frame:錄製預覽視圖位置大小
    */
    • (void) changeMode:(BOOL) mode cameraScreenFrame:(CGRect)frame;

2.5.4錄製回調
/* 滑動切換到的當前濾鏡Index /

  • (void) sendFilterIndex:(NSInteger) index;

/* 聚焦時回調 /

  • (void) tapTheScreenFocus;

/** 啓用預覽(startCamera)後回調。

  • 可用於收到此回調前,界面上錄製相關按鈕不可用。
    */
    • (void) cameraScreenDid;

/* 當前錄製時間 /

  • (void) currentTime:(float) time;

/** 滑動錄製預覽視圖開始

  • @params swipDirection (0 :左劃 1:右劃)
    */
    • (void) swipeScreenBegin:(NSInteger)swipDirection;

/** 滑動錄製預覽視圖中

  • @param percent 滑動動預覽視圖中的位置
  • @param swipDirection (0 :左劃 1:右劃)
    */
    • (void) swipeScreenChanging:(float)percent swipDirection:(NSInteger)swipDirection;

/** 滑動錄製預覽視圖結束

  • @params swipDirection (0 :左劃 1:右劃)
    */
    • (void) swipeScreenChangeEnd:(NSInteger)swipDirection;

/* 錄製開始 /

  • (void) movieRecordBegin;

/* 錄製取消 /

  • (void) movieRecordCancel;

/* 錄製結束 /

  • (void) movieRecordingCompletion:(NSURL *) videoUrl;

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 /

  • (void) changeFaceUItem:(NSString) itemString withName:(NSString)name;

2.5.6錄製時播放音樂
/*使用音樂路徑 /

  • (void)setMusic:(NSURL *)musicUrl;

/* 播放音樂 rate(極慢:1.0/3.0 慢:1.0/2.0 正常:1.0 快:2.0 極快:3.0) /

  • (void)playMusic:(float)rate;

/* 暫停音樂 /

  • (void)pauseMusic;

/* 中止播放音樂 /

  • (void)stopMusic;

2.5.7濾鏡
/* 添加濾鏡組 /

  • (void) addFilters:(NSArray *) filters;

/* 設置濾鏡 /

  • (void) setFilterAtIndex:(NSInteger ) index;

/* 移除濾鏡組 /

  • (void) removeFilters;

2.5.8合併及倒序
/* 合併錄製文件 /

  • (void)mergeAndExportVideosAtFileURLs:(NSArray *)fileArray
    progress:(void(^)(NSNumber *progress))progressBlock
                              finish:(void(^)(NSURL *videourl))finish
                                fail:(void(^)(NSError *error))fail
                              cancel:(void(^)())cancel;複製代碼

/* 取消合併 /

  • (void)cancelMerge;

/* 倒序 params: url 視頻源地址
params: outputUrl 輸出路徑 params: timeRange 倒序時間範圍
params: progressBlock 倒序進度回調 params: callbackBlock 結束回調
params: failBlock 失敗回調 /

  • (void)exportReverseVideo:(NSURL *)url
    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;

相關文章
相關標籤/搜索