1.创建时间线
2.添加与需求相匹配的视频轨道。
(例如两个视频/图片的画中画效果,时间线需要添加两个视频轨道。)
[timeline appendVideoTrack];
[timeline appendVideoTrack];
3.相关视频轨道分别添加素材。(这里以两个素材为例进行展示)
NvsVideoTrack *firstTrack = [timeline getVideoTrackByIndex:0];
NvsVideoClip *firstClip = [firstTrack appendClip:firstFilePath];
firstClip.imageMotionAnimationEnabled = NO; //禁止图片运动,可根据需求决定是否添加
NvsVideoTrack *secondTrack = [timeline getVideoTrackByIndex:1];
NvsVideoClip *secondClip = [secondTrack appendClip:secondFilePath];
secondClip.imageMotionAnimationEnabled = NO; //禁止图片运动,可根据需求决定是否添加
4.clip 片段添加"Transform 2D” 特效。
此特效针对需要移动的clip 来添加,这里以移动第二个clip 为例。如果第一个素材需要移动的话,那么第一个clip也需要添加"Transform 2D” 特效
NvsVideoFx *fx = [secondClip appendBuiltinFx:@"Transform 2D"];
5.针对具体需求对"Transform 2D” 特效对象设置相应属性值(这里以手势拖动第二个clip 为例)
*需要注意的是,偏移值需转换为时间线偏移
CGPoint p1 = [self.liveWindow mapViewToCanonical:currentPoint]; //视图坐标转换成时间线坐标
CGPoint p2 = [self.liveWindow mapViewToCanonical:previousPoint];
float transX = [fx getFloatVal:@"Trans X”];
float transY = [fx getFloatVal:@"Trans Y"];
[fx setFloatVal:@"Trans X" val:transX+(p1.x-p2.x)];
[fx setFloatVal:@"Trans Y" val:transY+(p1.y-p2.y)];
属性 | 含义 |
Trans X | X 轴偏移 |
Trans Y | Y 轴偏移 |
Scale X | X 轴缩放 |
Scale Y | Y 轴缩放 |
Rotation | 旋转 |
上面属性表中其他属性均可根据需求按照偏移示例代码进行赋值和应用。