KSYMediaEditor Class Reference

Inherits from NSObject
Declared in KSYMediaEditor.h

  delegate

设置该delegate,以便接收内部回调,addVideo之前设置有效

@property (nonatomic, weak) id<KSYMEComposeDelegate> delegate

Declared In

KSYMediaEditor.h

  previewDelegate

用以接收预览播放器状态及进度,addVideo之前设置有效

@property (nonatomic, weak) id<KSYMEPreviewDelegate> previewDelegate

Declared In

KSYMediaEditor.h

– initWithURL:

创建KSYMediaEditor对象 (不支持m3u8格式)

- (instancetype)initWithURL:(NSURL *)url

Parameters

url

待编辑的视频url

Discussion

多视频需要使用KSYMEConcator进行拼接后再进行编辑

Declared In

KSYMediaEditor.h

– resetWithURL:

更新URL

- (void)resetWithURL:(NSURL *)url

Parameters

url

待编辑的视频url

Declared In

KSYMediaEditor.h

  previewView

预览视图

@property (nonatomic, strong) KSYGPUView *previewView

Declared In

KSYMediaEditor.h

– initWithURL:prepareComplete:

创建KSYMediaEditor对象(支持m3u8格式)

- (instancetype)initWithURL:(NSURL *)url prepareComplete:(KSYMEPrepareBlock)complete

Parameters

url

待编辑的视频url

complete

是否准备完成

Return Value

当前对象

Declared In

KSYMediaEditor.h

– startPreview:loop:

播放编辑过的视频(尚未合成)

- (void)startPreview:(UIView *)view loop:(BOOL)isLoop

Parameters

view

承载播放视图的控件

isLoop

是否循环播放,以添加的视频文件为参考

Declared In

KSYMediaEditor.h

– startPreview:range:isLoop:

@abstract 播放指定范围的视频

- (void)startPreview:(UIView *)view range:(CMTimeRange)range isLoop:(BOOL)isLoop

Parameters

view

承载播放视图的控件

range

要播放的范围,如果输入范围超出视频范围,会自动纠正为视频范围 比如range.start < video.start 实际为video.start range.duration > video.duration实际为video.duration range 会自动纠正为[kCMTimeZero, video.duration]范围内

isLoop

选中的范围是否循环播放

@discussion 目前仅支持对单个视频进行range播放,调用该接口进行预览播放后,startProcessVideo会自动裁剪range范围内的视频

Declared In

KSYMediaEditor.h

– pausePreview

暂停正在播放的视频

- (void)pausePreview

Declared In

KSYMediaEditor.h

– resumePreview

恢复播放

- (void)resumePreview

Declared In

KSYMediaEditor.h

– stopPreview

关闭预览播放

- (void)stopPreview

Declared In

KSYMediaEditor.h

– setPreviewProgressCallbackInterval:

@abstract 设置视频预览回调间隔

- (void)setPreviewProgressCallbackInterval:(CMTime)timeInterval

Parameters

timeInterval

回调间隔时间 @discussion timeInterval 默认为CMTimeMake(0.03 * 1000, 1000) 时间间隔越小,CPU占用率会越高

Declared In

KSYMediaEditor.h

– addBgm:loop:

@abstract 添加一首背景音,添加的音乐播放状态自动跟随预览视频的状态(若果预览视频正在播放,则bgm自动播放,否则在startPreview之后播放)

- (void)addBgm:(NSString *)path loop:(BOOL)loop

Parameters

path

背景音乐, 如果path 为空则停止播放背景音

loop

YES, 音乐循环播放: 1.如果音乐的长度大于视频文件长度,则取视频文件长度,不循环 2.如果音乐长度小于视频文件长度,循环播放 NO, 总长度取视频长度,不足部分留空 @discussion 1.新添加的会覆盖之前已添加的; 2.正在合成中,添加无效 3.startPreview前调用有效

Declared In

KSYMediaEditor.h

– adjustRawVolume:

音量调节, 范围 [0~1.0]

- (void)adjustRawVolume:(float)raw

Parameters

raw

视频音量

Declared In

KSYMediaEditor.h

– adjustBGMVolume:

音量调节, 范围 [0~1.0]

- (void)adjustBGMVolume:(float)bgm

Parameters

bgm

背景音量

Declared In

KSYMediaEditor.h

– getVolume:bgm:

获取音量

- (void)getVolume:(float *)raw bgm:(float *)bgm

Parameters

raw

视频音量

bgm

背景音音量

Declared In

KSYMediaEditor.h

– getPreviewCurrentTime

获取当前的预览时间

- (CMTime)getPreviewCurrentTime

Return Value

时间 (秒)

Declared In

KSYMediaEditor.h

  filter

滤镜

@property (nonatomic) GPUImageOutput<GPUImageInput> *filter

Declared In

KSYMediaEditor.h

– setWaterMarkImage:waterMarkRect:andAplpha:

