我正在从我设置的可变组合生成动画AVMutableVideoComposition
gif AVVideoCompositionCoreAnimationTool
。问题在于核心动画工具,当它设置生成的图像在最右边有 1 列绿色像素。如果我不添加核心动画工具,它会完美运行。
生成的 gif 示例如下:
这就是我创建AVVideoCompositionCoreAnimationTool
带有图层的对象的方式。
let parentLayer = CALayer()
let videoLayer = CALayer()
let assetsLayer = self.assetsLayer!
assetsLayer.isGeometryFlipped = true
parentLayer.frame = CGRect(origin: CGPoint.zero, size: videoComposition.renderSize)
videoLayer.frame = CGRect(origin: CGPoint.zero, size: videoComposition.renderSize)
assetsLayer.frame = CGRect(origin: CGPoint.zero, size: videoComposition.renderSize)
parentLayer.addSublayer(videoLayer)
parentLayer.addSublayer(assetsLayer)
videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, in: parentLayer)
我发现如果我让视频层宽 2 个像素,使绿色像素不在屏幕上,它就会起作用。但这是肮脏的黑客。
videoLayer.frame = CGRect(origin: CGPoint.zero, size: videoComposition.renderSize).insetBy(dx: -2, dy: -2)
有谁知道为什么我有绿色专栏以及我做错了什么?