微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将CIFilter应用于视频,然后添加第二首曲目

如何解决将CIFilter应用于视频,然后添加第二首曲目

所以我有两个视频资产-一个用于背景,一个用于前景。我要实现的是将CIFilter(Chromakey)应用于前景视频,然后添加背景视频,以便两者重叠。我可以重叠或应用滤镜,但无法将其放在一起。这是我的视频重叠代码

let bgAsset = AVURLAsset(url: URL(fileURLWithPath: Bundle.main.path(forResource: "bg",ofType: "mp4")!))
let fgAsset = AVURLAsset(url: URL(fileURLWithPath: Bundle.main.path(forResource: "fg",ofType: "mp4")!))
    
let mixComposition = AVMutableComposition()
    
let bgTrack = mixComposition.addMutableTrack(withMediaType: .video,preferredTrackID: kCMPersistentTrackID_Invalid)!
let fgTrack = mixComposition.addMutableTrack(withMediaType: .video,preferredTrackID: kCMPersistentTrackID_Invalid)!

try! bgTrack.insertTimeRange(CMTimeRange(start: .zero,duration: bgAsset.duration),of: bgAsset.tracks(withMediaType: .video).first!,at: .zero)
try! fgTrack.insertTimeRange(CMTimeRange(start: .zero,of: fgAsset.tracks(withMediaType: .video).first!,at: .zero)
    
let mainInstruction = AVMutableVideoCompositionInstruction()
mainInstruction.timeRange = CMTimeRange(start: .zero,duration: bgAsset.duration)
    
let firstLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: bgTrack)
let secondLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: fgTrack)
    
mainInstruction.layerInstructions = [secondLayerInstruction,firstLayerInstruction]
    
let videoComposition = AVMutableVideoComposition()
videoComposition.instructions = [mainInstruction]
videoComposition.frameDuration = CMTime(value: 1,timescale: 30)
videoComposition.renderSize = CGSize(width: 640,height: 480)
    
let url = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask)[0].appendingPathComponent("overlapVideo.mov")
    
let exporter = AVAssetExportSession(asset: mixComposition,presetName: AVAssetExportPresetHighestQuality)!
exporter.outputURL = url
exporter.videoComposition = videoComposition
exporter.outputFileType = .mov
exporter.exportAsynchronously {
    print("finished")
}

感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。