设置水印相关参数

- (void)setWaterMarkImage:(UIImage *)image waterMarkRect:(CGRect)logoRect andAplpha:(CGFloat)alpha

Parameters

image

水印图像(nil表示去除水印)

logoRect

rect位置、大小 origin : 坐标原点[0-1] size : 水印占画面比例[0-1] 只需设置宽或高的比例,另一个值传0即可

alpha

透明度

Declared In

KSYMediaEditor.h

– videoRange

获取video播放range

- (CMTimeRange)videoRange

Return Value

video play range

Declared In

KSYMediaEditor.h

– bgmRange

获取bgm 播放 range

- (CMTimeRange)bgmRange

Return Value

bgm play range

Declared In

KSYMediaEditor.h

– seekToTime:range:finish:

编辑预览seek功能,startProcessVideo之后不要掉用该接口

- (void)seekToTime:(CMTime)time range:(CMTimeRange)range finish:(dispatch_block_t)finish

Parameters

time

需要seek到的时间点

range

新的播放范围,用户必须保证该参数正确,以正确裁剪

@discussion - 只需要seek,不需要变更裁剪区间,可以设置range为 kCMTimeRangeInvalid - 内部将会自动暂停播放,重新播放,需要调用 resumePreview 方法 - seek 视频时,SDK内部会同步 seekBGM

Declared In

KSYMediaEditor.h

– seekBGMToTime:range:finish:

编辑预览 BGM seek功能,startProcessVideo之后不要掉用该接口

- (void)seekBGMToTime:(CMTime)time range:(CMTimeRange)range finish:(dispatch_block_t)finish

Parameters

time

需要seek到的时间点

range

新的播放范围,用户必须保证该参数正确,以正确裁剪

Discussion

只需要seek,不需要变更裁剪区间,可以设置range为 kCMTimeRangeInvalid

Declared In

KSYMediaEditor.h

– setPlayerRate:

编辑预览倍速播放功能

- (void)setPlayerRate:(float)rate

Declared In

KSYMediaEditor.h

– setVideoRotation:

设置视频预览角度

- (void)setVideoRotation:(KSYMERotation)rotation

Parameters

rotation

视频预览角度

@discussion 设置了旋转角度后,最终视频依然会根据外部设置的分辨率 更多关于KSYMERotation枚举信息见 KSYMEDefine.h

Declared In

KSYMediaEditor.h

– getVideoRotation

获取当前视频预览角度

- (KSYMERotation)getVideoRotation

Return Value

预览角度

Discussion

指预览角度,非视频 rotate信息

Declared In

KSYMediaEditor.h

– setReverbType:

设置混响类型

- (void)setReverbType:(KSYMEReverbType)reverbType

Declared In

KSYMediaEditor.h

– setEffectType:

设置音效类型

- (void)setEffectType:(KSYAudioEffectType)effectType

Declared In

KSYMediaEditor.h

  outputSettings

视频输出格式, 具体可设置参考KSYDefines.h文件

@property (nonatomic, strong) NSDictionary *outputSettings

Declared In

KSYMediaEditor.h

  uiElementView

@abstract 贴纸容器视图

@property (nonatomic, weak) UIView *uiElementView

Discussion

@discussion 所有贴纸、字幕、mv等,都添加在该容器中

Declared In

KSYMediaEditor.h

  timeLineItems

@abstract 特效模型数组

@property (nonatomic, readonly, weak) NSArray<KSYMETimeLineItem*> *timeLineItems

Discussion

@discussion 贴纸、字幕 等对应的时间模型数据,对应于uiElementView上的对象 有增删模型,调用set方法进行update模型,内部控制uiElementView上UI是否渲染 合成时,会根据timeLineItems进行

Declared In

KSYMediaEditor.h

– deleteTimeLineItem:

@abstract 删除指定的 KSYMETimeLineItem

- (void)deleteTimeLineItem:(KSYMETimeLineItem *)item

Parameters

item

KSYMETimeLineItem

Declared In

KSYMediaEditor.h

– deleteTimeLineItems:

@abstract 删除多个指定的 KSYMETimeLineItem

- (void)deleteTimeLineItems:(NSArray<KSYMETimeLineItem*> *)items

Parameters

items

timeline item list

Declared In

KSYMediaEditor.h

– addTimeLineItem:

@abstract 增加 timeline item

- (void)addTimeLineItem:(KSYMETimeLineItem *)item

Parameters

item

timeline item

Declared In

KSYMediaEditor.h

– updateTimeLineItem:

@abstract 更新指定的 timeline item

- (void)updateTimeLineItem:(KSYMETimeLineItem *)item

Parameters

item

timeline item

Declared In

KSYMediaEditor.h

– flushLastFrame

用于暂停下修改旋转角度、切换裁剪比例等情况下刷新当前展示的视频帧

- (void)flushLastFrame

Declared In

KSYMediaEditor.h

– startProcessVideo

