Closed gofey closed 5 years ago
自定义视频画面转场。实现 VideoTransition 协议,TrackItem 类中可以设置转场,表示这个 TrackItem 和时间顺序的下一个 TrackItem 之间的转场 自定义音频转场。实现 AudioTransition 协议,设置方式同上。
demo
let item1: TrackItem = ...
let item2: TrackItem = ...
// 为 item1 设置转场
let transitionDuration = CMTime(seconds: 2, preferredTimescale: 600)
item1.videoTransition = PushTransition(duration: transitionDuration)
item1.audioTransition = FadeInOutAudioTransition(duration: transitionDuration)
let timeline = Timeline()
timeline.videoChannel = [item1, item2]
timeline.audioChannel = [item1, item2]
try! Timeline.reloadVideoStartTime(providers: timeline.videoChannel)
let compositionGenerator = CompositionGenerator(timeline: timeline)
compositionGenerator.renderSize = CGSize(width: 1920, height: 1080)
let playerItem = compositionGenerator.buildPlayerItem()
简单来说就是两个画面同时显示在画面,然后分别对两个图像进行效果处理。具体可以参考已经实现的几个转场效果,自己写一个试试。
https://github.com/VideoFlint/Cabbage/blob/master/Cabbage/Sources/Core/Model/VideoTransition.swift
设置转场这部分代码我理解,但我疑惑的是您是在哪里对这两个图像进行的处理,您是怎么从视频的timerange获取到的图像,如何将过渡动画应用到视频上的呢?
具体可以看看源码。
你好,我很想了解您的自定义过渡动画的实现原理,到底是如何实现的,如果我想自己设置过渡动画样式,又如何实现呢?