我有许多将在幻灯片中显示的图像,每个图像使用 AVPlayer 显示 1 秒或更长时间。我之前(大约在 iOS 6 时代)使用了以下我想改进的技术。
将每个图像缩小到更小的尺寸以进行播放,
制作了一个CALayer,根据幻灯片中的时间为每个图像出现和消失创建CAAnimation,并将这些动画添加到CALayer,
使用具有单个黑框的虚拟视频创建了 AVMutableComposition,将其时间范围扩展到幻灯片的持续时间,
创建了一个 AVSynchronizedLayer 并将这个 CALayer 添加到它以与播放同步。对于渲染,我创建了一个 AVVideoComposition 对象并添加了使用 AVVideoComposition 的 coreAnimationTool 属性来将幻灯片渲染到视频文件中。
现在在 iOS 13 或更高版本的时代,当我们在 AVVideoComposition 中有 customVideoCompositor 时,我们可以使用 Core Image 对其进行改进吗?具体来说,给定文件系统中存储的 100 个图像,其中每个图像都可以是全分辨率 12 MP 图像,那么在启动时从 url 创建 100 个 CIImage,对每个图像应用下采样变换,并在运行时在自定义合成器中渲染它们是否正确?我相信每次我们加载渲染存储在磁盘上的新 CIImage 时,性能都会受到影响。可能需要在加载时间之前预加载图像,如果用户将播放器搜索到不同的时间,则取消加载。什么是正确/最好的方法来实现这一点而不会由于内存压力或图像加载缓慢而崩溃?我相信即使是 Apple 在 AVPlayer 中播放 AVMutableComposition 时也可能会解决其中的一些问题。