美文网首页
锐动IOS带UI视频编辑SDK

锐动IOS带UI视频编辑SDK

作者: 藤姚 | 来源:发表于2019-11-14 17:44 被阅读0次

    编写目的

    预期读者:

    有视频编辑开发经验或者无经验的,打算或者正在使用“锐动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 IOS10适配

    在Info.plist 中 添 加 NSCameraUsageDescription 、

    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

          本文链接:https://www.haomeiwen.com/subject/pezrictx.html