AVAssetImageGenerator使用动画工具和视频合成生成带有绿色像素的图像

时间:2017-03-15 23:30:26

标签: ios swift avassetimagegenerator

我正在使用echo trim('date: march 27, 2017" to "march 27, 2017" "start: 12:30pm" to "12:30pm','date:'); //march 27, 2017" to "march 27, 2017" "start: 12:30pm" to "12:30pm 设置AVMutableVideoComposition的可变组合生成GIF动画。问题在于核心动画工具,当它设置生成的图像时,右边有1列绿色像素。如果我不添加核心动画工具,它可以很好地工作。

生成的gif示例如下:

enter image description here

这就是我用图层创建AVVideoCompositionCoreAnimationTool对象的方式。

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)

有谁知道为什么我有绿柱,我做错了什么?

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。我指定渲染大小为AVMutableVideoComposition,奇数值为宽度(375px)。看起来我只能使用偶数,因为渲染的视频宽度为376px,渲染器可能让我知道它增加了1个额外的列。奇怪的是,在wwdc视频和编程指南中都没有提及。