사용자의 사진 라이브러리에서 두 개의 비디오 자산을 병합하는 작은 장난감 iOS 앱을 만들려고합니다. AVMutableComposition
인스턴스를 사용하여 동영상을 병합 한 지점에 도달 했으므로 이제 컴포지션을 내 보내야합니다. 나는 다음과 같은 코드로 그렇게하고 있습니다 :PHAsset에서 AVAssetExportSession의 출력을 가져 오려고 시도 할 때 빈 결과 얻기
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