问题描述
在我的应用中,用户可以拍摄多个正面或背面的视频。我需要将它们全部合并为一个视频。下面是我尝试过的:
问题在于,背面或正面的方向与原图不同(因为它们可能会颠倒或翻转。)...其正面或背面摄像头取决于镜头的旋转角度主要成分。
我该如何解决?
我该怎么做?
func merge(arrayVideos:[AVAsset],completion:@escaping (URL?,Error?) -> ()) {
let mainComposition = AVMutableComposition()
let compositionVideoTrack = mainComposition.addMutableTrack(withMediaType: .video,preferredTrackID: kCMPersistentTrackID_Invalid)
compositionVideoTrack?.preferredTransform = CGAffineTransform(rotationAngle: .pi/4)
let soundtrackTrack = mainComposition.addMutableTrack(withMediaType: .audio,preferredTrackID: kCMPersistentTrackID_Invalid)
var insertTime = CMTime.zero
for videoAsset in arrayVideos {
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 (将#修改为@)