更新时间 : 2021-07-12 13:50:01
特效类包含转场,文字动画,滤镜,视频特效等,可以通过type属性判断。
需要通过添加入轨道或者主轨道组来初始化,不独立存在。
特效有不同的时间应用方式:
typedef enum : NSUInteger {
SXEffectTimeFollowStart, // 效果时间跟随轨道start time
SXEffectTimeFollowDisplayTime, // 效果时间跟随轨道display time
SXEffectTimeFollowEnd, // 效果时间反向跟随轨道out time(display + duration)
SXEffectTimeFollowWholeProcess // 效果时间与轨道显示时间保持一致
}SXEffectTimeFollowType;
/**
* 获取效果跟随轨道时间方式
* @note 例如跟随轨道开始时间与轨道一同开始、跟随轨道的结束时间与轨道一同结束等,默认跟随方式为kFollowDisplayTime
*/
@property (nonatomic, assign) SXEffectTimeFollowType followType;
/**
* 不同时间跟随方式followOffsetTime的参照时间是不一样的,跟随方式祥见SXEffectTimeFollowType类型说明
* kFollowStart:效果开始时间为相对于轨道开始时间的局部时间
* kFollowDisplayTime: 效果开始时间为相对于轨道开始显示时间的局部时间
* kFollowEnd: 效果开始时间为相对于轨道结束时间的局部时间,并且时间方向为反向
* kFollowWholeProcess:无效,效果于轨道显示时间一致,同时开始同时结束
*/
@property (nonatomic, assign) double followOffsetTime;
SXFilterEffect 滤镜
通过滤镜资源的路径来初始化。
可以通过轨道获得上面应用的所有滤镜,或者和ID来获取相对应的滤镜。
可以替换资源来切换效果。
可以设置透明度修改滤镜的程度。
可以添加在多媒体轨道上。
//example:
SXMediaTrack *track = (SXMediaTrack *)_model.track;
if (!_currentFilter || !model.folderPath) {
//移除该轨道上所有滤镜
for (SXFilterEffect *filter in [track getFilters]) {
[track removeFilter:filter.getEffectId];
}
_currentFilter = nil;
}
SXResource *resource = [[SXResource alloc] initWithType:SXResourceTypeFilter path:model.folderPath];
if (_currentFilter) {
//滤镜设置新的资源路径
[_currentFilter setResource:resource];
}else {
//轨道中添加一个滤镜
_currentFilter = [track addFilter:resource index:0];
//滤镜跟随方式为时间与轨道一致
[_currentFilter setEffectFollowType:SXEffectTimeFollowTypeFollowWholeProcess];
}
SXAnimationEffect 动画特效
通过动画资源的路径来初始化。
可以通过轨道获得上面应用的所有动画,或者和ID来获取相对应的动画。
可以替换资源来切换效果。
可以通过 speed 或 durationOfOneCycle 来设置动画的速度。
注意动画时间不要叠加。
可以添加在多媒体轨道上。
//example:
SXMediaTrack *track = (SXMediaTrack *)_model.track;
if (!_currentVideoAnimation || !model.folderPath) {
//移除该轨道上所有动画
for (SXAnimationEffect *animation in [track getAnimations]) {
[track removeAnimation:animation.getEffectId];
}
_currentVideoAnimation = nil;
}
if (animationPath) {
SXResource *resource = [[SXResource alloc] initWithType:SXResourceTypeAnimation path:animationPath];
if (_currentVideoAnimation) {
//动画设置新的资源路径
[_currentVideoAnimation setResource:resource];
}else {
//轨道中添加一个动画
_currentVideoAnimation = [track addAnimation:resource index:0];
//动画为出场动画
[_currentVideoAnimation setFollowType:SXEffectTimeFollowTypeFollowStart];
}
//设置动画时长
_currentVideoAnimation.duration = _sliderView.value;
//设置动画一次循环的时间
_currentVideoAnimation.durationOfOneCycle = _sliderView.value;
}
SXVideoEffect 视频特效
通过视频特效资源的路径来初始化。
可以通过轨道获得上面应用的所有视频特效,或者和ID来获取相对应的视频特效。
可以替换资源来切换效果。
注意特效时间不要叠加。
可以添加在多媒体轨道和主轨道组上。
SXTextAnimationEffect 文字动画特效
通过文字动画的路径来初始化。
可以通过文字轨道获得上面应用的所有动画,或者和ID来获取相对应的动画。
可以替换资源来切换效果。
可以通过 speed 或 durationOfOneCycle 来设置动画的速度。
注意动画时间不要叠加。
可以添加在文字轨道上。
SXTrackAnimationEffect 轨道动画
通过轨道动画的路径来初始化。
可以通过贴纸轨道获得上面应用的所有动画,或者和ID来获取相对应的动画。
可以替换资源来切换效果。
可以通过 speed 或 durationOfOneCycle 来设置动画的速度。
注意动画时间不要叠加。
可以添加在贴纸轨道上。
内置特效
typedef enum : NSUInteger {
SXGenericEffectTypeColorAdjustment = 0,
SXGenericEffectTypeChromaKey,
SXGenericEffectTypeGaussianBlur,
SXGenericEffectTypeFaceBeauty,
SXGenericEffectTypeMultipleColorKey,
SXGenericEffectTypeTrackMatte
}SXGenericEffectType;
以SXGenericEffectTypeColorAdjustment举例:
直接在轨道上添加颜色调节,后续可以调节相对应的参数
可以通过轨道获得上面应用的颜色调节,或者和ID来获取相对应的颜色调节。
可以通过 setAttribute 的相关方法调节参数, getAttributeValue 方法获取属性,相应属性的key和值类型参考文档内置特效。
可以添加在多媒体轨道上。
//example:
SXMediaTrack *track = (SXMediaTrack *)_model.track;
SXGenericEffect *colorAdujst = [track getGenericEffects].firstObject;
if (!colorAdujst) {
colorAdujst = [track addGenericEffect:SXGenericEffectTypeColorAdjustment index:0];
[colorAdujst setFollowType:SXEffectTimeFollowWholeProcess];
float value = [[colorAdujst getAttributeValue:SXColorSettingsBrightness] floatValue];
}
特效类包含转场,文字动画,滤镜,视频特效等,可以通过type属性判断。
需要通过添加入轨道或者主轨道组来初始化,不独立存在。
特效有不同的时间应用方式:
typedef enum : NSUInteger {
SXEffectTimeFollowStart, // 效果时间跟随轨道start time
SXEffectTimeFollowDisplayTime, // 效果时间跟随轨道display time
SXEffectTimeFollowEnd, // 效果时间反向跟随轨道out time(display + duration)
SXEffectTimeFollowWholeProcess // 效果时间与轨道显示时间保持一致
}SXEffectTimeFollowType;
/**
* 获取效果跟随轨道时间方式
* @note 例如跟随轨道开始时间与轨道一同开始、跟随轨道的结束时间与轨道一同结束等,默认跟随方式为kFollowDisplayTime
*/
@property (nonatomic, assign) SXEffectTimeFollowType followType;
/**
* 不同时间跟随方式followOffsetTime的参照时间是不一样的,跟随方式祥见SXEffectTimeFollowType类型说明
* kFollowStart:效果开始时间为相对于轨道开始时间的局部时间
* kFollowDisplayTime: 效果开始时间为相对于轨道开始显示时间的局部时间
* kFollowEnd: 效果开始时间为相对于轨道结束时间的局部时间,并且时间方向为反向
* kFollowWholeProcess:无效,效果于轨道显示时间一致,同时开始同时结束
*/
@property (nonatomic, assign) double followOffsetTime;
SXFilterEffect 滤镜
通过滤镜资源的路径来初始化。
可以通过轨道获得上面应用的所有滤镜,或者和ID来获取相对应的滤镜。
可以替换资源来切换效果。
可以设置透明度修改滤镜的程度。
可以添加在多媒体轨道上。
//example:
SXMediaTrack *track = (SXMediaTrack *)_model.track;
if (!_currentFilter || !model.folderPath) {
//移除该轨道上所有滤镜
for (SXFilterEffect *filter in [track getFilters]) {
[track removeFilter:filter.getEffectId];
}
_currentFilter = nil;
}
SXResource *resource = [[SXResource alloc] initWithType:SXResourceTypeFilter path:model.folderPath];
if (_currentFilter) {
//滤镜设置新的资源路径
[_currentFilter setResource:resource];
}else {
//轨道中添加一个滤镜
_currentFilter = [track addFilter:resource index:0];
//滤镜跟随方式为时间与轨道一致
[_currentFilter setEffectFollowType:SXEffectTimeFollowTypeFollowWholeProcess];
}
SXAnimationEffect 动画特效
通过动画资源的路径来初始化。
可以通过轨道获得上面应用的所有动画,或者和ID来获取相对应的动画。
可以替换资源来切换效果。
可以通过 speed 或 durationOfOneCycle 来设置动画的速度。
注意动画时间不要叠加。
可以添加在多媒体轨道上。
//example:
SXMediaTrack *track = (SXMediaTrack *)_model.track;
if (!_currentVideoAnimation || !model.folderPath) {
//移除该轨道上所有动画
for (SXAnimationEffect *animation in [track getAnimations]) {
[track removeAnimation:animation.getEffectId];
}
_currentVideoAnimation = nil;
}
if (animationPath) {
SXResource *resource = [[SXResource alloc] initWithType:SXResourceTypeAnimation path:animationPath];
if (_currentVideoAnimation) {
//动画设置新的资源路径
[_currentVideoAnimation setResource:resource];
}else {
//轨道中添加一个动画
_currentVideoAnimation = [track addAnimation:resource index:0];
//动画为出场动画
[_currentVideoAnimation setFollowType:SXEffectTimeFollowTypeFollowStart];
}
//设置动画时长
_currentVideoAnimation.duration = _sliderView.value;
//设置动画一次循环的时间
_currentVideoAnimation.durationOfOneCycle = _sliderView.value;
}
SXVideoEffect 视频特效
通过视频特效资源的路径来初始化。
可以通过轨道获得上面应用的所有视频特效,或者和ID来获取相对应的视频特效。
可以替换资源来切换效果。
注意特效时间不要叠加。
可以添加在多媒体轨道和主轨道组上。
SXTextAnimationEffect 文字动画特效
通过文字动画的路径来初始化。
可以通过文字轨道获得上面应用的所有动画,或者和ID来获取相对应的动画。
可以替换资源来切换效果。
可以通过 speed 或 durationOfOneCycle 来设置动画的速度。
注意动画时间不要叠加。
可以添加在文字轨道上。
SXTrackAnimationEffect 轨道动画
通过轨道动画的路径来初始化。
可以通过贴纸轨道获得上面应用的所有动画,或者和ID来获取相对应的动画。
可以替换资源来切换效果。
可以通过 speed 或 durationOfOneCycle 来设置动画的速度。
注意动画时间不要叠加。
可以添加在贴纸轨道上。
内置特效
typedef enum : NSUInteger {
SXGenericEffectTypeColorAdjustment = 0,
SXGenericEffectTypeChromaKey,
SXGenericEffectTypeGaussianBlur,
SXGenericEffectTypeFaceBeauty,
SXGenericEffectTypeMultipleColorKey,
SXGenericEffectTypeTrackMatte
}SXGenericEffectType;
以SXGenericEffectTypeColorAdjustment举例:
直接在轨道上添加颜色调节,后续可以调节相对应的参数
可以通过轨道获得上面应用的颜色调节,或者和ID来获取相对应的颜色调节。
可以通过 setAttribute 的相关方法调节参数, getAttributeValue 方法获取属性,相应属性的key和值类型参考文档内置特效。
可以添加在多媒体轨道上。
//example:
SXMediaTrack *track = (SXMediaTrack *)_model.track;
SXGenericEffect *colorAdujst = [track getGenericEffects].firstObject;
if (!colorAdujst) {
colorAdujst = [track addGenericEffect:SXGenericEffectTypeColorAdjustment index:0];
[colorAdujst setFollowType:SXEffectTimeFollowWholeProcess];
float value = [[colorAdujst getAttributeValue:SXColorSettingsBrightness] floatValue];
}