@abstract 开始处理视频,异步任务

- (void)startProcessVideo

Discussion

@discussion 视频裁剪、滤镜、裁剪、水印等 目前sdk对视频的一系列处理(滤镜、裁剪、水印 etc)只支持对一条视频的处理, 请使用addVideo来进行这些操作

Declared In

KSYMediaEditor.h

– stopProcessVideo

@abstract 停止处理视频,异步任务

- (void)stopProcessVideo

Discussion

@discussion 视频裁剪、滤镜、裁剪、水印等 目前sdk对视频的一系列处理(滤镜、裁剪、水印 etc)只支持对一条视频的处理, 请使用addVideo来进行这些操作

Declared In

KSYMediaEditor.h

– setTimeEffect:parameters:

添加时间特效

- (void)setTimeEffect:(KSYTEType)type parameters:(NSDictionary *)params

Parameters

type

时间特效类型,目前支持 倒放、反复、变速(慢动作、快动作)

params

特效所需参数

@discussion - 倒放特效 不需要设置参数,作用于整个视频

  • 特效参数说明
    1. 反复效果 duration 不大于1s,大于1s,按1s算
    2. 反复效果所增加的时间,会对片尾进行裁剪,保持视频长度不超过源视频长度
    3. 变速特效 会对非变速区域进行相反处理(即 变速比例为 1.0/ratio),保持视频长度与源视频相匹配
    4. 慢动作特效,如果duration / ratio超过源视频总长度,将不会生效

    @{ @“startTime”:@(1.5), // 必须,特效开始时间为1.5s @“duration”:@(0.5), // 必须,特效持续时间为0.5s (默认为0.5s)

    @"repeatCount":@(2),   // 反复效果 特有,默认为2次
    
    @"ratio":@(0.5)        // 变速特效 特有,默认为0.5(慢速)
    

    }

Declared In

KSYMediaEditor.h

– timeEffectType

获取当前time effect type

- (KSYTEType)timeEffectType

Return Value

teType

Declared In

KSYMediaEditor.h

  seMode

特效滤镜重叠模式,默认为 KSYSEBlendMode_Cover

@property (nonatomic, assign) KSYSEBlendMode seMode

Discussion

@discussion - KSYSEBlendModeCover 覆盖模式,重叠部分的效果为最后添加的 filter 效果 - KSYSEBlendModeOverlap 叠加模式,重叠部分的效果为所有 filter 叠加后的效果

调用 setSeMode: 将会自动暂停视频,并 seek到视频的起始位置(若视频时长有裁剪,将会seek到timeRange的startTime)

Declared In

KSYMediaEditor.h

  effectTypeFlag

变调组合类型

@property (nonatomic, assign) int effectTypeFlag

Discussion

目前提供了8种类型的变调场景, flag和变调组合类型的对应关系如下 - 0 无组合 - 1 reverb - 2 delay - 3 reverb+delay - 4 pitchShift - 5 reverb+pitchShift - 6 delay+pitchShift - 7 reverb+delay+pitchShift

Warning: 在设置effectTypeFlag时,请先将effectType设置成KSYAudioEffectType_COUSTOM模式,否则effectTypeFlag设置无法生效

Declared In

KSYMediaEditor.h

– setReverbParamID:value:

自定义混响参数接口

- (void)setReverbParamID:(AudioUnitParameterID)paramId value:(AudioUnitParameterValue)value

Parameters

paramId

混响参数对应的值

value

混响参数(0~6), 对应关系如下 - 0 kReverb2Param_DryWetMix - 1 kReverb2Param_Gain - 2 kReverb2Param_MinDelayTime - 3 kReverb2Param_MaxDelayTime - 4 kReverb2Param_DecayTimeAt0Hz - 5 kReverb2Param_DecayTimeAtNyquist - 6 kReverb2Param_RandomizeReflections *

Declared In

KSYMediaEditor.h

– setPitchParamID:value:

自定义pitchShift参数接口

- (void)setPitchParamID:(AudioUnitParameterID)paramId value:(AudioUnitParameterValue)value

Parameters

paramId

pitchShift参数对应的值

value

pitchShift参数,对应关系如下 - 0 kNewTimePitchParam_Rate - 1 kNewTimePitchParam_Pitch (SDK中变调主要是调这个参数) - 4 kNewTimePitchParam_Overlap - 6 kNewTimePitchParam_EnablePeakLocking *

Declared In

KSYMediaEditor.h

– setDelayParamID:value:

自定义delay参数接口

- (void)setDelayParamID:(AudioUnitParameterID)paramId value:(AudioUnitParameterValue)value

Parameters

paramId

delay参数对应的值

value

delay参数(0~3),对应关系如下 - 0 kDelayParam_WetDryMix - 1 kDelayParam_DelayTime - 2 kDelayParam_Feedback - 3 kDelayParam_LopassCutoff *

Declared In

KSYMediaEditor.h