如何解决如何合并正面和背面视频,同时又获得正确的方向
贝洛是我一直试图使之工作的合并功能。无论是我使用条件语句还是开始时使用PreferredTransform,这两个问题都不会以用户录制它们的方式结束。
我该如何解决?
func merge(arrayVideos:[AVAsset],completion:@escaping (URL?,Error?) -> ()) {
let mainComposition = AVMutableComposition()
let compositionVideoTrack = mainComposition.addMutableTrack(withMediaType: .video,preferredTrackID: kCMPersistentTrackID_Invalid)
// compositionVideoTrack?.preferredTransform = CGAffineTransform(a: 6.123233995736766e-17,b: 1.0,c: 1.0,d: 6.123233995736766e-17,tx: 0.0,ty: 0.0) //new aug 25 2020 fixes the front face camera //used to be: CGAffineTransform(rotationAngle: .pi / 2)
let soundtrackTrack = mainComposition.addMutableTrack(withMediaType: .audio,preferredTrackID: kCMPersistentTrackID_Invalid)
var insertTime = CMTime.zero
var ind = 0
for videoAsset in arrayVideos {
if ind == 0 {
compositionVideoTrack?.preferredTransform = CGAffineTransform(a: 6.123233995736766e-17,ty: 0.0)
} else {
//compositionVideoTrack?.preferredTransform = CGAffineTransform(a: 6.123233995736766e-17,ty: 0.0)
}
ind+=1
try! compositionVideoTrack?.insertTimeRange(CMTimeRangeMake(start: .zero,duration: videoAsset.duration),of: videoAsset.tracks(withMediaType: .video)[0],at: insertTime)
try! soundtrackTrack?.insertTimeRange(CMTimeRangeMake(start: .zero,of: videoAsset.tracks(withMediaType: .audio)[0],at: insertTime)
insertTime = CMTimeAdd(insertTime,videoAsset.duration)
}
let outputFileURL = URL(fileURLWithPath: NSTemporaryDirectory() + "merge.mp4")
let fileManager = FileManager()
try? fileManager.removeItem(at: outputFileURL)
let exporter = AVAssetExportSession(asset: mainComposition,presetName: AVAssetExportPresetHighestQuality)
exporter?.outputURL = outputFileURL
exporter?.outputFileType = AVFileType.mp4
exporter?.shouldOptimizeForNetworkUse = true
exporter?.exportAsynchronously {
if let url = exporter?.outputURL{
completion(url,nil)
}
if let error = exporter?.error {
completion(nil,error)
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。