如何解决通过AVAssetExportSession导出时,为什么CGImage会更改颜色?
我正在通过AVMutableComposition将CGImage覆盖在视频上,并且效果很好(请参见下面的屏幕快照A)。问题是当我使用AVAssetExportSession导出视频时,我得到了一些奇怪的轮廓和颜色(请参见屏幕快照B)。如何导出保留CGImage正确颜色且没有奇怪的黄色/黑色轮廓的视频?
这是我要导出的代码:
func saveVideo(composition: AVMutableComposition,vidComp: AVMutableVideoComposition,audioMix: AVMutableAudioMix) {
let preset = "AVAssetExportPreset1920x1080"
guard let exportSession = AVAssetExportSession(asset: composition,presetName: preset) else {
return
}
let videoSize: CGSize = vidComp.renderSize
let parentLayer = CALayer()
parentLayer.isGeometryFlipped = true
parentLayer.frame = CGRect(x: 0,y: 0,width: videoSize.width,height: videoSize.height)
let videoLayer = CALayer()
videoLayer.frame = CGRect(x: 0,height: videoSize.height)
parentLayer.addSublayer(videoLayer)
let url = URL(fileURLWithPath: Bundle.main.path(forResource: "Fire1",ofType: "mov")!)
let asset = AVURLAsset(url: url)
let generator = AVAssetimageGenerator(asset: asset)
generator.appliesPreferredTrackTransform = true
generator.requestedTimetoleranceBefore = .zero
generator.requestedTimetoleranceAfter = .zero
do {
let cgImg = try generator.copyCGImage(at: CMTime(seconds: 0.5,preferredTimescale: 1000),actualTime: nil)
let imgLayer = CALayer()
imgLayer.contentsGravity = .resizeAspect
imgLayer.contents = cgImg
imgLayer.frame = parentLayer.bounds
parentLayer.addSublayer(imgLayer)
} catch {
print("No thumbnail")
}
vidComp.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer,in: parentLayer)
exportSession.videoComposition = vidComp
exportSession.audioMix = audioMix
exportSession.outputURL = self.uniqueURLForSave()
exportSession.outputFileType = AVFileType.mov
exportSession.shouldOptimizeforNetworkUse = true
exportSession.exportAsynchronously {
switch exportSession.status {
case .completed:
UISaveVideoAtPathToSavedPhotosAlbum(exportSession.outputURL!.relativePath,self,nil,nil)
default:
print("Error")
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。