gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:36:20 25 4
gpt4 key购买 nike

我正在从可变组合中生成动画 gif,其中我使用 AVVideoCompositionCoreAnimationTool 设置 AVMutableVideoComposition。问题出在核心动画工具上,当它设置时,生成的图像在最右侧有 1 列绿色像素。如果我不添加核心动画工具,它就可以完美工作。

生成的 gif 示例如下:

enter image description here

这就是我创建带有图层的 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)

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

最佳答案

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

关于ios - AVAssetImageGenerator 使用动画工具和视频合成生成带有绿色像素的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42822670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com