【发布时间】:2016-11-11 14:44:18
【问题描述】:
我正在尝试构建一个小型玩具 iOS 应用程序,用于合并用户照片库中的两个视频资源。我已经到了使用AVMutableComposition 实例合并视频的地步,现在我需要导出合成。我正在使用以下代码:
func saveEditedComposition(_ composition: AVMutableComposition) {
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let savePath = (documentDirectory as NSString).strings(byAppendingPaths: ["mergeVideo.mov"])[0]
let url = NSURL(fileURLWithPath: savePath)
// Set up exporter
guard let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality) else { return }
exporter.outputURL = url as URL
exporter.outputFileType = AVFileTypeQuickTimeMovie
exporter.shouldOptimizeForNetworkUse = true
// Perform the export
exporter.exportAsynchronously(completionHandler: { () -> Void in
// Upon completion of the export,
DispatchQueue.global().async {
if exporter.status == .completed {
let fetchResult = PHAsset.fetchAssets(withALAssetURLs: [exporter.outputURL!], options: nil))
let phAsset = fetchResult.firstObject! // Crashes here, returning nil.
}
}
})
}
问题是,当完成处理程序运行时,我可以看到我的导出器已经完成且没有错误(if exporter.status == .completed {),但是当我尝试访问exporter.outputURL 的资产时,它返回一个空的@987654325 @。谁能看到我在这里做错了什么?
【问题讨论】:
标签: ios swift swift3 avfoundation phasset