类似于这个问题,
我也遇到了问题,我的应用程序以相同的方式崩溃。我认为答案与其他问题相同:内存问题;但是在AVAssetExportSession调用期间我出现了崩溃。
guard let exporter = AVAssetExportSession(asset: mixComposition, presetName: AVAssetExportPresetHighestQuality) else { return }
exporter.outputFileType = AVFileTypeMPEG4
exporter.outputURL = url
exporter.videoComposition = mainComposition
print("done")
exporter.exportAsynchronously(completionHandler: {
DispatchQueue.main.async(execute: {
self.exportDidFinish(exporter)
print("removing AI")
self.removeAI()
print("removed AI")
completion()
})
})
func exportDidFinish(_ exporter:AVAssetExportSession) {
if(exporter.status == AVAssetExportSessionStatus.completed) {
print("cool")
}
else if(exporter.status == AVAssetExportSessionStatus.failed) {
print(exporter.error as Any)
}
}
它会打印“done”,但不会打印“removing AI”。它也不会打印“cool”或“(error)”; 它会崩溃,并在XCode的顶部显示“与iPhone的连接丢失...”,就像其他问题所述一样。
我认为这可能是一个内存问题,但在异步导出期间(根据我对其工作原理的了解),没有发生任何事件。我只是等待调用完成处理程序。但是,在中间什么都不会被调用,我不确定该如何处理。有什么想法吗?