我正在构建能够录制视频并在录制的视频上添加动画叠加的iOS应用程序AVFoundation
和CAAnimation
。所有子功能都工作正常,但在播放动画时视频背景的结尾是黑色的。它不是渲染我选择的背景视频。我用AVAssetWriter
录制视频,它在相机胶卷上播放得很好。但是,如果我使用此录制的视频添加叠加层,则视频背景的结尾是黑色的。有趣的是,如果我通过本机iOS相机应用程序录制视频并使用它来添加叠加层,它就可以完美运行。我已经检查了这个问题,但对我不起作用。黑色视频CAAnimation和AVFoundation AVAssetExportSession
任何帮助将不胜感激。谢谢
更正资产的首选项转换,因为对于某些视频文件,它具有空的tx和ty参数(默认情况下它们是0.0):
...
if let clipVideoTrack = asset.tracks(withMediaType: .video).first {
var preferredTransform = clipVideoTrack.preferredTransform
var videoSize = clipVideoTrack.naturalSize.applying(preferredTransform)
preferredTransform.tx = (videoSize.width < 0) ? fabs(videoSize.width) : 0.0
preferredTransform.ty = (videoSize.height < 0) ? fabs(videoSize.height) : 0.0
videoSize = CGSize(width: fabs(videoSize.width), height: fabs(videoSize.height))
...
let transformer = AVMutableVideoCompositionLayerInstruction.init(assetTrack: clipVideoTrack)
transformer.setTransform(videoTransform, at: kCMTimeZero)
...