2
取AVAssetExportSession的输出,我试图建立一个小玩具iOS应用,从用户的照片库合并两个视频资产时。我已经得到的地步,我已经合并使用AVMutableComposition
实例的影片,现在我需要出口组成。我用下面的代码这样做:获得空的结果试图从PHAsset
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.
}
}
})
}
的问题是,在运行completionHandler时,我能看到我的出口商已没有错误(if exporter.status == .completed {
)完成了,但是当我尝试访问该资产在exporter.outputURL
,它返回一个空的PHFetchResult<PHAsset>
。任何人都可以看到我在这里做错了吗?
谢谢!您的'PHPhotoLibrary'代码完成了这项工作。 – azrosen92