当我将图像叠加到视频时,AVFoundation正在增加视频文件的大小。我已将输出文件类型设置为mp4。有时视频文件的大小没有增加,但有时增加了约40 MB。是否有可能总是减小文件大小?
您应该检查在视频上粘贴标签的方式。它是动画(贴纸运动的图像)还是仅仅是图像。如果仅是单个图像,例如在开始导出会话之前,您可以执行以下操作:
let parentLayer = CALayer()
let videoLayer = CALayer()
let overlayLayer = CALayer()
let stickerLayer = CALayer()
parentLayer.frame = CGRect(origin: .zero, size: renderSize)
videoLayer.frame = parentLayer.frame
stickerLayer.frame = parentLayer.frame
overlayLayer.frame = parentLayer.bounds
//Add the image inside of stickerLayer(in this case its from a screen shot of UIView, you can change to your custom UIImage
stickerLayer.contents = self.stickerView.asImage().cgImage
parentLayer.addSublayer(videoLayer)
parentLayer.addSublayer(stickerLayer)
parentLayer.addSublayer(overlayLayer)
//create composition
let videoComposition = AVMutableVideoComposition()
videoComposition.renderSize = CGSize(width: renderSize.width, height: renderSize.height)
videoComposition.frameDuration = CMTimeMake(value: 1, timescale: 30)
videoComposition.renderScale = 1.0
//finally add layers with animationTool
videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayers: [videoLayer], in: parentLayer)